java 自动行高,20191012——POI设置单元格自动行高(思路)
在经过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设置单元格自动行高(思路)相关推荐
- 20191012——POI设置单元格自动行高(思路)
在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高.那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高 ...
- POI设置单元格自动行高的思路
在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高.那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高 ...
- POI 设置单元格格式,单元格合并,自动列宽等
POI 设置单元格格式,单元格合并,自动列宽等 设置单元格样式 设置单元格背景 设置单元格合并 解决合并单元格遗留空白边框问题 设置单元格列宽自适应 设置单元格样式 第一种:日期格式 cell.set ...
- poi设置单元格背景颜色
Java使用poi可以很方便地导出Excel表格文件,同时可以设置各种样式,例如背景颜色.下面给出两个例子设置背景颜色,一个使用自带的颜色设置背景颜色,一个使用自定义颜色设置. 使用内置的颜色设置单元 ...
- NPOI设置单元格宽和高
1.设置单元格宽 1.1 Excel中单元格的宽实际就是列宽,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度. 示例: HSSFWork ...
- java 修改表格颜色代码_workBook设置单元格颜色方法
背景介绍: 使用Java开发信息系统项目,项目中往往会涉及到报表管理部分,而Excel表格首当其冲称为最合适的选择,但是对单元格操作时对于设置单元格的背景颜色却很少提及,本文旨在方便单元格背景颜色设计 ...
- POI设置单元格格式
/**设置单元格格式为文本格式*/ HSSFCellStyle textStyle = workBook.createCellStyle(); HSSFDataFormat format = work ...
- poi 设置单元格边框
//设置单元格样式 CellStyle comm = workbook.createCellStyle(); comm.setAlignment(HorizontalAlignment.CENTER) ...
- php中调行高代码_PhpSpreadsheet设置单元格常用操作汇总
PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式.图片.日期.函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到. 在 ...
最新文章
- PHP函数之无极分类
- 【FluidSynth】SoundFont 音源文件资料收集 ( SoundFont 规范 | SoundFont 音源下载 | SoundFont 编辑器 | 博客资源 )
- phpcms v9二次开发及使用中各种问题解决方案(一)
- 华东交通大学2017年ACM双基程序设计大赛题解
- 强制修改上网本分辨率
- qt设置滚动区域的滚动条的样式
- 大信会计师事务所笔试题目_最新会计师事务所排名发布!CPA过两科的有机会了...
- Zend AMF 相关文章
- linux如何运行java程序,Linux环境下运行简单java程序
- Sketch 80 for mac(矢量绘图设计软件)
- linux连接小米随身wifi密码忘记了,小米随身wifi设置教程
- Vue仿微信朋友圈项目
- Windows路由表详解与双网卡访问慢问题解决
- mysql中 怎么插入反斜杠_MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义(转)...
- CentOS支持NTFS格式
- 吴恩达深度学习课程-Course 4 卷积神经网络 第一周 卷积神经网络编程作业(第一部分)
- Java代码审计(5)JavaEE介绍
- 使用 minikube 安装 k8s-cluster
- 淘口令解析api接口_淘口令解析-super19911115的博客-51CTO博客
- 算一下你来到这个世界多少天?
热门文章
- 腾达无线路由器网关和域名服务器,腾达(Tenda)A6无线路由器路由模式设置上网
- [sips]搭建opensip:ubuntu+ARM 64位
- 求解,为什么我的资源下载了四十多次但是没给我资源分
- 数字小写转换汉字大写
- 怎么监控多台服务器资源占用率,常用的4个服务器性能监控命令
- 极光开发者周刊【No.0709】
- 电子台账:模板制作之二——行过滤(垂直过滤)
- 计算机论文数学,计算机数学教学探讨论文
- 2020.3.18普及C组 音乐节拍(mnotes)【纪中】【二分】
- 1049: 平方和与立方和 ZZULIOJ