poi导出如何设定宽度_POI导出excel列宽自适应

让单元格宽度随着列和单元格值的宽度自适应:

//存储最大列宽

Map maxWidth = new HashMap<>();

// 将列头设置到sheet的单元格中

for (int n = 0; n < columnNum; n++) {

HSSFCell cellRowName = rowRowName.createCell(n); //创建列头对应个数的单元格

cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); //设置列头单元格的数据类型

HSSFRichTextString text = new HSSFRichTextString(columnName[n]);

cellRowName.setCellValue(text); //设置列头单元格的值

cellRowName.setCellStyle(columnTopStyle); //设置列头单元格样式

maxWidth.put(n, cellRowName.getStringCellValue().getBytes().length * 256 + 512);

}

sheet.createFreezePane(2, 1, 2, 1);

for (int i = 0; i < dataList.size(); i++) {

int j = 0;

Map map = dataList.get(i);//遍历每个对象

HSSFRow row = sheet.createRow(i + 1);//创建所需的行数

for (Object key : map.keySet()) {

HSSFCell cell = null; //设置单元格的数据类型

cell = row.createCell(j, HSSFCell.CELL_TYPE_STRING);

if (!"".equals(map.get(key)) && map.get(key) != null) {

cell.setCellValue(map.get(key).toString());

int length = cell.getStringCellValue().getBytes().length * 256 + 512;

//这里把宽度最大限制到15000

if (length > 15000) {

length = 15000;

}

maxWidth.put(j, Math.max(length, maxWidth.get(j)));

}

j++;

cell.setCellStyle(style); //设置单元格样式

}

}

for (int i = 0; i < columnName.length; i++) {

sheet.setColumnWidth(i, maxWidth.get(i));

}

列宽随着导出的列长自动适应:

//让列宽随着导出的列长自动适应

for (int colNum = 0; colNum < columnNum; colNum++) {

int columnWidth = sheet.getColumnWidth(colNum) / 256;

for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {

HSSFRow currentRow;

//当前行未被使用过

if (sheet.getRow(rowNum) == null) {

currentRow = sheet.createRow(rowNum);

} else {

currentRow = sheet.getRow(rowNum);

}

if (currentRow.getCell(colNum).getRichStringCellValue() != null) {

//取得当前的单元格

HSSFCell currentCell = currentRow.getCell(colNum);

int length = 0;

//如果当前单元格类型为字符串

if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {

try {

length = currentCell.getStringCellValue().getBytes().length;

} catch (Exception e) {

e.printStackTrace();

}

if (columnWidth < length) {

//将单元格里面值大小作为列宽度

columnWidth = length;

}

}

}

}

//再根据不同列单独做下处理

sheet.setColumnWidth(colNum, (columnWidth + 2) * 256);

}

使用POI生成Excel文件,可以自动调整excel列宽

//autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...

POI导出Excel文档通用工具方法

import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; imp ...

poi导出excel

Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...

POI导出excel的简单demo

目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...

POI导出Excel和InputStream存储为文件

POI导出Excel和InputStream存储为文件   本文需要说明的两个问题 InputStream如何保存到某个文件夹下 POI生成Excel POI操作utils类 代码如下.主要步骤如下: ...

POI导出EXCEL经典实现

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

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

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

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

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

重构:以Java POI 导出EXCEL为例

重构 开头先抛出几个问题吧,这几个问题也是这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...

随机推荐

Java 随机抽奖

package Third; import java.util.Scanner; public class LotteryOdds { public static void main(String[] ...

阿里云SLB后Nginx、Tomcat获取真实IP

一.SLB后Nginx如何获取真实IP 前提:nginx作为slb获取真实ip是使用 http_realip_module,默认一键安装包安装的nginx没有安装这个模块需要重新重新编译nginx并加 ...

form表单里如果只存在一个文本框,enter键提交

在这里说一说浏览器里form表单的默认行为 我们都知道浏览器是存在很多默认行为的,可能是出于常用行为考虑又或者是历史原因.但有时候我们不需要这些默认行为.以下: 1).当form表单里只存在一个inp ...

Socket 入门- 客户端回射程序

结果输出:------------------------------------------------------客户端:xx@xxxxxx:~/Public/C$ ./postBackCli.o ...

PHP使用mail&lpar;&rpar;函数发送邮件流程以及注意事项

1. 配置 php.ini sendmail_path = /usr/sbin/sendmail -f yourname@sth.com -t -i 2. 使用函数 mail($to, $subjec ...

php中json&lowbar;encode中文编码问题分析

众所周知使用json_encode可以方便快捷地将对象进行json编码,但是如果对象的属性中存在着中文,问题也就随之而来了.json_encode会将中文转换为unicode编码例如:'胥'经过jso ...

总结的OSM 地图相关的分析

How OSM works:  Tile Format: png,  z: levels [0- 18], x: Latitude [0- ], y: Longitude [0- ];         ...

向量 dot cross product 点积叉积 几何意义

向量 dot cross product 点积叉积 几何意义 有向量 a b 点积 a * b = |a| * |b| * cosθ 几何意义: 1. a * b == 0,则 a ⊥ b 2. a ...

Python3爬虫 利用百度地图api得到城市经纬度

有2种方式,第一种是利用urllib , 方法1:利用urllib , 先把url 转成urlcode,然后读取网页,读到网页再用json读取内容,比较麻烦. 可以在浏览器输入,看一下格式. http ...

JAVA-Unit02: Oracle字符串操作 、 Oracle数值操作 、 Oracle日期操作 、 空值操作

Unit02: Oracle字符串操作 . Oracle数值操作 . Oracle日期操作 . 空值操作 DQL数据查询语言 查询语句基本由SELECT子句由FROM子句构成. SELECT子句指定要 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值