POI 导出excel带小数点的数字格式显示不对解决方法
最近看到了一个问题就是java导出excel中带小数点的数字显示不对, 比如我想在excel中第一行显示: 3,000.0 但是在excle中导出的格式总是不带小数点 3000(非文本格式),而且也不是以金融格式显示的。这时候我们的解决方法是要为单元格中的数字设置dataformat。代码如下 import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; public class ExcelUtil { public void testWriteExcel() {
String excelPath = "d:/test.xls"; HSSFWorkbook workbook = null; try { // XSSFWorkbook used for .xslx (>= 2007), HSSWorkbook for 03 .xsl workbook = new HSSFWorkbook();// XSSFWorkbook();//WorkbookFactory.create(inputStream); } catch (Exception e) { System.out.println("创建Excel失败: "); e.printStackTrace(); } if (workbook != null) { Sheet sheet = workbook.createSheet("测试数据"); Row row0 = sheet.createRow(0); for (int i = 0; i < 6; i++) { double test = 3000.0; Cell cell = row0.createCell(i, Cell.CELL_TYPE_NUMERIC); CellStyle cellStyle = workbook.createCellStyle(); HSSFDataFormat df = workbook.createDataFormat(); //此处设置数据格式 cellStyle.setDataFormat(df.getFormat("#,#0.0")); //小数点后保留两位,可以写contentStyle.setDataFormat(df.getFormat("#,#0.00")); cell.setCellStyle(cellStyle); cell.setCellValue( test ); } try { FileOutputStream outputStream = new FileOutputStream(excelPath); workbook.write(outputStream); outputStream.flush(); outputStream.close(); } catch (Exception e) { System.out .println("写入Excel失败: "); e.printStackTrace(); } }
} public static void main(String[] args) { ExcelUtil eu = new ExcelUtil(); eu.testWriteExcel(); }
}
当没设置format的时候,光设置CELL_TYPE_NUMERIC只能让数字在excel中显示为数字类型(非文本类型,而不能保证它小数位和金融格式(每位一个逗号)。
所以如果要达到要求就必须要设置cell的dataformat如上代码所示。
CellStyle cellStyle = workbook.createCellStyle(); HSSFDataFormat df = workbook.createDataFormat(); //此处设置数据格式 cellStyle.setDataFormat(df.getFormat("#,#0.0")); //小数点后保留两位,可以写contentStyle.setDataFormat(df.getFormat("#,#0.00")); cell.setCellStyle(cellStyle);
这几行代码起了绝对的作用。最后结果如下图说是:
POI 导出excel带小数点的数字格式显示不对解决方法的更多相关文章
- 使用Apache POI导出Excel小结--导出XLS格式文档
使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...
- 用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)
做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法... 弄过好几次都没有解决,最近又要导出excel ...
- Java之POI导出Excel(一):单sheet
相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码 <!-- ...
- POI导出EXCEL经典实现
1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...
- Java POI 导出EXCEL经典实现 Java导出Excel
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
- java中使用poi导出excel表格数据并且可以手动修改导出路径
在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下
- POI导出EXCEL经典实现(转)
http://www.cnblogs.com/xwdreamer/archive/2011/07/20/2296975.html 1.Apache POI简介 Apache POI是Apache软件基 ...
- 使用POI导出excel基础篇
最近搞了下POI导出Excel,听说很多次,却是第一次搞. 在pom.xml中引入依赖 <dependency> <groupId>org.apache.poi</gro ...
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
随机推荐
- pandas中数据框的一些常见用法
1.创建数据框或读取外部csv文件 创建数据框数据 """ 设计数据 """ import pandas as pd data = {&qu ...
- stm32CubeMx 实现单通道ADC DMA采集
今天要做的是ADC单通道DMA采集实验 MCU : STM32F429 开发工具:STM32CubeMx 版本号 5.0.0 实验目的:实现ADC1 13通道 DMA采集 一 :简介 首先,我们来看一 ...
- Linux Intro - Remove 302 字符
I have a file originally provided from a SQL database on a Windows platform. I transfer the file via ...
- Oracle 数据库管理员及管理员的作用
以下测试实例均在Oracle11gr2下测试!!! 一.简介:每个Oracle数据库应该至少有一名数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库,可能需要多个db ...
- 【c++】常识易混提示
1. struct 和 class 唯一的区别:默认的成员保护级别和默认的派生保护级别不同(前者为public,后者为private). 2. int *p = new int[23]; de ...
- 关于android studio2.3和android studio3.0
今天又重新把androidstudio2.3重新装上了,实在是受不了android studio3.0了,太恶心人了 说一下为何改用android studio3.0: 优点: 1. 如果只是写纯应用 ...
- SQL Server 2008中的MERGE(数据同步)
OK,就像标题呈现的一样,SQL Server 2008中的MERGE语句能做很多事情,它的功能是根据源表对目标表执行插入.更新或删除操作.最典型的应用就是进行两个表的同步. 下面通过一个简单示例来演 ...
- ASP.NET Web API根据代码注释生成Help文档
使用Visual Studio新建一个ASP.NET Web API项目,直接运行,查看Help文档可以看到如下的API帮助说明 如何在Description中显示描述. 1. 打开Controlle ...
- Query performance optimization of Vertica
Don't fetch any data that you don't need,or don't fetch any columns that you don't need. Because ret ...
- 记一次java程序内存溢出问题
一个自然语言处理程序,在封装为web-service后,部署到线上运行. 但最近出现了内存溢出的情况,频繁的out of memory. 先盲目尝试在启动脚本中增加-XX:-UseGCOverhead ...