最近在做导出Excel的功能封装,遇到了几个问题:

单元格宽度问题

数据不是数字格式问题

格式化了之后显示的不是数字而是######的问题(其实是因为单元格宽度不够导致的无法显示格式化之后的内容)

下面先说说解决方法:

1、单元格宽度问题

这个问题有两个解决办法,一个是

sheet.autoSizeColumn(1);

sheet.autoSizeColumn(1, true);

这种是自适应,第一参数是列号,从0开始,第二参数是是否考虑合并单元格。

还有一种是固定的多宽,这个宽度值就交给自己去测试了:

sheet.setColumnWidth(1, 5000)

这个第二个参数是宽度,具体上面说了自己测试。5000就很宽了,看放什么了。

2、数据不是数字格式问题

这个看api的感觉应该是设置这么个参数,cell.setCellType(Cell.CELL_TYPE_NUMERIC);

但是实际上这个参数设置了不起作用,后来发现自己放的值是String类型,所以不行,后来改为了Double.valueOf(str)方法,发现还是不行,换成Double.parseDouble(str)就行了,原来前面的方法返回的是Double,后面的是double,封装类型也不行。。。

后来就统一把所有的参数设置为Object类型了,这样好转。

3、格式化后显示###

这里是因为宽度不够啦,所以我这里主要说一下怎么格式化好了。

其实Excel本身带了一部分的格式化,见下图

如上图所示,Excel自带了一部分格式,而poi的DataFormat中也自带了这些格式并对应了short值,如下所示:

内置数据类型

编号

"General"

0

"0"

1

"0.00"

2

"#,##0"

3

"#,##0.00"

4

"($#,##0_);($#,##0)"

5

"($#,##0_);[Red]($#,##0)"

6

"($#,##0.00);($#,##0.00)"

7

"($#,##0.00_);[Red]($#,##0.00)"

8

"0%"

9

"0.00%"

0xa

"0.00E+00"

0xb

"# ?/?"

0xc

"# ??/??"

0xd

"m/d/yy"

0xe

"d-mmm-yy"

0xf

"d-mmm"

0x10

"mmm-yy"

0x11

"h:mm AM/PM"

0x12

"h:mm:ss AM/PM"

0x13

"h:mm"

0x14

"h:mm:ss"

0x15

"m/d/yy h:mm"

0x16

保留为过国际化用

0x17 - 0x24

"(#,##0_);(#,##0)"

0x25

"(#,##0_);[Red](#,##0)"

0x26

"(#,##0.00_);(#,##0.00)"

0x27

"(#,##0.00_);[Red](#,##0.00)"

0x28

"_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)"

0x29

"_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)"

0x2a

"_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)"

0x2b

"_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)"

0x2c

"mm:ss"

0x2d

"[h]:mm:ss"

0x2e

"mm:ss.0"

0x2f

"##0.0E+0"

0x30

"@" - This is text format

0x31

使用下面的代码来设置

1

2

3

4

CellStylecellStyle=workBook.createCellStyle();

DataFormatformat=workBook.createDataFormat();

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

cell.setCellStyle(cellStyle);

接下来我会举例日期、小数、货币、百分比、中文大写、科学计数几种方式的格式化:

1、日期格式

Java

1

2

3

4

5

6

cell.setCellValue(newDate(2008,5,5));

//set date format

CellStylecellStyle=workBook.createCellStyle();

DataFormatformat=workBook.createDataFormat();

cellStyle.setDataFormat(format.getFormat("yyyy-MM-dd"));

cell.setCellStyle(cellStyle);

2、小数格式

Java

1

2

3

4

cell.setCellValue(1.2);

CellStylecellStyle=workBook.createCellStyle();

cellStyle.setDataFormat(DataFormat.getBuiltinFormat("0.00"));

cell.setCellStyle(cellStyle);

3、货币格式

Java

1

2

3

4

5

cell.setCellValue(20000);

CellStylecellStyle=workBook.createCellStyle();

DataFormatformat=workBook.createDataFormat();

cellStyle.setDataFormat(format.getFormat("¥#,##0"));

cell.setCellStyle(cellStyle);

4、百分比格式

Java

1

2

3

4

cell.setCellValue(20);

CellStylecellStyle=workBook.createCellStyle();

cellStyle.setDataFormat(DataFormat.getBuiltinFormat("0.00%"));

cell.setCellStyle(cellStyle);

5、中文大写格式

Java

1

2

3

4

5

cell.setCellValue(20000);

CellStylecellStyle=workBook.createCellStyle();

DataFormatformat=workBook.createDataFormat();

cellStyle.setDataFormat(format.getFormat("[DbNum2][$-804]0"));

cell.setCellStyle(cellStyle);

6、科学计数格式

Java

1

2

3

4

cell.setCellValue(20000);

CellStylecellStyle=workBook.createCellStyle();

