【问题标题】:ClosedXML DataTable to Excel does not export the int(c#) values to Number(Excel)ClosedXML DataTable 到 Excel 不会将 int(c#) 值导出到 Number(Excel)
【发布时间】:2020-12-16 12:54:40
【问题描述】:

数字存储为文本警告!

数据表中填充了如下值;

  dr["Call Duration"] = arrayItem.duration;
  dr["Ring Duration"] = arrayItem.ring_time;

其中持续时间是 int。但是,导出的 excel 不以数字格式显示持续时间值。 Excel 格式示例在下面共享。

    XLWorkbook wb = new XLWorkbook();
    DataTable dt = GetDataTable();
    wb.Worksheets.Add(dt,"Sheet1"); 

是否有任何方法可以预先导出数字格式的 int 或 string 值? Excel 的 VALUE 函数或转换为数字不是选项。

保存导出的文件如下所示;

wb.SaveAs("datatable" + ".xlsx");

【问题讨论】:

  • 您实际上可以通过描述这些整数如何在 Excel 中显示来帮助我们。将 DataTable 写入工作表的代码在哪里?也许代码不接受这些值,因为它期待双打?所以不要尝试将整数写入 Excel,而是先转换为 Double
  • 我已按照您的建议添加了 excel 示例,谢谢。但是,Convert.ToDouble(arrayItem.duration) 给出了相同的结果。

标签: c# excel datatable


【解决方案1】:

只是一个快速修复我不得不让列标题抛出异常文本值无法转换为数字。我在下面分享了我的最终解决方案。

wb.Worksheet("Sheet1").Column(2).CellsUsed(c => c.WorksheetRow().RowNumber() != 1).DataType = XLDataType.Number;
wb.Worksheet("Sheet1").Column(3).CellsUsed(c => c.WorksheetRow().RowNumber() != 1).DataType = XLDataType.Number;

【讨论】:

    【解决方案2】:

    尝试设置单元格/列的数据类型。

    一个例子:

    ws.Cell(ro, co + 1).Value = "'123.45";
    ws.Cell(ro, co + 1).DataType = XLDataType.Number;
    

    您可以在 ClosedXML 文档 here 上找到其他示例

    【讨论】:

    • 感谢您的指导。期待看到您的 cmets 的表现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    相关资源
    最近更新 更多