ClosedXML Добавить рабочий лист с условным форматированием
Я использую ClosedXML, чтобы добавить новый лист в существующий документ Excel. Он отлично работает для нормального документа Excel.
Но если в листе Excel содержится условное форматирование в какой-либо ячейке, он выдает ошибку
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at ClosedXML.Excel.XLCFConverters.Convert(IXLConditionalFormat conditionalFormat, Int32 priority, SaveContext context)
at ClosedXML.Excel.XLWorkbook.GenerateWorksheetPartContent(WorksheetPart worksheetPart, XLWorksheet xlWorksheet, SaveContext context)
at ClosedXML.Excel.XLWorkbook.CreateParts(SpreadsheetDocument document)
at ClosedXML.Excel.XLWorkbook.CreatePackage(String filePath, SpreadsheetDocumentType spreadsheetDocumentType)
at ClosedXML.Excel.XLWorkbook.SaveAs(String file)
Ниже приведен пример кода
using (var excelDoc = new ClosedXML.Excel.XLWorkbook(strFilePath))
{
excelDoc.Worksheets.Add("New Result Sheet");
excelDoc.SaveAs(strFilePathSave);
}
Пожалуйста, помогите, как решить эту проблему.
1 ответ
XlsIO - это библиотека.NET, которая читает и записывает файлы Excel 2003/2007/2010/2013/2016. Используя XlsIO, вы можете легко добавлять / изменять листы с условным форматированием без проблем. Весь набор элементов управления доступен бесплатно (коммерческие приложения также) через лицензионную программу сообщества, если вы подходите. Лицензия сообщества является полным продуктом без ограничений и водяных знаков.
Шаг 1. Создайте консольное приложение
Шаг 2: Добавьте ссылку на Syncfusion.XlsIO.Base и Syncfusion.Compression.Base, вы также можете добавить эти ссылки в свой проект, используя NuGet.
Шаг 3: Скопируйте и вставьте следующий фрагмент кода.
В следующем фрагменте кода показано, как добавить лист с условным форматированием с помощью XlsIO.
using (ExcelEngine excelEngine = new ExcelEngine())
{
//Instantiate the excel application object.
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Excel2013;
//Open the workbook
IWorkbook workbook = application.Workbooks.Open("Input.xlsx");
(workbook.Worksheets as WorksheetsCollection).Add("NewSheet");
IWorksheet worksheet = workbook.Worksheets[1];
IConditionalFormats condition = worksheet.Range["A1"].ConditionalFormats;
IConditionalFormat condition1 = condition.AddCondition();
condition1.FormatType = ExcelCFType.CellValue;
condition1.Operator = ExcelComparisonOperator.Between;
condition1.FirstFormula = "10";
condition1.SecondFormula = "20";
condition1.BackColor = ExcelKnownColors.Red;
worksheet.Range["A1"].Number = 13;
//Save the workbook
workbook.SaveAs("AddedWorkbook.xlsx");
}
Пожалуйста, ознакомьтесь с примером для достижения этого сценария, и образец может быть загружен из следующего местоположения.
Для получения дополнительной информации о XlsIO, пожалуйста, обратитесь к нашей справочной документации
Примечание: я работаю на Syncfusion