在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高。那如何通过Java代码来实现呢?请看下面步骤:

(一)首先,将excel设置为最合适的行高,通过CTRow对象的setCustomHeight(false)函数实现,具体的代码如下:

XSSFWorkbook workbook = new XSSFWorkbook(文件路径或者文件流);

XSSFSheet sheet = workbook.getSheet(sheetIndex);

XSSFRow xssfRow = sheet.getRow(rowIndex);

CTRow ctRow = xssfRow.getCTRow();

ctRow.setCustomHeight(false);

(二)然后,循环每个sheet页的行,通过XSSFCell的setWrapText(true),就可以设置单元格自动换行,并且自动调整行高,将单元格内容全部显示出来;

(三)最后,对于合并的单元格,只能是通过XSSFRow的setHeight(行高值)来设置,这里说一下思路:

(1)通过sheet获取当前sheet页总共有哪些合并的单元格,例如List listCombineCell = sheet.getMergedRegions();

(2)计算合并单于格的高度和宽度,采用循环的方式求的每一行的高度之和或者是每一列的宽度之和;

(3)获取合并单元格的内容,首先统计中文字符的个数,然后使用String的getByte().length获取字节数,加上中文字符的个数,最后将这两者之和乘以256(为何要乘以256,可以看POI中获取列宽的源码,在里面除以列256),这样得到了内容的长度;

(4)若内容的长度小于合并单元格的宽度,就不需要进行行高设置了;若内容的长度大于合并单元格的宽度,那么通过合并单元格的宽度除以内容的长度,计算内容需要多少行才能全部显示出来,这里采用取比商大的最小整数;

(5)计算合并单元格字体的高度,然后乘以内容需要的行数(第4步中求得的行数),得到内容需要的总高度;

(6)判断合并单元格是否是行合并(通过起始行号和终止行号是否相等来判断,若相等就不是行合并,否则就是行合并),若是行合并的情况,那么就需要计算是由多少行合并的(终止行号减去起始行号,再加一),接着计算每一行需要的平均高度(单元格内容的总高度除以行合并的单元格的行数),然后通过循环设置行合并的单元格区域的每一行所需要的平均高度。若不是行合并的单元格,那么直接将行高设置为单元格内容所需的总高度即可。

java 自动行高,20191012——POI设置单元格自动行高(思路)相关推荐

  1. 20191012——POI设置单元格自动行高(思路)

    在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高.那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高 ...

  2. POI设置单元格自动行高的思路

    在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高.那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高 ...

  3. POI 设置单元格格式,单元格合并,自动列宽等

    POI 设置单元格格式,单元格合并,自动列宽等 设置单元格样式 设置单元格背景 设置单元格合并 解决合并单元格遗留空白边框问题 设置单元格列宽自适应 设置单元格样式 第一种:日期格式 cell.set ...

  4. poi设置单元格背景颜色

    Java使用poi可以很方便地导出Excel表格文件,同时可以设置各种样式,例如背景颜色.下面给出两个例子设置背景颜色,一个使用自带的颜色设置背景颜色,一个使用自定义颜色设置. 使用内置的颜色设置单元 ...

  5. NPOI设置单元格宽和高

    1.设置单元格宽 1.1 Excel中单元格的宽实际就是列宽,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度. 示例: HSSFWork ...

  6. java 修改表格颜色代码_workBook设置单元格颜色方法

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

  7. POI设置单元格格式

    /**设置单元格格式为文本格式*/ HSSFCellStyle textStyle = workBook.createCellStyle(); HSSFDataFormat format = work ...

  8. poi 设置单元格边框

    //设置单元格样式 CellStyle comm = workbook.createCellStyle(); comm.setAlignment(HorizontalAlignment.CENTER) ...

  9. php中调行高代码_PhpSpreadsheet设置单元格常用操作汇总

    PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式.图片.日期.函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到. 在 ...

最新文章

  1. PHP函数之无极分类
  2. 【FluidSynth】SoundFont 音源文件资料收集 ( SoundFont 规范 | SoundFont 音源下载 | SoundFont 编辑器 | 博客资源 )
  3. phpcms v9二次开发及使用中各种问题解决方案(一)
  4. 华东交通大学2017年ACM双基程序设计大赛题解
  5. 强制修改上网本分辨率
  6. qt设置滚动区域的滚动条的样式
  7. 大信会计师事务所笔试题目_最新会计师事务所排名发布!CPA过两科的有机会了...
  8. Zend AMF 相关文章
  9. linux如何运行java程序,Linux环境下运行简单java程序
  10. Sketch 80 for mac(矢量绘图设计软件)
  11. linux连接小米随身wifi密码忘记了,小米随身wifi设置教程
  12. Vue仿微信朋友圈项目
  13. Windows路由表详解与双网卡访问慢问题解决
  14. mysql中 怎么插入反斜杠_MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义(转)...
  15. CentOS支持NTFS格式
  16. 吴恩达深度学习课程-Course 4 卷积神经网络 第一周 卷积神经网络编程作业(第一部分)
  17. Java代码审计(5)JavaEE介绍
  18. 使用 minikube 安装 k8s-cluster
  19. 淘口令解析api接口_淘口令解析-super19911115的博客-51CTO博客
  20. 算一下你来到这个世界多少天?

热门文章

  1. 腾达无线路由器网关和域名服务器,腾达(Tenda)A6无线路由器路由模式设置上网
  2. [sips]搭建opensip:ubuntu+ARM 64位
  3. 求解,为什么我的资源下载了四十多次但是没给我资源分
  4. 数字小写转换汉字大写
  5. 怎么监控多台服务器资源占用率,常用的4个服务器性能监控命令
  6. 极光开发者周刊【No.0709】
  7. 电子台账:模板制作之二——行过滤(垂直过滤)
  8. 计算机论文数学,计算机数学教学探讨论文
  9. 2020.3.18普及C组 音乐节拍(mnotes)【纪中】【二分】
  10. 1049: 平方和与立方和 ZZULIOJ