我想在Excel中设置XSSFCell
,将CellType
显示为数字,并需要它将值显示为pt BR Locale
(使用作为分隔符,而不是
,
(不是十进制/小数-但仍然是双精度
)。我成功地显示了正确的单元格值,但是CellTyle
只得到String
。我知道,double
有美国的配置0.000,00
,一个简单的NumberFormat
和Locale
就可以了,但是CellType
可以访问文本,而不是
number
。
该数字已经配置了区域设置,它直接来自数据库。(例如:
412.000
),但将其双重转换为US(412,000
)。
那么,我如何将单元格格式化为我的
语言环境
,并且仍然将单元格类型
设置为数值
?
这是我到目前为止得到的:
XSSFCell cell = row.createCell(anyCellNumber);
double value = 412.000; //valueThatComesFromDataBaseWithLocaleFormatted
cell.setCellType(CellType.NUMERIC);
//At this point, double has already converted the cell value to 412,000 - So, What I did was:
cell.setCellValue(String.format("%.3f", value).replace(",", ".")); // Replaced the , to . to match Locale
所以,这就是重点,设置了
CellType
,但是NumberFormat
,DecimalFormat
,Locale
,String.format
等,获取cell value
到String
,因此CellType
是text
。
不能使用
Double。parseDouble(valueFormatted.toString())
,因为如果字符串的语言环境已格式化,则会引发异常。
那么,如何(如果可能的话),我可以有一个
CellType。NUMERIC
和格式化为我的Locale
(pt-BR)的单元格值???
提前感谢!
据我所知,你特别希望你的单元格是数字类型,而你的显示器是“非日期”的?我能想到的唯一方法就是定义你自己的风格。这在带有自定义函数的excel中是可能的。在ApachePOI中,在修补单元格样式时可能会出现以下情况:
...
Cell cell = row.createCell(cellIndex);
CellStyle cellStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
createHelper.createDataFormat("some specific custom data format").
cell.setCellStyle(cellStyle);
然而,我不确定是否有办法。我不确定,但这些单元格样式似乎仅限于默认的excel样式https://www.roseindia.net/java/poi/setdataformat.shtml
最简单的方法是将您的单元格设置为“日期”类型。即使来自数据库的结果是一个数字,也可以将其转换为日期,因为日期只是时间戳上的一层。我强烈建议你考虑一下这种方法,而不是从看起来像日期的at“黑客”绕过数字。
问题内容: 我正在使用以下内容来设置文本区域的值。 但它似乎不起作用。message的值不能为null。有谁知道为什么它没有填补价值? 问题答案: Textarea没有价值。您需要在开始和结束标记之间插入消息。
我需要将Excel行从一张工作表复制到另一张工作表。但是在复制而不是实际值之后,我得到了不同的值。有字符串值的单元格没有问题,但有数值的单元格没有问题。Excel单元格可以包含任何类型的值。我的代码应该接受所有这些内容,并将它们复制到另一张表中。请帮我解决这个问题。 我知道row.get单元格(二)"是转换类型单元格字符串,但我想设置setCellValue接受单元格,可以有任何类型的数据(例如:
而且,当不为c1和c2设置任何CellValue时,实际上可以将它们的CellType设置为Numeric,突然之间代码又可以工作了。它在没有CTTable的情况下也可以工作。 有什么想法或变通办法吗?还是POI的一个bug(因为它尝试从任何单元格中获取字符串值,而不管它的单元格类型如何)?
我无法将此行的样式设置为: 它给我的错误是“无法在基元类型void上调用setCellValue(String)”。这种情况下的错误是什么?我如何在单行代码中实现所有3个目标?
如何使用为给定的(默认区域设置就足够了)和给定的小数位数设置值的格式? 例如,我有这些值: 我想以以下方式打印它们,例如,我们的区域设置和小数点后2位: 现在,我如何设置一个NumberFormat总是显示2位小数点,但是基于当前区域设置显示千位分隔符和小数点呢?
我正在使用谷歌表单作为日常仪表板。我需要的是根据另一个单元格C5的值更改单元格B5的背景色。如果C5大于80%,则背景色为绿色,但如果低于,则为琥珀色/红色。 这是Google Sheets功能提供的还是我需要插入脚本?