装载自 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. appium+android各配置参数获取'platformName'、'platformVersion'、appActivity、deviceName、webdriver.Remote

    图中1的获取--'platformName'.'platformVersion' 点击appium右上角的运行按钮,可通过上面查看platformName 和 platformVersion 平台版本 ...

  2. POJ_3264 Balanced Lineup 【线段树 + 区间查询】

    一.题面 POJ3264 二.分析 典型的线段树的题,没有更新只有查询. 查询的时候需要注意的是,在判断区间是完全属于右子树还是左子树时,要根据建树的情况来选择,不然会出错.具体看代码 三.AC代码 ...

  3. 编译安装php-5.3.27报错:make: *** [sapi/fpm/php-fpm] 错误 1

    安装PHP的时候make报错:make: *** [sapi/fpm/php-fpm] Error 1 原因:Centos6.8之后已经将iconv库加进来了,如果再安装libiconv库相当于重复一 ...

  4. 二级C语言真题笔记

    二级C语言真题笔记 1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include <stdio.h> main() {     short i ...

  5. STM32的GPIO工作原理 | 附电路图详细分析

    STM32的GPIO介绍 STM32引脚说明 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚.GPIO的引脚与外部硬件设备连接,可实现与外部通讯.控制外部硬件或者采集外部硬件数据的功能. ...

  6. Celery 分布式任务队列快速入门 以及在Django中动态添加定时任务

    Celery 分布式任务队列快速入门 以及在Django中动态添加定时任务 转自 金角大王 http://www.cnblogs.com/alex3714/articles/6351797.html ...

  7. tess4j 注意事项

    依赖: <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4 ...

  8. 正则表达式控制Input输入内容 ,js正则验证方法大全

    https://blog.csdn.net/xushichang/article/details/4041507 //输入姓名的正则校验 e.currentTarget.value = e.curre ...

  9. [JAVA]Apache FTPClient操作“卡死”问题的分析和解决

    最近在和一个第三方的合作中不得已需要使用FTP文件接口.由于FTP Server由对方提供,而且双方背后各自的网络环境都很不单纯等等原因,造成测试环境无法模拟实际情况.测试环境中程序一切正常,但是在部 ...

  10. ps如何替换有透明图片的颜色

    修改透明图片的颜色 首先用魔棒工具点选颜色区域,然后再在菜单中找到 图像-调整-替换颜色,就可以选任意想要的颜色