use*_*439 2 excel formatting xlsx npoi
我在这里看到了一些问题(比如这个),询问 Excel 中的单元格是否可以通过 NPOI/POI 进行格式化,就像通过 Excel 格式化一样。和你们中的大多数人一样,我必须处理货币和日期时间的问题。这里问一下,如何实现格式化,就好像已经被Excel格式化了一样?(我将自己回答这个问题以演示如何做到这一点。)
设置:Windows 10,英文,地区:台湾 Excel 格式:XLSX(2007 及更高版本)
(对于这个问题的各种编辑感到抱歉,因为我在意外的时间按下了“Enter”按钮。)
每种样式的内部格式如下:
-NT$1,234.10
<numFmt formatCode=""NT$"#,##0.00" numFmtId="164"/>
[RED]NT$1,234.10
<numFmt formatCode=""NT$"#,##0.00;[Red]"NT$"#,##0.00" numFmtId="164"/>
-NT$1,234.10
<numFmt formatCode=""NT$"#,##0.00_);("NT$"#,##0.00)" numFmtId=" 7 "/>
[RED]-NT$1,234.10
<numFmt formatCode=""NT$"#,##0.00_);[Red]("NT$"#,##0.00)" numFmtId=" 8 "/>
注意:NT$前后有一对双引号(")。
(要获得 XLSX 的内部格式,只需解压缩它。样式信息在 <unzip dir>\xl\Styles.xml 中查看 如果您需要更多信息,答案。)
(仅供参考:在 formatCode,“0”代表一个数字。“#”也代表一个数字,但如果数字不够大,则不会出现。因此,任何小于 1000 的数字都不会在其中包含逗号。“ _' 是一个空格。在格式 3 中,'1.75' 显示为 'NT$1.75'。最后一个是一个空格。)
(仅供参考:在numFmtId案例 1 和案例 2 中,数字 164 用于用户定义。对于案例 3 和 4,数字 7 和 8 是内置样式。)
对于使用 POI/NPOI 的开发人员,您可能会发现您是否使用 Build In Format使用 0x7 或 0x8,您只能获得第三或第四个选择。你不能得到第一或第二选择。
要获得第一个选择,您需要构建 0x7 样式"$#,##0.00);($#,##0.00)"。您需要在其前面添加货币符号和一对双引号。
styleCurrency.DataFormat = workbook.CreateDataFormat().GetFormat("\"NT$\"#,##0.00");
Run Code Online (Sandbox Code Playgroud)
将此格式应用于带有数字的单元格。打开 Excel 结果文件后,右键单击以检查格式,您将看到第一个选择。
请随时对这篇文章发表评论。