excel导出设置自动列宽

核心代码:

for (int i = 0; i < maxColumn; i++) {sheet.autoSizeColumn(i);sheet.setColumnWidth(i,sheet.getColumnWidth(i)*17/14);  //此行就是设置动态列宽的比例,可以调整17和14的值来按比例展示}

其它代码:

package com.simt.hestar.admin.utils;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;import javax.servlet.http.HttpServletResponse;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** excel批量导出工具类* ***/
public class ExcelBatchExportUtil {private static final Logger log = LoggerFactory.getLogger(ExcelBatchExportUtil.class);private static final ThreadLocal<Workbook> excelWorkBook = new ThreadLocal<Workbook>();/*** 导出excel* * @param fileName* @param headers* @param datas* @param response*/public static void excelExport(Integer offset, Integer totalCount , String fileName, String[] headers, List<Object[]> datas,HttpServletResponse response) {Workbook workbook = doWorkbookSheet(offset, headers, datas);if(totalCount <= (offset+ datas.size())) {try {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();workbook.write(byteArrayOutputStream);String suffix = ".xls";response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Content-Disposition","attachment;filename=" + new String((fileName + suffix).getBytes("gbk"), "iso-8859-1"));OutputStream outputStream = response.getOutputStream();outputStream.write(byteArrayOutputStream.toByteArray());outputStream.close();byteArrayOutputStream.close();workbook.close();excelWorkBook.set(null);} catch (IOException e) {log.error("ExcelBatchExportUtil.excelExport IOException:{}", e);}}}private static Workbook doWorkbookSheet(Integer offset, String[] headers, List<Object[]> datas) {Workbook workbook = excelWorkBook.get();if (workbook == null) {workbook = new HSSFWorkbook();excelWorkBook.set(workbook);}Sheet sheet = null;if(0 == offset) {sheet = workbook.createSheet();Row row = null;Cell cell = null;CellStyle style = workbook.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER_SELECTION);Font font = workbook.createFont();int line = 0, maxColumn = 0;if (headers != null && headers.length > 0) {// 设置列头row = sheet.createRow(line++);row.setHeightInPoints(23);font.setBold(true);font.setFontHeightInPoints((short) 13);style.setFont(font);maxColumn = headers.length;for (int i = 0; i < maxColumn; i++) {cell = row.createCell(i);cell.setCellValue(headers[i]);cell.setCellStyle(style);}}addData2Sheet(sheet, offset, datas);} else {sheet = workbook.getSheetAt(0);addData2Sheet(sheet, offset, datas);}return workbook;}private static void addData2Sheet(Sheet sheet, Integer offset, List<Object[]> datas) {Row row = null;Cell cell = null;int line = sheet.getLastRowNum() + 1, maxColumn = 0;if (datas != null && datas.size() > 0) {// 渲染数据for (int index = 0, size = datas.size(); index < size; index++) {Object[] data = datas.get(index);if (data != null && data.length > 0) {row = sheet.createRow(line++);row.setHeightInPoints(20);int length = data.length;if (length > maxColumn) {maxColumn = length;}for (int i = 0; i < length; i++) {cell = row.createCell(i);cell.setCellValue(data[i] == null ? null : data[i].toString());}}}}for (int i = 0; i < maxColumn; i++) {sheet.autoSizeColumn(i);sheet.setColumnWidth(i,sheet.getColumnWidth(i)*17/14);}}}

excel导出设置自动列宽相关推荐

  1. EasyExcel设置自动列宽

    EasyExcel 可以通过设置自动列宽来调整表格中列的宽度.具体方法如下: 使用autoSizeColumn()方法:您可以通过调用autoSizeColumn()方法来设置自动列宽.该方法需要您指 ...

  2. PYTHON模块openpyxl在导出EXCEL文件时设置自动列宽

    搜索了一些网上的方法,直接搬运别人的代码总是不满意最后的效果,所以最后在参考了网上的方法做了一些调整. 大致思路就是找出每一列的字符串最大长度,直接设置列宽值为最大长度+2,由于python在识别字符 ...

  3. PHPExcel设置自动列宽

    代码方式一 使用strlen与iconv $str_a='aaaaaaaa'; $len_a = strlen(iconv('utf-8','gb2312',$str_a))+2; $sheet-&g ...

  4. easyPoi单sheet与多sheet导出excel简单实用(重点:自动列宽的设置)

    导入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base< ...

  5. EasyExcel代码层面设置写出的Excel样式、以及拦截器策略的使用、自动列宽设置、EasyExcel默认设置详解

    一.概述 虽然EasyExcel已经提供了一系列注解方式去设置样式. 但是如果没有实体类,或者想要更精确的去设置导出文件的Excel样式的时候就需要在代码层面去控制样式了. 二.使用已有拦截器自定义样 ...

  6. Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求

    这次开任务使用的是EasyExcel导出Excel文档,但是在任务过程中,生成的文档的格式要求并不符合产品和测试的期望值,如图: 想着自己地位低下,也无能力反驳.只好硬着头皮查阅资料来达到他们的想要的 ...

  7. pandas 导出 Excel 文件的时候自动列宽,自动加上边框

    尝试过 xlrd.xlwt.openpyxl.xlwings.pandas 来处理 Excel,如果说除了读写 Excel,还要做数据分析,还是 pandas 最好用,大多数情况下,你根本不需要把数据 ...

  8. POI单元格合并(合并后边框空白修复)、自动列宽、水平居中、垂直居中、设置背景颜色、设置字体等常见问题

    POI单元格合并.自动列宽.水平居中.垂直居中.设置背景颜色.设置字体等常用方法 POI设置单元格样式 POI设置文字 POI设置边框样式 POI设置文字水平居中.垂直居中 POI设置背景颜色 POI ...

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

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

  10. EasyExcel表格导出自动列宽设定

    EasyExcel表格导出自动列宽设定 public static class AutoColumnWidthStrategy implements CellWriteHandler {@Overri ...

最新文章

  1. Jquery让按钮(控件)不可见或者不可用
  2. Spring Boot 2.x基础教程:使用Elastic Job的分片配置
  3. HDU 1271整数对
  4. Tomcat启动报404(eclipse)
  5. 车载电脑中控软件_数字图书馆智能化系统集成-ipad中控软件
  6. 信息学奥赛一本通(1165:Hermite多项式)
  7. 7.1 elementui的radio无法选中问题
  8. PHP文件操作 读取与写入
  9. VS2010对Excel操作---DLL向
  10. 华为修改优先级命令_华为交换机优先级配置
  11. 用Java解决牛客网题目JD1年终奖
  12. 防火墙阻止了从docker容器到外部的网络连接
  13. MemSQL 的安装和简单使用 比Mysql快30倍的关系型数据库
  14. CefSharp的ChromiumWebBrowser截出来的图片是空白
  15. Latex如何插入图片
  16. js刻度尺插件_自制刻度尺插件-前端简易实现腾讯信用界面
  17. 计算机方面特长特招进北大,机器人特长生保送进北大!
  18. 信息论与编码matlab实验报告,信息论实验报告(实验三、香农编码)
  19. 小厨房设计软件测试,案例:就是这么“任性” 四款小厨房橱柜设计
  20. 新浪与腾讯的开放平台对比(下)

热门文章

  1. 大一新生c语言实验报告总结,实验报告总结
  2. 【评测】阿法埃莎 (Alfa Aesar)化学品目录
  3. chrome 插件--B站自动发弹幕
  4. 如何获取B站视频弹幕?
  5. 充电速度公式_锂电充电时间计算公式
  6. 《创新思维训练》2021网课章节测验及答案
  7. 解决win10系统alt+tab切换程序不显示程序缩略图问题
  8. win10电脑切换窗口输入法总是变换怎么办?
  9. Excel 2010 SQL应用091 聚合函数之求平均数
  10. 安装ubuntu后没有windows启动项