Poi' characted似乎是自动添加的

时间:2014-06-18 16:05:37

标签: java excel apache-poi

我使用POI 3.1生成xlsx文件。

这个角色'在我的手机中自动添加

cell = row.createCell(0);
cell.setCellValue(atm.getEnvelop());

   cell = row.createCell(1);
   cell.setCellType(Cell.CELL_TYPE_NUMERIC);
   cell.setCellValue(atm.getAmount().replace(".", ","));

atm.getEnvelop()和atm.getAmount()是字符串

atm.getEnvelop()值是8635但是当我检入生成的文件时我得到:' 8635

另一个

同样的事情

值是200,00我得到' 200,00

任何想法?

3 个答案:

答案 0 :(得分:6)

您的问题是您正在调用cell.setCellValue(String),这会自动将单元格类型设置为字符串

如果要设置数字单元格类型(因此Excel中没有'前缀),则需要为Apache POI提供一个不是字符串的数字。

此代码将在Excel中设置'200.00

String s200 = "200.00";
cell.setCellValue(s200);

虽然这个会在Excel中为您提供200.00

// Once per workbook - tell excel to format with with two decimal points
DataFormat fmt = wb.createDataFormat()
CellStyle cs = wb.createCellStyle();
cs.setDataFormat(fmt.getFormat("0.00"));

// Once per cell
double d200 = 200.0;
cell.setCellValue(d200);
cell.setCellStyle(cs);

对于您的情况,您的号码似乎是以字符串形式出现的,您需要在将其分配给数字(例如,双倍)之前将其解析为POI

答案 1 :(得分:1)

在cell.setCellType(Cell.CELL_TYPE_NUMERIC)的地方; 使用cell.setCellType(CELL_TYPE_STRING);

因为把char''是数值的excel属性。

它可以帮到你。

答案 2 :(得分:0)

我不确定,但我猜你试图从Cell.Cell_TYPE_STRING的单元格中获取一个整数。尝试通过调用以下方法从单元格中获取金额:cell.getNumericCellValue()