Я использую C# с openxml и Excel 2013. Я пытаюсь удалить ячейку, содержащую формулу. Я могу удалить ячейку без формулы, но когда я пытаюсь удалить ее с помощью формулы, файл Excel повреждается.
Чтобы дублировать ошибку, создайте файл Excel и установите для ячейки A1 значение «=» A2".
Выполните следующий код, и сохраненный файл Excel будет поврежден:
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Linq;
class Program
{
static void Main()
{
string filePath = "c:\\test\\test.xlsx";
string worksheetName = "Sheet1";
//get first row
SpreadsheetDocument spreadsheetdocument = SpreadsheetDocument.Open(filePath, true);
WorkbookPart workbookpart = spreadsheetdocument.WorkbookPart;
Sheet sheet = workbookpart.Workbook.Descendants().FirstOrDefault(s => s.Name == worksheetName);
WorksheetPart worksheetpart = (WorksheetPart)workbookpart.GetPartById(sheet.Id);
SheetData sheetdata = worksheetpart.Worksheet.Elements().FirstOrDefault();
Row row = sheetdata.Elements().FirstOrDefault(r => r.RowIndex == 1);
//get first cell
Cell cell = row.Elements().FirstOrDefault();
//delete cell
cell.Remove();
//save
worksheetpart.Worksheet.Save();
spreadsheetdocument.Save();
//dispose
spreadsheetdocument.Dispose();
}
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... -a-formula