Office Open XML SDK电子表格如何在数字前面显示货币符号?

时间:2014-04-14 04:30:42

标签: c# asp.net-mvc openxml

正如您在标题中所读到的那样,我一直在寻找一种使用货币格式格式化电子表格单元格的方法。使用下面的代码我得到我的货币格式,但货币符号显示在数字之后。

        // currency format
        stylesheet.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.CellFormats>().InsertAt<DocumentFormat.OpenXml.Spreadsheet.CellFormat>(
           new DocumentFormat.OpenXml.Spreadsheet.CellFormat()
           {
               NumberFormatId = 164,
               ApplyNumberFormat = true
           },
           8);

有没有人知道前面显示货币符号的货币格式的NumberFormatId?

3 个答案:

答案 0 :(得分:2)

事实证明我需要在电子表格中添加基本样式。下面的代码为货币添加了基本风格。

// Currency
stylesheet.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.NumberingFormats>().InsertAt<DocumentFormat.OpenXml.Spreadsheet.NumberingFormat>(
  new DocumentFormat.OpenXml.Spreadsheet.NumberingFormat()
   {
     NumberFormatId = 164,
     FormatCode = "\"" + System.Globalization.CultureInfo.CurrentUICulture.NumberFormat.CurrencySymbol + "\"\\ " + "#,##0.00"
   },0);

感谢@Vadim回复。

答案 1 :(得分:0)

我试图改进上面的建议,因为我尝试了同样的结果并没有得到带负值的$ sign。我应用了以下更改并修复了带负值的$ sign问题。

stylesheet.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.NumberingFormats>().InsertAt<DocumentFormat.OpenXml.Spreadsheet.NumberingFormat>(
  new DocumentFormat.OpenXml.Spreadsheet.NumberingFormat()
  {
    NumberFormatId = 164,
    FormatCode = "\"" + System.Globalization.CultureInfo.CurrentUICulture.NumberFormat.CurrencySymbol + "\"\\ " + "#,##0.00;" + "\"(" + System.Globalization.CultureInfo.CurrentUICulture.NumberFormat.CurrencySymbol + "\"\\ " + "#,##.00)[Red];0.00"

  }, 0);

输出:正值1.23美元           负值($ 1.23){字体颜色读取)

答案 2 :(得分:-1)

如何更改单元格的文本方向?为我工作。