当使用POI导出Excel的时候,遇到了比较长的数字,虽然在Java代码中使用了强制转换为文本,但是输出到Excel还是会变成数字类型,实际得到的是一个double,而且当长度大一点的时候就会变成科学计数法形式。
即使是加上POI提供的强制设置Excel单元格为文本类型的代码,也对这个问题起不了关键性的作用。
HSSFCellStyle dataStyle = wb.createCellStyle();
dataStyle.setDataFormat(format.getFormat("@"));
因此这实际上是一个double怎么转换成完全的字符串的问题了,这时候就可以使用DecimalFormat对这个double进行格式化,随后使用format方法获得的String就是你想要的值了。
DecimalFormat df = new DecimalFormat("0.00"); String whatYouWant = df.format(1234567890.666);
通过这样格式化之后,Excel就不能将该字符串识别为数字类型,并在长度较大的时候自动转化成科学计数法形式了。
"成熟的可怕在于,很多曾经看起来很复杂的事情,现在一眼就看穿了。"