在closexml保存方法中更改excel当前格式

本文关键字:excel 格式 closexml 保存 方法 | 更新日期: 2023-09-27 18:13:24

在我的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格式完全改变与其他工作表。例如,在一个工作表中,我有百分比格式更改为日期格式。我怎么能保持excel的格式相同,只是插入数据到其他工作表。

在closexml保存方法中更改excel当前格式

Excel通常会被欺骗将数字当作日期(因为在底层Excel将日期存储为数字)。要强制单元格为数字而不是日期,请尝试:

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

这里是关于ClosedXML单元格格式的官方文档。如果您需要保留百分比格式,例如"#"。##%"简单设置单元格格式:

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

或未测试

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

您必须在保存之前从应用程序中选择单元格数字格式。CLosedXml是一个基于OPENXML库的库,所以你必须应用OPENXML excel样式表来更改单元格数字格式。

这篇文章可能会对你有所帮助