Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 使用ApachePOI创建的Excel使用点作为大于1000的值的十进制分隔符,使用逗号作为较小的值的分隔符_Java_Excel_Apache Poi_Cell_Hssfworkbook - Fatal编程技术网

Java 使用ApachePOI创建的Excel使用点作为大于1000的值的十进制分隔符,使用逗号作为较小的值的分隔符

Java 使用ApachePOI创建的Excel使用点作为大于1000的值的十进制分隔符,使用逗号作为较小的值的分隔符,java,excel,apache-poi,cell,hssfworkbook,Java,Excel,Apache Poi,Cell,Hssfworkbook,使用org.apache.poi.ss.usermodel utils生成Excel文件时遇到了一些问题:1000以上的值使用点(.)作为小数分隔符,1000以下的值使用逗号(,)作为小数分隔符 我尝试了很多不同的方法将大十进制值放入“Cell”中,但每次结果都是一样的,不管是在Cell\u type\u NUMERIC或Cell\u type\u STRING上设置Cell type,还是这样做: CellStyle cellStyle = workbook.createCellStyle()

使用
org.apache.poi.ss.usermodel utils
生成Excel文件时遇到了一些问题:1000以上的值使用点(.)作为小数分隔符,1000以下的值使用逗号(,)作为小数分隔符

我尝试了很多不同的方法将大十进制值放入“Cell”中,但每次结果都是一样的,不管是在
Cell\u type\u NUMERIC
Cell\u type\u STRING
上设置Cell type,还是这样做:

CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("###0,00"));
cell.setCellStyle(cellStyle);
通过统一十进制分隔符,我成功地解决了这个问题——我获取了这个BigDecimal的字符串值,将所有点替换为逗号,完成了!但是,当打开Excel时,所有字段都会被标记,并且会出现一条警告,说明此单元格中的值已格式化为文本。我可以把它设为一个数字,然后对它们进行不同的数学运算。但我希望生成的Excel文件没有需要解析的警告(因此-单元格被设置为数字,以便对其进行数学运算),并使用
BigDecimal
值和逗号作为小数分隔符

我按如下方式创建工作表和单元格:

Workbook workbook = new SXSSFWorkbook();
Sheet sheet = workbook.createSheet("mySheet);
int rowNum = 1;
List<MyRecord> records = (...);

for (MyRecord record : records) {
    Row row = sheet.createRow(rowNum++);
    int cellNum = 0;
     for (String attribute : attributeList) {
         String cellData = cellData(record, attribute);
         if(cellData != null) {
            Cell cell = row.createCell(cellNum);
            cell.setCellValue(cellData);
        }
        cellNum++;
        }
}
Workbook工作簿=新的SXSSFWorkbook();
工作表=工作簿.createSheet(“mySheet”);
int rowNum=1;
列出记录=(…);
对于(MyRecord:records){
Row-Row=sheet.createRow(rowNum++);
int-cellNum=0;
for(字符串属性:attributeList){
字符串cellData=cellData(记录、属性);
if(cellData!=null){
Cell Cell=row.createCell(cellNum);
cell.setCellValue(cellData);
}
cellNum++;
}
}

setCellValue(double)
plus
cell.setCellStyle(cellStyle);
应该涵盖所有内容。(除了浮点舍入)我以前尝试过,但遇到了一个问题。当使用类似这样的东西时:
cellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat(“0,00”))
然后单元格中的所有值都用切掉的小数位表示。因此,例如“4 478,57”就有“4 478”。我还尝试了不同的格式,如“###“结果是一样的。另外,将单元格类型设置为
单元格类型\u数值
不会改变任何内容。仍然没有解决此问题的方法。如果有人遇到这个问题,请分享代码示例,这似乎是正常工作。谢谢