2016-12-13 3 views
0

Это может быть дубликат, так как многие сообщения ссылаются на такие проблемы, но я не смог найти точный ответ на этот случай.Добавление новых ячеек разбивает файл excel

Итак, у меня есть файл Excel, где ячейка «E4» содержит формулу «= C4 + D4». Все остальные ячейки пустые, что означает, что я не могу их искать или получать через OpenXml, просто потому, что они не существуют в Xml. Поэтому для того, чтобы заполнить ячейки «C4» и «D4» я должен создавать их (как это :)

var cell = new Cell(){ 
    CellReference = new StringValue("C4"), 
    DataType = new EnumValue<CellValues>(CellValues.Number), 
    CellValue = new CellValue("123") 
} 

такой же, для ячейки «D4», а затем добавить эти клетки к ряду

row.Append(cell); 

После того как я открою файл excel, вы увидите сообщение об ошибке «Excel нашел нечитаемый контент в файле.xlsx. Вы хотите восстановить содержимое этой книги? Если вы доверяете источнику этой книги, нажмите« Да ».

Я проверил и когда в файле excel нет формулы, ячейки будут добавлены правильно.

Так что я задаю вопрос, используя OpenXml, как добавить в файл Excel файл, содержащий формулу, чтобы не разбить файл?

ответ

0

Я решил свою проблему с помощью EPPLUS

using (ExcelPackage excelPackage = new ExcelPackage(fileStream)) 
{ 
    ExcelWorkbook excelWorkBook = excelPackage.Workbook; 
    ExcelWorksheet excelWorksheet = excelWorkBook.Worksheets.First(); 
    excelWorksheet.Cells["C4"].Value = "123"; 
    excelWorksheet.Cells["D4"].Value = "321"; 

    excelPackage.SaveAs(memoryStream); 
} 
+0

Nice one - я собирался предложить ClosedXML - кучи, которые легче работать с OpenXML, действительно превышают вершину. –

1

Так XML является неверен поврежден файл имеет, следовательно, ошибку:

Excel found unreadable content in file

Чтобы устранить и исправить это, я предлагаю вам сравнить созданные вручную XLSX к программно созданному XLSX.

Для этого вы переименуете оба расширения файлов из XLSX в ZIP> извлеките их в разные папки> используйте инструмент WinDiff (или, лучше, «OpenXML SDK Productivity Tool»), чтобы сравнить файлы.

Как только вы обнаружите, как его искаженный изменит ваш код, попробуйте его исправить.

+2

Просто немного кончика: Лучше использовать «OpenXML SDK Productivity Tool», который поставляется с OpenXML SDK для сравнения файлов. Это значительно облегчает сравнение;) – bassfader

Смежные вопросы