excel - NPOI:实现像Excel格式化一样的货币格式

标签 excel formatting xlsx npoi

我在这里看到了一些问题(例如 this one ),询问 Excel 中的单元格是否可以通过 NPOI/POI 进行格式化,就像 formatted by Excel 一样。 。和你们大多数人一样,我必须处理货币和日期时间的问题。这里想问一下如何才能实现像Excel格式化一样的格式化呢? (我会亲自回答这个问题,以演示如何做到这一点。)

设置:Windows 10,英语,地区:台湾 Excel 格式:XLSX(2007 及更高版本)

(很抱歉对这个问题进行了各种编辑,因为我在意外的时间按下了“Enter”按钮。)

最佳答案

如果将单元格格式设置为货币,则有 4 个选择:Excel Currency Format

各个样式的内部格式如下:

  1. -NT$1,234.10

  2. [红色]NT$1,234.10

  3. -NT$1,234.10

  4. [红色]-NT$1,234.10

注意:NT$前后各有一对双引号(")。

(要获取 XLSX 的内部格式,只需将其解压缩。样式信息位于 \xl\Styles.xml 中,如果您需要更多信息,请查看此 answer。)

(仅供引用:在formatCode中,'0'代表一个数字。'#'也代表一个数字,但如果数字不够大就不会出现。所以任何小于1000 里面不会有逗号。'_' 是空格符。在格式 3 中,'1.75' 显示为 'NT$1.75 '。最后一个是空格。)

(仅供引用:在 numFmtId 中,对于情况 1 和情况 2,数字 164 是用户定义的。对于情况 3 和 4,数字 7 和 8 是 build-in style 。)

对于使用 POI/NPOI 的开发人员,您可能会发现是否使用 Build In Format 格式化货币列使用0x7或0x8,您只能得到第三或第四个选择。您无法获得第一或第二选择。

要获得第一个选择,您可以基于样式 0x7 "$#,##0.00);($#,##0.00)" 进行构建。您需要在其前面添加货币符号和一对双引号

styleCurrency.DataFormat = workbook.CreateDataFormat().GetFormat("\"NT$\"#,##0.00");

将此格式应用于包含数字的单元格。打开Excel结果文件后,右键单击检查格式,您将看到第一个选择。

请随时对此帖子发表评论。

关于excel - NPOI:实现像Excel格式化一样的货币格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45565200/

相关文章:

python - 只读取某些列

excel - VBA 将分隔 rune 本文件转换为 Excel

javascript - 使用函数格式化日期时出错

Python 字符串格式化和字符串乘法奇数

python - 解析文本文件以存储到类对象和属性中

asp.net - 获取事件工作表 Excel

java - .xls 使用 java 和 POI APACHE 转换为 xlsx

c# - 允许用户上传 Excel 文档的安全实现

excel - 测试列范围内的 2 个值,直到在不同列中达到空白单元格

vba - Excel VBA 选择 - 更好的代码