Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用POI获取应用于Excel单元格的货币_Java_Excel_Apache Poi - Fatal编程技术网

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

Java 使用POI获取应用于Excel单元格的货币,java,excel,apache-poi,Java,Excel,Apache Poi,我已经编写了一个Java程序,使用POIAPI逐单元读取Excel文件。 使用MS Excel-“格式单元格”选项显式设置货币 但是,是否有任何方法可以识别使用POI应用于单元格的货币 到目前为止,我已经尝试使用getCellStyle().getDataFormat(),它返回一个唯一的数字。但是,问题是它基于单元格样式,并且可以随着单元格格式(字体、大小等)的更改而更改 我试过这个: if(Cell.CELL_TYPE_NUMERIC) { System.out.println("Val

我已经编写了一个Java程序,使用POIAPI逐单元读取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>);
  }
}
if(Cell.Cell\u TYPE\u NUMERIC)
{
System.out.println(“Excel单元格中的值::”+cell.getNumericCellValue());
short styleType=cell.getCellStyle().getDataFormat();
System.out.println(“样式(货币):”+样式类型);
if(styleType==)//想要这个唯一的数字吗
{
System.out.println(“应用于此单元格的货币::”+);
}
}

因此,要么我得到标识货币名称的唯一数字,要么如果我直接得到货币名称,那就最好了。

您可以通过查看类的id来标识内置格式,或者使用相同的类来获取格式字符串

 String dataFormatString =
 BuiltinFormats.getBuiltinFormat(cell.getCellStyle().getDataFormat());
或者,您可以使用
getDataFormatString()
方法从
CellStyle

String dataFormatString = cell.getCellStyle().getDataFormatString();
更新:

看课堂

国际格式

自2003版以来,Excel支持国际格式。这些 用前缀“[$-xxx]”表示,其中xxx是1-7位数字 十六进制数)。请参阅Microsoft文章 有关这些代码的更多详细信息

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

例如,对于货币
“EUR EUR Spanish(西班牙)”
,数据格式字符串为
。##0[$€-C0A];-###0[$€-C0A]
因此您可以将
[$€-C0A]
翻译成
“欧元-西班牙货币”
,用于
“美元英语(EE.UU.)”
数据格式字符串为
[$$-409].\-[$$-409].####0
因此您可以在
中翻译
[$$-409]
“货币美元-英语(美国)”
。。。等


希望这有帮助。

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

 String dataFormatString =
 BuiltinFormats.getBuiltinFormat(cell.getCellStyle().getDataFormat());
或者,您可以使用
getDataFormatString()
方法从
CellStyle

String dataFormatString = cell.getCellStyle().getDataFormatString();
更新:

看课堂

国际格式

自2003版以来,Excel支持国际格式。这些 用前缀“[$-xxx]”表示,其中xxx是1-7位数字 十六进制数)。请参阅Microsoft文章 有关这些代码的更多详细信息

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

例如,对于货币
“EUR EUR Spanish(西班牙)”
,数据格式字符串为
。##0[$€-C0A];-###0[$€-C0A]
因此您可以将
[$€-C0A]
翻译成
“欧元-西班牙货币”
,用于
“美元英语(EE.UU.)”
数据格式字符串为
[$$-409].\-[$$-409].####0
因此您可以在
中翻译
[$$-409]
“货币美元-英语(美国)”
。。。等


希望这能有所帮助。

您能发布代码吗?您能发布代码吗?这只返回“$”的结果,而MS Excel提供了很多货币类型。对于所有其他类型,它返回'-1',这使得它几乎不可能再进一步使用。是否有任何方法可以获得唯一的数字或id,或任何与视觉格式(如字体、颜色等)无关的内容?检查单元格()时,它会向我显示我在excel中指定的格式的货币。但是,如何在变量中获得特定的字符串或表示形式?或者更确切地说,我该如何把它拿出来,以便我可以进一步使用它?例如,如果格式为日元,我得到:[$¥-411]#、#0.00\-[$¥-411]#,##0.00这是在:-stylesSource->numberFormats->table-HashMapEntry检查单元格()现在我要做的就是以某种方式将该值取到外部,以便我可以进一步使用它。。。。有什么想法吗?我用getDataFormatString()方法解决了它。非常感谢,你不知道你帮了我多少。。。干杯:)这只返回“$”的结果,而MS Excel提供了很多货币类型。对于所有其他类型,它返回'-1',这使得它几乎不可能再进一步使用。是否有任何方法可以获得唯一的数字或id,或任何与视觉格式(如字体、颜色等)无关的内容?检查单元格()时,它会向我显示我在excel中指定的格式的货币。但是,如何在变量中获得特定的字符串或表示形式?或者更确切地说,我该如何把它拿出来,以便我可以进一步使用它?例如,如果格式为日元,我得到:[$¥-411]#、#0.00\-[$¥-411]#,##0.00这是在:-stylesSource->numberFormats->table-HashMapEntry检查单元格()现在我要做的就是以某种方式将该值取到外部,以便我可以进一步使用它。。。。有什么想法吗?我用getDataFormatString()方法解决了它。非常感谢,你不知道你帮了我多少。。。干杯:)