java导出功能(多级表头,复杂表头)


JavaWeb-封装工具类

  • java导出功能(多级表头,复杂表头)
  • 前言
  • 一、实现的效果
  • 二、调用工具类
  • 三、详细工具类
  • 仰天大笑出门去,我辈岂是蓬蒿人

前言

大概内容:

多级表头,复杂表头的导出功能都可以仿照这个例子去编写


提示:以下是本篇文章正文内容,下面案例可供参考

一、实现的效果

二、调用工具类

业务层调用

 //假设这是需要导出的数据List<MonitorFoldLineTable> data = new ArrayList();//调用导出工具类FileExportUtil.testExcelDemo(data,response);

对应的实体类

public class MonitorFoldLineTable {private String cdbh;private String sd;private Double dcsg;private Double dcdsf;private Double dcc;private Double ljsg;private Double ljdsf;private Double ljc;;private Double bxsg;private Double bxdsf;private Double bxc;private String time;
}

三、详细工具类

直接copy改吧改吧就可以使用,有详细注释

import com.iS3.manager.monitoring.domain.vo.MonitorFoldLineTable;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.*;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;/*** Created with IntelliJ IDEA.** @Author: 杨永卓* @Date: 2022/07/21/8:58* @Description:*/
public class FileExportUtil {/*** @param list 需要写入excel的数据 从数据库或者其他途径读取* @Description: 导出监测对比数据的工具类* @return:* @Author: 杨永卓* @Date: 2022/7/25 9:29*/public static void testExcelDemo(List<MonitorFoldLineTable> list, HttpServletResponse response) {/** 第一步,创建一个Workbook,对应一个Excel文件  */XSSFWorkbook wb = new XSSFWorkbook();/** 第二步,在Workbook中添加一个sheet,对应Excel文件中的sheet  */XSSFSheet sheet = wb.createSheet("excel导出标题");/** 第三步,设置样式以及字体样式*/XSSFCellStyle titleStyle = createTitleCellStyle(wb);XSSFCellStyle headerStyle = createHeadCellStyle(wb);XSSFCellStyle contentStyle = createContentCellStyle(wb);/** 第四步,创建标题 ,合并标题单元格 */// 行号int rowNum = 0;// 创建第一页的第一行,索引从0开始XSSFRow row0 = sheet.createRow(rowNum++);row0.setHeight((short) 600);// 设置行高String[] row_Text = {"测点编号", "深度", "单次变化量", "", "", "累计变化量", "", "", "变形速率", "", "", "监测时间"};for (int i = 0; i < row_Text.length; i++) {XSSFCell c00 = row0.createCell(i);c00.setCellValue(row_Text[i]);c00.setCellStyle(headerStyle);}// 合并单元格,参数依次为起始列,结束列,起始行,结束行 (索引0开始)sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));sheet.addMergedRegion(new CellRangeAddress(0, 0, 2, 4));sheet.addMergedRegion(new CellRangeAddress(0, 0, 5, 7));sheet.addMergedRegion(new CellRangeAddress(0, 0, 8, 10));sheet.addMergedRegion(new CellRangeAddress(0, 1, 11, 11));         //第二行XSSFRow row2 = sheet.createRow(rowNum++);row2.setHeight((short) 700);String[] row_third = {"", "", "施工监测", "第三方监测", "前后差值", "施工监测", "第三方监测", "前后差值", "施工监测", "第三方监测", "前后差值"};for (int i = 0; i < row_third.length; i++) {XSSFCell tempCell = row2.createCell(i);tempCell.setCellValue(row_third[i]);tempCell.setCellStyle(headerStyle);}for (MonitorFoldLineTable value : list) {XSSFRow tempRow = sheet.createRow(rowNum++);tempRow.setHeight((short) 500);// 循环单元格填入数据for (int j = 0; j < (0 == type ? 12 : 11); j++) {//列宽自适应,j为自适应的列,true就是自适应,false就是不自适应,默认不自适应sheet.autoSizeColumn(j, true);XSSFCell tempCell = tempRow.createCell(j);tempCell.setCellStyle(contentStyle);String tempValue = "";switch (j) {case 0:tempValue = value.getCdbh();break;case 1:tempValue = value.getSd();break;case 2:tempValue = value.getDcsg().toString();break;case 3:tempValue = value.getDcdsf().toString();break;case 4:tempValue = value.getDcc().toString();break;case 5:tempValue = value.getLjsg().toString();break;case 6:tempValue = value.getLjdsf().toString();break;case 7:tempValue = value.getLjc().toString();break;case 8:tempValue = value.getBxsg().toString();break;case 9:tempValue = value.getBxdsf().toString();break;case 10:tempValue = value.getBxc().toString();break;case 11:tempValue = value.getTime();break;}tempCell.setCellValue(tempValue);}}//导出到浏览器下载buildExcelDocument("监测数据", wb, response);}/*** @Description: [导出到浏览器]* @Param: [fileName, wb, response]* @return: void* @Author: 杨永卓* @Date: 2022/7/25 9:40*/private static void buildExcelDocument(String fileName, Workbook wb, HttpServletResponse response) {try {response.setContentType("application/octet-stream");// 可自行定义编码格式response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));//清除jsp编译html文件的空白,防止excel出现空行response.flushBuffer();//写出wb.write(response.getOutputStream());} catch (IOException e) {e.printStackTrace();} finally {IOUtils.closeQuietly(wb);}}
//---------------------------------------以下是封装的样式-----------------------------/*** 创建标题样式** @param wb* @return*/private static XSSFCellStyle createTitleCellStyle(XSSFWorkbook wb) {XSSFCellStyle cellStyle = wb.createCellStyle();cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直对齐cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//        cellStyle.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());//背景颜色XSSFFont headerFont1 = (XSSFFont) wb.createFont(); // 创建字体样式headerFont1.setBold(true); //字体加粗headerFont1.setFontName("黑体"); // 设置字体类型headerFont1.setFontHeightInPoints((short) 15); // 设置字体大小cellStyle.setFont(headerFont1); // 为标题样式设置字体样式return cellStyle;}/*** 创建表头样式** @param wb* @return*/private static XSSFCellStyle createHeadCellStyle(XSSFWorkbook wb) {XSSFCellStyle cellStyle = wb.createCellStyle();cellStyle.setWrapText(true);// 设置自动换行cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景颜色cellStyle.setAlignment(HorizontalAlignment.CENTER); //水平居中cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //垂直对齐cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//        cellStyle.setBottomBorderColor(IndexedColors.BLACK.index);cellStyle.setBorderBottom(BorderStyle.THIN); //下边框cellStyle.setBorderLeft(BorderStyle.THIN); //左边框cellStyle.setBorderRight(BorderStyle.THIN); //右边框cellStyle.setBorderTop(BorderStyle.THIN); //上边框XSSFFont headerFont = (XSSFFont) wb.createFont(); // 创建字体样式headerFont.setBold(true); //字体加粗headerFont.setFontName("黑体"); // 设置字体类型headerFont.setFontHeightInPoints((short) 12); // 设置字体大小cellStyle.setFont(headerFont); // 为标题样式设置字体样式return cellStyle;}/*** 创建内容样式** @param wb* @return*/private static XSSFCellStyle createContentCellStyle(XSSFWorkbook wb) {XSSFCellStyle cellStyle = wb.createCellStyle();cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中cellStyle.setAlignment(HorizontalAlignment.CENTER);// 水平居中cellStyle.setWrapText(true);// 设置自动换行cellStyle.setBorderBottom(BorderStyle.THIN); //下边框cellStyle.setBorderLeft(BorderStyle.THIN); //左边框cellStyle.setBorderRight(BorderStyle.THIN); //右边框cellStyle.setBorderTop(BorderStyle.THIN); //上边框// 生成12号字体XSSFFont font = wb.createFont();font.setColor((short) 8);font.setFontHeightInPoints((short) 12);cellStyle.setFont(font);return cellStyle;}
}

仰天大笑出门去,我辈岂是蓬蒿人

java导出功能(多级表头,复杂表头)相关推荐

