如何将ClosedXML中的货币格式化为数字

保罗·杜尔

我们正在使用ClosedXML将数据表对象转换为Excel电子表格,以呈现给用户。只需将所有db值(来自NHibernate)分配给字符串,然后按如下所示格式化它们即可构建DataTable对象:

  //formatting
EstimatedCost = Currency.SafeToString(Currency.Create(n.EstimatedCost)),

然后,将列类型设置为属性类型,即在所有情况下均为String。

在输出Excel工作表中会发生什么,因为该列设置为货币,但其数字为文本警告,因此无法正确排序。

我的问题是,由于我们将所有数据都构建到一个DataTable中,因此我没有机会正确装饰ClosedXML列。有没有我想到的快速方法?

public const string ExcelDataType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml";

public static MemoryStream GenerateExcelFileFromData(IEnumerable<KeyValuePair<string, DataTable>> tabs, int colWidth = 100)
{
  var workbook = new XLWorkbook { ColumnWidth = colWidth };
  foreach (var enumerable in tabs)
  {
    workbook.Worksheets.Add(enumerable.Value, enumerable.Key);
  }

...

 public static DataTable ConvertToDataTable<T>(IEnumerable<T> varlist, List<string> excludedColumns, bool titleizeColumn = false)
 {
   var dtReturn = new DataTable();

   // column names 
   PropertyInfo[] oProps = null;

   if (varlist == null) return dtReturn;

    foreach (T rec in varlist)
    {
     // Use reflection to get property names, to create table, Only first time, others will follow 
        if (oProps == null)
        {
           oProps = rec.GetType().GetProperties();
              foreach (PropertyInfo pi in oProps)
               {
                    if (excludedColumns.Contains(pi.Name))
                    {
                        continue;
                    }
                    var colType = pi.PropertyType;
                    dtReturn.Columns.Add(new DataColumn(GetColumnName(pi, titleizeColumn), colType));
                }
          }

        DataRow dr = dtReturn.NewRow();

        foreach (var pi in oProps.Where(pi => !excludedColumns.Contains(pi.Name)))
          {
             try
                {
                    dr[GetColumnName(pi, titleizeColumn)] = pi.GetValue(rec, null) ?? DBNull.Value;
                }
                catch (ArgumentException)
                {
                    dr[GetColumnName(pi, titleizeColumn)] = DBNull.Value;
                }
            }
            dtReturn.Rows.Add(dr);
        }
        return dtReturn;
贾里德巴斯勒

您可以通过以下方式设置货币值的格式:

worksheet.Cell(rowIndex, columnIndex).Style.NumberFormat.Format = "$0.00";
worksheet.Cell(rowIndex, columnIndex).DataType = XLCellValues.Number;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数字格式化为货币字符串

来自分类Dev

当用户在 Javascript 中键入时,如何将数字格式化为货币

来自分类Dev

如何将SPARQL中COUNT的输出格式化为仅数字?

来自分类Dev

将Apache POI中的单元格值格式化为数字的会计或货币

来自分类Dev

SQL Server 2008:如何将输出格式化为货币

来自分类Dev

如何将货币数据格式化为两位小数?

来自分类Dev

在Python中将数字格式化为货币

来自分类Dev

在Python中将数字格式化为货币

来自分类Dev

在Java中,如何将数字格式化为字符串,使其格式为“ xxx.xxx.xxx,yy”?

来自分类Dev

将小数格式化为货币

来自分类Dev

如何将十进制数字格式化为2或3位数字?

来自分类Dev

如何将AngularJS ui-grid单元格中的数字值格式化为两位小数?

来自分类Dev

Python-将数字列表中的项目格式化为带有货币符号的字符串

来自分类Dev

如何将数字1格式化为字符串“ 01”以进行汇总?

来自分类Dev

Android:如何将数字格式化为带括号的电话

来自分类Dev

如何将整数格式化为2位数字的字符串?

来自分类Dev

如何将数字.00格式化为0.00?

来自分类Dev

jQuery和JSON如何将数字格式化为美元和美分?

来自分类Dev

如果用PHP千,如何将数字格式化为2.5K?像Facebook

来自分类Dev

如何将选定的单元格(列)格式化为 9 位数字

来自分类Dev

如何将UTC中的datetime格式化为本地时间格式?

来自分类Dev

将费用格式化为本地货币格式SQL

来自分类Dev

如何将bash数组格式化为JSON数组

来自分类Dev

如何将公式的结果格式化为S号

来自分类Dev

如何将时间格式化为UTC时区?

来自分类Dev

如何将日期格式化为IST?

来自分类Dev

如何将参数格式化为函数

来自分类Dev

如何将数组的对象格式化为新对象

来自分类Dev

如何将Powershell CanonicalName格式化为单独的列?

Related 相关文章

  1. 1

    如何将数字格式化为货币字符串

  2. 2

    当用户在 Javascript 中键入时,如何将数字格式化为货币

  3. 3

    如何将SPARQL中COUNT的输出格式化为仅数字?

  4. 4

    将Apache POI中的单元格值格式化为数字的会计或货币

  5. 5

    SQL Server 2008:如何将输出格式化为货币

  6. 6

    如何将货币数据格式化为两位小数?

  7. 7

    在Python中将数字格式化为货币

  8. 8

    在Python中将数字格式化为货币

  9. 9

    在Java中,如何将数字格式化为字符串,使其格式为“ xxx.xxx.xxx,yy”?

  10. 10

    将小数格式化为货币

  11. 11

    如何将十进制数字格式化为2或3位数字?

  12. 12

    如何将AngularJS ui-grid单元格中的数字值格式化为两位小数?

  13. 13

    Python-将数字列表中的项目格式化为带有货币符号的字符串

  14. 14

    如何将数字1格式化为字符串“ 01”以进行汇总?

  15. 15

    Android:如何将数字格式化为带括号的电话

  16. 16

    如何将整数格式化为2位数字的字符串?

  17. 17

    如何将数字.00格式化为0.00?

  18. 18

    jQuery和JSON如何将数字格式化为美元和美分?

  19. 19

    如果用PHP千,如何将数字格式化为2.5K?像Facebook

  20. 20

    如何将选定的单元格(列)格式化为 9 位数字

  21. 21

    如何将UTC中的datetime格式化为本地时间格式?

  22. 22

    将费用格式化为本地货币格式SQL

  23. 23

    如何将bash数组格式化为JSON数组

  24. 24

    如何将公式的结果格式化为S号

  25. 25

    如何将时间格式化为UTC时区?

  26. 26

    如何将日期格式化为IST?

  27. 27

    如何将参数格式化为函数

  28. 28

    如何将数组的对象格式化为新对象

  29. 29

    如何将Powershell CanonicalName格式化为单独的列?

热门标签

归档