gpt4 book ai didi

java - 使用 POI 获取应用于 Excel 单元格的货币

转载 作者:行者123 更新时间:2023-11-29 03:22:54 25 4
gpt4 key购买 nike

我编写了一个 Java 程序来使用 POI API 逐个单元格地读取 Excel 文件。货币设置是使用 MS Excel -“格式化单元格”选项明确完成的。

但是,有什么方法可以让我使用 POI 识别已应用于单元格的货币?

到目前为止,我已经尝试使用 getCellStyle().getDataFormat() 并返回一个唯一的数字。然而,问题在于它是基于单元格样式的,并且可以随着单元格格式(字体、大小等)的变化而变化。

我试过这个:

if(Cell.CELL_TYPE_NUMERIC)
{
System.out.println("Value in Excel cell:: " + cell.getNumericCellValue());
short styleType = cell.getCellStyle().getDataFormat();
System.out.println("style (currency):: " + styleType);

if(styleType == <Some unique number>) //want this unique number
{
System.out.println("Currency applied to this cell:: " + <Currency name>);
}
}

所以,要么我获得标识货币名称的唯一编号,要么我直接获得货币名称,那将是最好的。

最佳答案

您可以通过查看 org.apache.poi.ss.usermodel.BuiltinFormats 的 id 来识别内置格式类,或者使用相同的类获取格式字符串

 String dataFormatString =
BuiltinFormats.getBuiltinFormat(cell.getCellStyle().getDataFormat());

或者您可以使用 CellStyle 中的 getDataFormatString() 方法获取货币格式

String dataFormatString = cell.getCellStyle().getDataFormatString();

更新:

查看HSSFDataFormat

International Formats

Since version 2003 Excel has supported international formats. These are denoted with a prefix "[$-xxx]" (where xxx is a 1-7 digit hexadecimal number). See the Microsoft article Creating international number formats for more details on these codes.

对于货币格式,前缀实际上是 [$c-xxx] 其中 c 是货币符号,xxx 是十六进制值相应语言和位置的区域设置标识符 (LCID),因此您可以解析数据格式字符串以获取货币。

例如,对于货币 "EUR € Spanish (Spain)",数据格式字符串为 #.##0 [$€-C0A];-#.##0 [ $€-C0A] 这样您就可以将 [$€-C0A] 翻译成 "Currency EUR - Spanish",翻译成 "USD $ English ( EE.UU.)" 数据格式字符串为[$$-409]#.##0;-[$$-409]#.##0 所以你可以翻译[$$-409] “Currency USD - English (U.S.)”...等

希望这对您有所帮助。

关于java - 使用 POI 获取应用于 Excel 单元格的货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com