cellStyle.setDataFormat(DataFormat.getBuiltinFormat("0.00E+00"));

cell.setCellStyle(cellStyle);

这里面一部分使用的是DataFormat.getBuiltinFormat(),是由于这部分格式化是Excel中自带的格式,具体自带的格式大家可以自己打开Excel看看,上图也有截出一部分。

到此POI的Excel的单元格格式化方式的一些问题就解决了。

setcellvalue 格式_POI对Excel单元格的格式的设置参数相关推荐

  1. 撩妹奇招——修改Excel单元格默认格式

    每次打开Excel输入数据的时候,是不是很不喜欢那丑得要命的等线字体?是不是在单元格中输入长度太长的内容后部分内容显示到相邻单元格的位置中去了,在相邻单元格输入时,前面单元格中超长的内容看不见了?这些 ...

  2. vue数据定义格式_用好单元格自定义格式,让Excel按照你的要求显示数据

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力!#百校助力高考加油站# Excel表格中的数据,我们通常会根据需求,选择设置单元格格式,然后再选择数据类型:数值.文本.日期 ...

  3. hutool导出excel 设置单元格日期格式 poi设置excel单元格日期格式

    hutool导出导入excel很方便,但没有依赖poi,需要手动添加poi依赖. <properties><poi.version>4.1.2</poi.version& ...

  4. Txt格式文件导入Excel单元格

    目录: 一.导入数据 二.处理数据 1.导入数据 2.列化处理 3.数据按每5列为一行排列 4.数据转为十进制 -------------------------------------------- ...

  5. nopi设置excel单元格的格式汇总

    public void ModifySheetCellFormat()         {             #region 打开Excel表格模板,并初始化到NPOI对象中           ...

  6. C# Excel.Range类实现对Excel单元格文本格式的设置

    Excel.Range titleRange_A = newWorksheet.get_Range(newWorksheet.Cells[2, 2], newWorksheet.Cells[2, 2] ...

  7. java excel 单元格 斜线_JAVA POI EXCEl单元格内部分字符设置样式 HSSFRichTextString用法...

    public static HSSFFont font(HSSFWorkbook wb) { HSSFFont font = (HSSFFont) wb.createFont(); //font.se ...

  8. java excel单元格背景色_POI 设置Excel单元格背景色(setFillForegroundColor)

    背景介绍: 使用Java开发信息系统项目,项目中往往会涉及到报表管理部分,而Excel表格首当其冲称为最合适的选择,但是对单元格操作时对于设置单元格的背景颜色却很少提及,本文旨在方便单元格背景颜色设计 ...

  9. 表格大小设置_系统地学习Excel第18课,设置单元格字体格式

    上一篇:系统地学习Excel第17课,设置单元格格式 本篇内容结构如下: 本篇在章节中的位置 单元格字体格式包括字体.字号.字形.颜色等.Excel中文版默认单元格: 字体为[宋体]或[等线]: 字号 ...

最新文章

  1. 《响应式web设计》读书笔记(三)拥抱流式布局
  2. TCP/ip通信模式
  3. vue 实现数据滚动显示_vue实现动态添加数据滚动条自动滚动到底部的示例代码...
  4. problem a: 简单的整数排序_python里的排序
  5. 2019年Java开发者进阶手册.pdf
  6. [转]查看linux服务器硬盘IO读写负载
  7. LR11录制手机/pad App脚本多种方法介绍(Mobile App补丁包)
  8. Python代码规范
  9. java关系操作符==和equals()区别
  10. 很酷的CSS3仿Facebook登录表单
  11. 六度空间的应用——找出两个陌生人之间的关系(二)
  12. Xshell和Xftp免费版下载安装
  13. javascript animation lib greensock gsap介绍
  14. 如何将png转换成jpg呢?
  15. silk lobe资源公众号_电视剧资源免费看公众号【推荐】
  16. OPNsense用户手册-别名
  17. 花都平安保险应该找谁?
  18. 美国弗吉尼亚大学计算机科学,弗吉尼亚大学研究生计算机科学排名关键消息重点总结...
  19. 下载 | 数学分析八讲(修订版)
  20. jwt的token要存mysql吗_认证的token不存到数据库

热门文章

  1. q7goodies事例_Java 8 Friday Goodies:Lambda和排序
  2. 借助Fargate和EKS,AWS甚至可以实现Cloud-ier和Kuberneties-ier
  3. Java Maven和Gradle构建的主题缓存
  4. Java命令行界面(第26部分):CmdOption
  5. stackexchange_通过Spring Social推特StackExchange –第1部分
  6. apache camel_Apache Camel入门
  7. 使用Boxfuse为您的REST API设置https
  8. JUnit 5 –架构
  9. xml对象映射_将对象映射到多个XML模式–天气示例
  10. java核心面试_不正确的核心Java面试答案