为什么获胜';这能保存我的更改吗?或者它不是复制

本文关键字:或者 复制 我的 获胜 保存 为什么 | 更新日期: 2023-09-27 18:29:30

所以,我所要做的就是将每个单元格从一个Excel文档复制到另一个Excel文件,目的是防止用户将包含宏的文件上传到我的服务器上。当我用测试表单运行此过程时,它会询问我在哪里保存"Clean"文档,但除了时间戳之外,它似乎没有任何更改。。。

object objMissing = Missing.Value;
Excel.Workbook xlDirtyWorkbook = xlDirtyApp.Workbooks.Open(strDirtyDocPath,
                                            objMissing, objMissing, objMissing,
                                            objMissing, objMissing, objTrue,
                                            objMissing, objMissing, objMissing,
                                            objMissing, objMissing, objMissing,
                                            objMissing, objMissing);
Excel.Worksheet xlDirtyWorksheet = 
      (Excel.Worksheet)xlDirtyWorkbook.Worksheets[1];
Excel.Workbook xlCleanWorkbook = xlCleanApp.Workbooks.Open(strCleanDocPath,
                                            objMissing, objMissing, objMissing,
                                            objMissing, objMissing, objTrue,
                                            objMissing, objMissing, objMissing,
                                            objMissing, objMissing, objMissing,
                                            objMissing, objMissing);
Excel.Worksheet xlCleanWorksheet = 
      (Excel.Worksheet)xlCleanWorkbook.Worksheets[1];
// -- Copy User Modifiable Range --
Excel.Range rnThisDirtyCell = xlDirtyWorksheet.get_Range("A2:L310", objMissing);
Excel.Range rnThisCleanCell = xlCleanWorksheet.get_Range("A2:L310", objMissing);
rnThisDirtyCell.Copy(rnThisCleanCell);
// -- Copy Document Meta-Data --
object dpDirtyProps;
object dpCleanProps;
dpDirtyProps = xlDirtyWorkbook.BuiltinDocumentProperties;
dpCleanProps = xlCleanWorkbook.BuiltinDocumentProperties;
dpCleanProps = dpDirtyProps;

坦率地说,我甚至不确定它是否打开了文件。工作簿标识值为null。我正在为两个工作簿传递一个有效路径。我在Application.Worksheets.Open方法中使用包括文件名在内的完整路径。这不正确吗?

我错过了什么?它没有抛出任何例外。。。

=================================================

对于子孙后代来说,我就是这样解决的:

Excel.Workbook xlDirtyWorkbook = xlApp.Workbooks.Open(strDirtyDocPath,
                                 objMissing, objMissing, objMissing,
                                 objMissing, objMissing, true,
                                 objMissing, objMissing, objMissing,
                                 objMissing, objMissing, objMissing,
                                 objMissing, objMissing);
Excel.Workbook xlCleanWorkbook = xlApp.Workbooks.Open(strCleanTemplatePath,
                                 objMissing, objMissing, objMissing,
                                 objMissing, objMissing, true,
                                 objMissing, objMissing, objMissing,
                                 objMissing, objMissing, objMissing,
                                 objMissing, objMissing);
for (int iIndex = 1; iIndex <= xlDirtyWorkbook.Worksheets.Count; iIndex++ )
{
    rnThisDirtyCell = xlDirtyWorkbook.Worksheets[iIndex].UsedRange;
    rnThisCleanCell = xlCleanWorkbook.Worksheets[iIndex].Range(
        rnThisDirtyCell.Address);
    rnThisDirtyCell.Copy(rnThisCleanCell);
}

为什么获胜';这能保存我的更改吗?或者它不是复制

我的问题是运行了两个excel.exe实例,每个实例加载一个工作簿。在同一个应用程序实例中加载两个工作簿解决了我的问题。