当前位置: 首页 > 知识库问答 >
问题:

使用Apache POI写入数据时删除excel单元格中小数点的单元格格式

鄢飞鸾
2023-03-14

我正在使用Apache POI将Excel函数写入单元格并计算该函数。我需要做的是从单元格中删除所有小数点。目前,它在每个单元格值的末尾得到了不必要的两个零。单元格格式如下所示。但最后总是得到两个零。

     XSSFCellStyle cellStyle = cell.getCellStyle();
     DataFormat df = workbook.createDataFormat();
     cellStyle.setDataFormat(df.getFormat("###,##0"));
     cell.setCellStyle(cellStyle);


     if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
          evaluator.evaluateFormulaCell(cell);
      }

我参考了以下URL和其他几个网站,但找不到修复错误的方法。

  1. 链接1
  2. 链接2

注意我将Apache POI版本3.14与Spring 4.3.1一起使用。释放。

共有2个答案

轩辕实
2023-03-14

所以基本上,如果您在java中使用POI库,数字列单元格总是返回双精度格式,因为POI只支持双精度数字格式,我在这里提到了链接。

要克服这一问题,如果您希望获得列中所示的原始值,下面是一个简单的解决方案。

当<代码>单元格时。getNumericCellValue()返回一个结果,如果它是一个没有小数点的普通数字,则返回一个小数点0,例如,如果它显示在第410页中,则返回410.0

因此,当您尝试从单元格中获取值时,您需要添加以下代码以获得确切的结果。

例如,字符串cellValue=格式(cell.getNumericCellValue()“”)

public static String format(String val){
    String stringVal = String.valueOf(val);
    String[] number = stringVal.split( "[.]" );
    if(number.length>1 && number[1].equalsIgnoreCase("0")){
        return number[0];                               
    } else {
        return val;
    }
}
柯唯
2023-03-14

尝试为工作簿创建单元格样式,并将此样式应用于列中所有单元格的"#,##0"数字格式:

CellStyle style = workbook.createCellStyle();
DataFormat format = workbook.createDataFormat();
style.setDataFormat(format.getFormat("#,##0"));
cell.setCellStyle(style);

从工作簿创建样式是最佳方法,并且不会使内存过载。

您还可以调整公式,将数字四舍五入到小数点后0位:

=ROUND(A1,0)
 类似资料:
  • 问题内容: 如何在poi的帮助下在单元格中写下我的全部价值? 即如果值是1000.000,那么我怎么能写出完整的值而不会在“之后”截断000。与POI?表示我想要全部价值。 就我而言,只需要1000,但这对我来说不是正确的格式。 问题答案: 您必须设置要存储此数字的单元格的“格式”。示例代码: 来源:http : //poi.apache.org/spreadsheet/quick- guide.

  • 本文向大家介绍python3.7 openpyxl 在excel单元格中写入数据实例,包括了python3.7 openpyxl 在excel单元格中写入数据实例的使用技巧和注意事项,需要的朋友参考一下 本来我是想尝试,选中某个多个单元格复制到同一个sheet的其他位置,找了很多资料没有找到,目前只有这么一个办法,如果有大佬看到,欢迎补充请教。 补充知识:【openpyxl】python中对Exc

  • 我对Eclipse Java编码一无所知。我正在努力完成一个管理库存的项目。我遇到的问题是,当我试图将项目写入excel单元格时,我收到错误消息,称数组超出了界限。 附言:项目和item.get部分名称等都定义在另一个类文件下。请帮忙。谢谢

  • 我正在尝试使用openpyxl从Excel电子表格中删除单元格。这似乎是一个非常基本的命令,但我已经四处查看了,不知道如何执行。我可以将它们的值设置为“无”,但它们仍然作为空单元格存在。工作表。垃圾收集()抛出一个错误,表示它已弃用。我使用的是openpyxl的最新版本。有没有办法只删除一个空单元格(就像在Excel中那样),或者我必须手动将所有单元格上移?谢谢

  • 我正在使用Apache POI读取零件编号电子表格中的数据。我在我们的数据库中查找零件编号,如果我们有零件的计算机辅助设计图纸,我将零件编号单元格涂成绿色,如果没有,我将其涂成红色。处理完成后,将保存电子表格。我遇到的问题是那列中的每个细胞都是绿色的。我已经完成了代码,查找零件号的逻辑工作正常,确定单元格应该是什么颜色以及设置颜色和填充的逻辑似乎也工作正常。知道我做错了什么吗? 谢谢

  • 我一直试图创建一个宏来格式化从特定外部源复制的表,问题是,一些单元格似乎从右向左填充,剩余的空间向左填充空格: