【发布时间】:2014-01-30 15:41:21
【问题描述】:
我正在使用 VS2008、ASP.net、C#.net。
我有一个使用 NPOI dll 导出到 excel 2003 的网络应用程序。 如何在导出的 Excel 工作表中以印度风格(12、12、34、567.89)显示带有千位分隔符的数字?这些带有数字的单元格应该适用于应用公式(sum())
【问题讨论】:
我正在使用 VS2008、ASP.net、C#.net。
我有一个使用 NPOI dll 导出到 excel 2003 的网络应用程序。 如何在导出的 Excel 工作表中以印度风格(12、12、34、567.89)显示带有千位分隔符的数字?这些带有数字的单元格应该适用于应用公式(sum())
【问题讨论】:
根据您的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
【讨论】:
[excel] 标签(将为您插入)。也许您在 C# 部分中需要 no 格式,并且只希望在 Excel 显示数字时进行格式设置?我尝试谷歌,发现How to show Indian Currency Format in Excel?。
与 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");
【讨论】:
试试这个
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/
【讨论】:
'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
【讨论】: