Итак, все, что я пытаюсь сделать, это скопировать каждую ячейку из одного документа Excel в другой с целью предотвращения загрузки пользователем файла, содержащего макросы, на мой сервер. Когда я запускаю это через с тестовой форме она спрашивает меня, куда сохранить «Чистый» документ, но это, кажется, как будто никаких изменений не было сделано к нему, за исключением метки времени ...Почему это не спасет мои изменения? Или это не копирование?
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;
Честно говоря, я m даже не уверен, что он открывает файл. Значение Identity рабочей книги равно 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);
}
Почему бы просто не сохранить его как '.XLSX' (макроэкономическая книга)? –
Ну, есть макросы в форме, которая должна быть там, я просто хочу, чтобы при загрузке не было фальсифицированных макросов. Поэтому я пытаюсь скопировать ячейку по ячейке загруженного документа в копию исходного документа с распределенным шаблоном. Я также пытаюсь сохранить любые изменения форматирования/стиля в ячейках из загруженного документа и сохранить их в скопированной версии (с макросами в фоновом режиме, которые я точно знаю, являются законными. –