У меня есть очень простой код, чтобы открыть копию шаблона файла Excel, поместить в него некоторые данные и удалить оставшиеся пустые строки. Это работает с большинством файлов шаблонов, но с несколькими из них я получаю исключение, когда пытаюсь сохранить файл после удаления ненужных строк.
В примере кода я пропустил код добавления данных и просто сохранил функцию удаления строки. Когда я запускаю этот код, я получаю сообщение об ошибке, если я пытаюсь удалить строки после 1025.
static void Main(string[] args)
{
try
{
FileInfo fis = new FileInfo(@"D:\ExcelTest\TestFile.xlsx");
FileInfo fi = new FileInfo(Path.Combine(fis.DirectoryName, Guid.NewGuid() + fis.Extension));
fis.CopyTo(fi.FullName);
using (ExcelPackage excelPackage = new ExcelPackage(fi))
{
ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets["C3R"];
int rowstodelete = (171 * 6) - 23;
worksheet.DeleteRow(24, rowstodelete, true);
excelPackage.Save();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
System.InvalidOperationException: Ошибка при сохранении файла D: \ ExcelTest \ fabf5a3f-714f-4422-a760-73190f34b951.xlsx ---> System.Collections.Generic.KeyNotFoundException: Указанный ключ отсутствует в словаре. \ R \ n в System.Collections.Generic.Dictionary`2.get_Item (ключ TKey) \ r \ n в OfficeOpenXml.ExcelWorksheet.UpdateRowCellData (StreamWriter sw) \ r \ n в OfficeOpenXml.ExcelWorksheet.SaveXml (потоковый поток) \ r \ n в OfficeOpenXml.ExcelWorksheet.SaveHandler (поток ZipOutputStream, уровень сжатия CompressionLevel, имя строки String) \ r \ n в OfficeOpenXml.Packaging.ZipPackagePart.WriteZip (ZipOutputStream os) \ r \ n в потоке OfficeOpenXml.Pack. \ n в OfficeOpenXml.ExcelPackage.Save () \ r \ n --- Конец трассировки стека внутренних исключений --- \ r \ n в OfficeOpenXml.ExcelPackage.Save () \ r \ n в ConsoleApplication1.Program.Main (String [] args) в C: \ Users \ sm511 \ Documents \ Visual Studio 2015 \ Projects \ ConsoleApplication1 \ Program.cs: строка 27
Файл Excel вызывает проблему