Мне нужно удалить все формулы Excel из моего рабочего листа (заменить формулы его результатами), а затем сохранить файл. Например - вместо B3 + 13 Я хочу иметь 2013-04-11 в клетке, когда я открываю файл, используя OpenXMLСохранение пересчитанного файла Excel
Я нашел эту статью http://office.microsoft.com/en-us/excel-help/replace-a-formula-with-its-result-HP010066258.aspx
Он работает - после сохранения нет никакой формулы. Мне нужен тот же эффект в C#. Я пробовал много решений в Интернете, но у меня нет надежды.
string source = @"C:\Source\doc.xlsx";
object Unknown = Type.Missing;
Workbook doc = newApp.Workbooks.Open(
source,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown,
Unknown);
newApp.Calculation = Microsoft.Office.Interop.Excel.XlCalculation.xlCalculationManual;
doc.ForceFullCalculation = true;
newApp.CalculateFull();
newApp.CalculateBeforeSave = true;
doc.SaveAs("c:\\temp\\recalc.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
doc.Close();
В чем проблема? Почему я могу видеть «= DY3 + 1» вместо «2013-04-11»?
И как выполнить итерацию через все листы с помощью Interop? Я знаю только, как это сделать в OpenXML –
Я обновил ответ с помощью цикла foreach, итерации по листам, предполагая, что ваш объект книги называется «doc». –
Отлично :) Это работает :) Спасибо :) targetRange.PasteSpecial (..) not Paste (..) –