  1. java导出功能无法下载excel

    java导出功能无法下载excel 开始使用ajax请求,项目不报错,但是浏览器也没有Excel文件下载,查找代码好久都没有解决 原因:Ajax请求只是个"字符型"的请求,即请求的 ...

  2. java导出动态excel表单----表头和内容都为动态

    数据表 CREATE TABLE `f_form` (`id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',`org_id` bigint(32) ...

  3. echarts java导出功能_echarts图表导出excel示例

    根据传入的参数生成相应的图形 loadChart : function(data,item){ var that = this; require(['echarts', 'echarts/chart/ ...

  4. java导出excel表头斜线_Java导出Excel三表头

    1.问题背景 Java导出Excel表格时,表头出现了三个,即多表头Excel 2.实现源码 /** * * @Project:Report * @Title:ThreeHead.java * @Pa ...

  5. 根据children动态复杂表头excel导出_Java高级特性-注解:注解实现Excel导出功能

    注解是 Java 的一个高级特性,Spring 更是以注解为基础,发展出一套"注解驱动编程". 这听起来高大上,但毕竟是框架的事,我们也能用好注解吗? 的确,我们很少有机会自己写注 ...

  6. 前端使用XLSX插件实现导出功能,包含隐藏英文表头字段

    前端使用XLSX插件实现导出功能,具体代码实现: 1.npm install xlsx --save 下载安装xlsx插件依赖包 2.在使用得地方引入import XLSX, { utils } fr ...

  7. java数据导出ex_Java高级特性注解:注解实现Excel导出功能

    作者:JerryWu来源:SegmentFault 思否社区 注解是 Java 的一个高级特性,Spring 更是以注解为基础,发展出一套"注解驱动编程". 这听起来高大上,但毕竟 ...

  8. java Excel导出功能之 不固定列表格

    背景:考勤周期为本月19号至上月20号,则每个月考勤周期表的列是动态变化的.所有数据显示和excel导出功能都需要动态的进行处理. 显示格式如下图 前端 checkin.jsp<%@ page ...

  9. Java导出excel并下载功能

    我们使用的导出并下载功能是利用一个插件叫POI的插件提供的导出功能,很实用:首先先导入Jar包: Jar包下载地址:http://poi.apache.org/   官方文档地址:http://poi ...

最新文章

  1. JS获取字符串实际长度(包含汉字)的简单方法
  2. 计算机使用DHCP动态分配参数,某单位采用DHCP进行IP地址自动分配,用户收到()消息后方可使用其中分配的IP - 信管网...
  3. threadlocal使用_Java多线程数据共享神器ThreadLocal
  4. VC windows 多网卡情况下 获取当前网卡ip地址
  5. 10道腾讯的Java面试题
  6. Azure PowerShell (16) 并行开关机Azure ARM VM
  7. DB pivot unpivot
  8. 思科、华为远程登录配置小结
  9. muddleftpd配置和用法
  10. ArcMap图例横放教程
  11. JAVA实现 - 问题 G: 超大型 LED 显示屏
  12. 开发者模式各功能详解。
  13. react PC端 适配 自适应
  14. SitePoint Podcast#37:社交媒体:坏事与丑陋
  15. 苹果手机怎么设置流量限制
  16. 从Hadder看蛋白质分子中的加氢算法
  17. 河南省普通高中学业水平测试计算机,河南省普通高中信息技术学业水平测试综合测试题3(有答案)...
  18. PIPIOJ1451: PIPI的数学题VIII
  19. 【系统分析师之路】第五章 数据通信与计算机网络
  20. 联想拯救者R7000安装Ubuntu18.04

热门文章

  1. html中字符间距怎么写,html段落内文字设置字间距间隔
  2. 示波器波形保存至PC端的设置
  3. 数据挖掘常用算法总结
  4. AI美颜SDK功能算法代码解析
  5. 服务器显示屏出现白屏,远程服务器时出现白屏怎么解决
  6. ppt和pptx之间的区别
  7. 代发核心期刊骗局_“代发论文”骗局:近2000人被骗 多数不愿报案
  8. PrintWriter out=response.getWriter()的问题
  9. OCP最新题库收集,052新加的考题及答案整理-19
  10. java event sourcing_深入浅出Event Sourcing和CQRS