我使用的是VS2008,ASP.net,C#.net。
我有一个使用NPOI dll导出到excel 2003的Web应用程序。 如何在导出的Excel工作表中以印度风格(12,12,34,567.89)显示千位分隔符的数字?具有该数字的这些单元格应适用于公式(sum())
答案 0 :(得分: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
答案 1 :(得分:0)
试试这个
int value 773740;
Response.Write(value.ToString("N"));
//or
Response.Write(value.ToString("#,#"));
要使用千位分隔符将double格式化为字符串,请在常用的浮点格式化模式之前使用零和逗号分隔符,例如pattern“0,0.0”格式化数字以使用千位分隔符并且有一个小数位。
String.Format("{0:0,0.0}", 12345.67); // "12,345.7"
String.Format("{0:0,0}", 12345.67); // "12,346"
答案 2 :(得分:0)
与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 :(得分:0)
'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