2016-06-06 11 views
2

Ich verwende ClosedXML, um ein neues Arbeitsblatt zu einem vorhandenen Excel-Dokument hinzuzufügen. Es funktioniert gut für normale Excel-Dokument.ClosedXML Arbeitsblatt mit bedingter Formatierung hinzufügen

Aber wenn ein Excel-Dokument Blatt auf einige Zelle bedingte Formatierung enthält dann wirft es Fehler

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) 

Unterhalb der Beispielcode ist

using (var excelDoc = new ClosedXML.Excel.XLWorkbook(strFilePath)) 
{ 
    excelDoc.Worksheets.Add("New Result Sheet");      
    excelDoc.SaveAs(strFilePathSave); 
} 

Bitte helfen Sie, wie Sie dieses Problem zu beheben.

Antwort

-1

XlsIO ist eine .NET-Bibliothek, die Excel 2003/2007/2010/2013/2016 Dateien liest und schreibt. Mit XlsIO können Sie ein Arbeitsblatt mit bedingter Formatierung sehr einfach ohne Probleme hinzufügen/ändern. Die gesamte Palette von Kontrollen ist kostenlos (kommerzielle Anwendungen auch) über die community license program, wenn Sie qualifizieren. Die Community-Lizenz ist das vollständige Produkt ohne Einschränkungen oder Wasserzeichen.

Schritt 1: Erstellen Sie eine Konsolenanwendung

Schritt 2: In Bezug auf Syncfusion.XlsIO.Base und Syncfusion.Compression.Base, können Sie diese Referenz zu einem Projekt mit NuGet auch hinzufügen.

Schritt 3: Kopieren Sie & fügen Sie das folgende Code-Snippet ein.

Der folgende Codeausschnitt zeigt, wie ein Arbeitsblatt mit dem bedingten Formatierung hinzufügen XlsIO mit

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"); 
} 

bitte der Probe beziehen sie dieses Szenario zu erreichen, und die Probe kann von folgenden Stelle heruntergeladen werden.

Download Demo

Für weitere Informationen über XlsIO, lesen Sie bitte unsere help documentation

Hinweis: Ich arbeite für Syncfusion

+2

Ich werde das nicht verwenden. Wenn Sie das Problem in ClosedXML kennen/beheben, wird es eine große Hilfe sein. – user581453

Verwandte Themen