Excel的当前格式在Closedxml SaveAs方法中得到了改变

在我的C#应用​​程序中,我使用了ClosedXml .Excel来处理excel文件。 我有一个Excel模板,我将模板添加到应用程序中,并将数据添加到Excel表格并保存如下的Excel,

wb = new XLWorkbook(exportOption.FileName); --- if (wb.Worksheets.Count > 0) { for (int i = 0; i < wb.Worksheets.Count; i++) { using (var ws = wb.Worksheet(i + 1)) { if (ws.Visibility == XLWorksheetVisibility.Visible) { ws.SetTabActive(); break; } } } } try { wb.CalculateMode = XLCalculateMode.Auto; wb.SaveAs(exportOption.FileName); } 

保存更改后,我的excel格式也完全改变与其他表。 例如,在一张表中我有百分比格式更改为date格式。 我怎样才能保持Excel的格式相同,只是插入数据到其他工作表。

Excel的常见做法是把数字当作date来处理(就像在Excel中存储date的数字一样)。 要强制单元格是一个数字不date尝试:

 ws.Cell(row,col).SetValue<double>(Convert.ToDouble(val)); 

这是关于ClosedXML单元格格式的官方文档。 如果你需要保存格式为百分比,例如“# ##%”,只需设置单元格格式:

 ws.Cell(row, col).Style.NumberFormat.NumberFormatId = 10; 

或未经testing

 ws.Cell(row, col).Style.NumberFormat.Format = "0.0%"; 

保存之前,您必须从应用程序中select单元格数字格式。 CLosedXml是基于OPENXML库的库,因此您必须应用OpenXml Excel样式表来更改单元格数字格式。

这是一篇可以帮助你的文章