装载自 http://blog.csdn.net/z69183787/article/details/48133809

解决了我数字前面有0被省略问题

做过很多次导出excel了。都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法。。。

弄过好几次都没有解决,最近又要导出excel了,下决心一定要找到解决办法 

自己在excel里测试过,较长的数字,都会自动变成科学计数法,除非我们把单元格格式设置成“文本型” 

哈哈,似乎找到了思路:用poi先把单元格设置成“文本型”就可以了把。 

从文档里找到了这个方法HSSFCell.setCellType(int type),怎么看这个方法都可以设置单元格格式。 

代码中加入cell.setCellType(HSSFCell.CELL_TYPE_STRING),还是没有任何变化。。。 

又一次陷入无助状态 

从google搜索了半天,找到了这篇文章 

http://javacrazyer.iteye.com/blog/894758,博主写的非常详细,从原理到解决方法都有了 

思路还是那样,设置单元格格式为“文本型” 

下面直接阐述下真正的解决方法: 



1 //创建workBook 

2  HSSFWorkbook wb = new HSSFWorkbook(); 

3  //创建一个样式 

4  HSSFCellStyle cellStyle = wb.createCellStyle(); 

5 //创建一个DataFormat对象 

6 HSSFDataFormat format = wb.createDataFormat(); 

7 //这样才能真正的控制单元格格式,@就是指文本型,具体格式的定义还是参考上面的原文吧 

8 cellStyle.setDataFormat(format.getFormat("@")); 



10 //具体如何创建cell就省略了,最后设置单元格的格式这样写

11 cell.setCellStyle(cellStyle);

当我们把web页面上的数据导成excel形式时,有时候我们的数据需要以特定的格式呈现出来,这时候我们就需要给cell添加一些样式规格信息。

首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式:

1)  文本:vnd.ms-excel.numberformat:@

2)  日期:vnd.ms-excel.numberformat:yyyy/mm/dd

3)  数字:vnd.ms-excel.numberformat:#,##0.00

4)  货币:vnd.ms-excel.numberformat:¥#,##0.00

5)  百分比:vnd.ms-excel.numberformat: #0.00%

这些格式你也可以自定义,比如年月你可以定义为:yy-mm等等。那么知道了这些格式,怎么去把这些格式添加到cell中呢?很简单,我们只需要把样式添加到对应的标签对(即闭合标签)即可。如<td></td>,给标签对<td></td>添加样式,如下:

view plaincopy to clipboardprint?

<td style="vnd.ms-excel.numberformat:@">410522198402161833</td>  

<td style="vnd.ms-excel.numberformat:@">410522198402161833</td>

同样,我们也可以给<div></div>添加样式,也可以给<tr></tr>,<table></table>添加样式,这样就会引入一个问题,你注意到了吗?先看如下的代码:

view plaincopy to clipboardprint?

<table style=’vnd.ms-excel.numberformat:#,##0.00’>  

   <tr>

<td>542</td>  

       <td style=’vnd.ms-excel.numberformat: #0.00%’>0.25</td>  

    </tr>  

</table>  

<table style=’vnd.ms-excel.numberformat:#,##0.00’>

    <tr>

        <td>542</td>

        <td style=’vnd.ms-excel.numberformat: #0.00%’>0.25</td>

    </tr>

</table>

poi导出excel,以字符串格式输出数字的更多相关文章

  1. 用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)

    做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法... 弄过好几次都没有解决,最近又要导出excel ...

  2. 使用Apache POI导出Excel小结--导出XLS格式文档

    使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...

  3. POI导出EXCEL经典实现

    1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...

  4. Java POI 导出EXCEL经典实现 Java导出Excel

    转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...

  5. java中使用poi导出excel表格数据并且可以手动修改导出路径

    在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下

  6. POI导出EXCEL经典实现(转)

    http://www.cnblogs.com/xwdreamer/archive/2011/07/20/2296975.html 1.Apache POI简介 Apache POI是Apache软件基 ...

  7. 使用POI导出excel基础篇

    最近搞了下POI导出Excel,听说很多次,却是第一次搞. 在pom.xml中引入依赖 <dependency> <groupId>org.apache.poi</gro ...

  8. 重构:以Java POI 导出EXCEL为例

    重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...

  9. Java之POI导出Excel(一):单sheet

    相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码  <!-- ...

随机推荐

  1. ubuntu14.04安装zabbix

    1. apt-get updateapt-get install apache2 mysql-server libapache2-mod-php5 php5-gd php5-mysql php5-co ...

  2. KEY

    typedef struct st_key { uint key_length; /* Tot length of key */ ulong flags; /* dupp key and pack f ...

  3. Spark 错误日志中看到的一些问题

    2014-4-23 18:42:09 org.jivesoftware.spark.util.log.Log error 严重: Unable to contact shared group info ...

  4. 趣味测试类微信小程序

    先说说项目需求吧, l  点击[再测一次],重新开始测试流程,主持人回复第一个题目,流程同上:答完全部题目后,底部不显示[立即开始分析]按钮,而是直接展示结果,且上一次测试内容不清空:如退出再进来,则 ...

  5. Java/Android 网络请求框架/库

    Android 图片缓存框架  最上面的最优先 com.facebook.fresco:fresco:0.12.0                7.26.2016最新 Universal-Image ...

  6. 更改kindeditor编辑器,改用支持h5的video标签替换原有embed标签

    kindeditor是一款不错的可视化编辑器,不过最近几年似乎没在更新,现在h5趋于主流,正好有个业务需要编辑器支持mp4视频的播放,考虑到现在h5中的video标签的强大,于是决定将原来系统中的em ...

  7. npm全局安装和局部文件安装区别

    全局安装往往是安装一个工具,他不是安装在一个文件夹下,而是安装在某个全局环境下,如目前我的安装路径是: C:\Users\cvter\AppData\Roaming\npm 在这里,我们可以看到所有全 ...

  8. mysql_connect(): Headers and client library minor version mismatch.

    查询当前Client 版本,结果如下: Client API version => 5.6.31Client API library version => 5.6.31Client API ...

  9. Android多渠道打包工具

    http://www.cnblogs.com/huangtianhui/archive/2012/07/14/2591382.html 鉴于Android市场众多,基于各种利益考虑,以及未来app能够 ...

  10. 解决Eclipse中Android SDK Manager图标不见了的问题

    在Eclipse中安装完ADT后,发现 Android SDK Manager图标不见了,Android Virtual Device Manager图标也不见了. 解决这个问题,可用如下方法: 打开 ...