【问题标题】:Display a number with thousand separator in Indian style using NPOI使用 NPOI 以印度风格显示带有千位分隔符的数字
【发布时间】:2014-01-30 15:41:21
【问题描述】:

我正在使用 VS2008、ASP.net、C#.net。

我有一个使用 NPOI dll 导出到 excel 2003 的网络应用程序。 如何在导出的 Excel 工作表中以印度风格(12、12、34、567.89)显示带有千位分隔符的数字?这些带有数字的单元格应该适用于应用公式(sum())

【问题讨论】:

    标签: c# asp.net excel


    【解决方案1】:

    根据您的CultureInfo,它应该使用格式字符串"N"

    检查您的CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes。如果是{3, 2, },你很高兴。所以:

    yourNumber.ToString("N")
    

    如果你现在的文化不好,你可以换一种文化,例如:

    yourNumber.ToString("N", new CultureInfo("hi-IN"))
    

    在我的系统上,(121234567.89).ToString("N", new CultureInfo("hi-IN")) 提供"12,12,34,567.89"。这些是您想要的组大小。

    您可能知道,格式化也可以这样进行:

    string.Format(new CultureInfo("hi-IN"), "The number {0:N} is well formatted", yourNumber)
    

    补充:出于好奇,我刚刚测试了我系统上哪些特定文化使用{3, 2, }数字组大小,它们是:

    hi-IN
    bn-IN
    pa-IN
    gu-IN
    or-IN
    ta-IN
    te-IN
    kn-IN
    ml-IN
    as-IN
    mr-IN
    sa-IN
    kok-IN
    si-LK
    ne-NP
    bn-BD
    en-IN
    

    【讨论】:

    • 嗨 Nielson,当我们将其导出到 excel 时,它将显示为文本。因此我们无法在此单元格中应用 sum() 函数。是否可以在 excel 中显示为印度数字样式和该单元格应该充当数字。这意味着可以在该单元格上执行 sum() 等内置函数
    • @user3253876 我不是 Excel 专家。尝试在此问题中使用 [excel] 标签(将为您插入)。也许您在 C# 部分中需要 no 格式,并且只希望在 Excel 显示数字时进行格式设置?我尝试谷歌,发现How to show Indian Currency Format in Excel?
    【解决方案2】:

    与 NPOI 一起尝试这种魔法以印度风格进行格式化:

    ICell cell = row.GetCell(0);
    cell.SetCellValue(1234567.89d);
    IDataFormat dataFormatCustom = workbook.CreateDataFormat();
    cell.CellStyle.DataFormat = dataFormatCustom.GetFormat("[>=10000000]##\\,##\\,##\\,##0;[>=100000] ##\\,##\\,##0;##,##0.00");
    

    【讨论】:

      【解决方案3】:

      试试这个

      int value 773740;
      Response.Write(value.ToString("N"));
      //or
      Response.Write(value.ToString("#,#"));
      

      要使用千位分隔符将 double 格式化为字符串,请在通常的浮点格式化模式之前使用零和逗号分隔符,例如模式“0,0.0”格式化数字以使用千位分隔符并保留一位小数。

      String.Format("{0:0,0.0}", 12345.67);     // "12,345.7"
      String.Format("{0:0,0}", 12345.67);       // "12,346"
      

      在此处查看更多信息http://www.csharp-examples.net/string-format-double/

      【讨论】:

      • 这个数字 12, 12,34,567.89 会用这个显示吗?
      【解决方案4】:
      'in vb.net ---
      Dim xlApp As Object
      Dim xlWorkBook As Object
      Dim xlWorkSheet As Object
      
      '--- Instantiate Excel and start a new workbook.
      xlApp = CreateObject("Excel.Application")
      xlWorkBook = xlApp.Workbooks
      Dim xlCells As Excel.Range = Nothing
      Dim rngCell As Excel.Range = Nothing
      Dim lastrow As Long
      lastrow = xlWorkSheet.UsedRange.Rows(xlWorkSheet.UsedRange.Rows.Count).Row
      xlCells = xlWorkSheet.Range("H7:O" & lastrow)   '---change according to your need
      For Each rngCell In xlCells
          If IsNumeric(rngCell.Value) = True Then
              rngCell.Value = CDec(rngCell.Value)
              rngCell.NumberFormat = "[>=10000000]##\,##\,##\,##0.00;[>=100000]##\,##\,##0.00;##,##0.00"
              rngCell.Value = Trim(rngCell.Value)
          End If
      Next
      

      【讨论】:

        猜你喜欢
        • 2021-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        • 2012-03-11
        • 2023-03-20
        • 1970-01-01
        相关资源
        最近更新 更多