Java导出Excel(自定义格式,非纯导出表格)

最近业务有个需求需要用到导出Excel表,按模板格式导出报关单(比较复杂,需要一格一格画),这里记录一下Excel导出怎么用
如果只是导出纯表列数据,可以不用我这种方法

这里需要引入Apache POI依赖库,
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version>
</dependency>
 //准备报表用参数CVVoyage cvVoyage = this.cvVoyageDao.getByVoyageId(voyageId);List<Order> bookingList = this.csBookingDao.getByVoyageId(cvVoyage.getId());// Excel表开始String sheetname = "申报单";//创建一个HSSFWorkbook,对应一个Excel文件HSSFWorkbook wb = new HSSFWorkbook();//添加一个sheet,对应Excel文件中的sheetHSSFSheet sheet = wb.createSheet(sheetname);//设置宽度int[] width = {20, 10, 30, 30, 30, 20, 30};for (int columnIndex = 0; columnIndex < 7; columnIndex++) {sheet.setColumnWidth(columnIndex, width[columnIndex] * 256);}//设置样式集合Map<String, HSSFCellStyle> styles = addStyle(wb);int rowIndex;int colIndex;//添加标题行HSSFRow row0 = sheet.createRow(0);row0.setHeight((short) (40 * 20));HSSFCell cell0 = row0.createCell(0);cell0.setCellStyle(styles.get("title"));String cellValues0 = "中华人民共和国海关运输工具起卸/添加物料申报单";cell0.setCellValue(cellValues0);CellRangeAddress cra = new CellRangeAddress(0, 0, 0, 6);sheet.addMergedRegion(cra);HSSFRow row1 = sheet.createRow(1);row0.setHeight((short) (30 * 20));HSSFCell cell1 = row1.createCell(0);cell1.setCellStyle(styles.get("title"));String cellValues1 = "DECALRATION OF OFFLAND/SUPPLY PROVISIONS/STORES TO CUSTOMS\n";cell1.setCellValue(cellValues1);CellRangeAddress cra1 = new CellRangeAddress(1, 1, 0, 6);sheet.addMergedRegion(cra1);HSSFRow row2 = sheet.createRow(2);for (colIndex = 0; colIndex < 7; colIndex++) {row2.createCell(colIndex);row2.getCell(colIndex).setCellStyle(styles.get("header_center"));}row2.getCell(0).setCellValue("录入编号(SERIES NUMBER)");sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 3));row2.getCell(4).setCellValue("□起卸(OFFLAND)");sheet.addMergedRegion(new CellRangeAddress(2, 2, 4, 5));row2.getCell(6).setCellValue("□ 添加(SUPPLY)");// 后面的数据可以根据自己的需求写....................//生成文件String fileName = "申报单.xlsx";response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));OutputStream outputStream = response.getOutputStream();wb.write(outputStream);outputStream.flush();outputStream.close();
  1. 添加表格样式
private Map<String, HSSFCellStyle> addStyle(HSSFWorkbook wb) {@SuppressWarnings({"unchecked", "rawtypes"})Map<String, HSSFCellStyle> styles = new HashMap();//设置字体HSSFFont headFont = wb.createFont();headFont.setFontName("微软雅黑");headFont.setFontHeightInPoints((short) 16);headFont.setBold(true);HSSFFont bodyFont = wb.createFont();bodyFont.setFontName("微软雅黑");bodyFont.setFontHeightInPoints((short) 10);//标题行样式HSSFCellStyle style = wb.createCellStyle();style.setFont(headFont);style.setWrapText(true);style.setFillForegroundColor((short) 27);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);styles.put("title", style);//数据头居中样式style = wb.createCellStyle();style.setFont(bodyFont);style.setWrapText(true);style.setFillForegroundColor((short) 27);styles.put("header_center", style);//数据行居中样式style = wb.createCellStyle();style.setFont(bodyFont);styles.put("data_center", style);//数据行居中底色样式style = wb.createCellStyle();style.setFont(bodyFont);style.setWrapText(true);style.setFillForegroundColor((short) 27);styles.put("data_center_color", style);//数据行居中底色样式2style = wb.createCellStyle();style.setFont(bodyFont);style.setWrapText(true);style.setFillForegroundColor((short) 27);styles.put("data_center_color1", style);//数据行居左样式style = wb.createCellStyle();style.setFont(bodyFont);style.setWrapText(true);style.setFillForegroundColor((short) 27);style.setAlignment(HSSFCellStyle.ALIGN_LEFT);style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);styles.put("data_left", style);//数据行居右样式style = wb.createCellStyle();style.setFont(bodyFont);style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);styles.put("data_right", style);//无边框样式style = wb.createCellStyle();style.setFont(bodyFont);style.setWrapText(true);styles.put("data_noborder", style);//无底边框样式style = wb.createCellStyle();style.setFont(bodyFont);style.setWrapText(true);styles.put("data_bottom", style);return styles;}

最终效果图

具体用法可以参考POI官方文档
https://www.cnblogs.com/fqfanqi/p/6172223.html

Java导出Excel(自定义格式)相关推荐

  1. java导出excel数字格式_POI 导出excel带小数点的数字格式显示不对解决方法

    最近看到了一个问题就是java导出excel中带小数点的数字显示不对, 比如我想在excel中第一行显示:  3,000.0 但是在excle中导出的格式总是不带小数点 3000(非文本格式),而且也 ...

  2. java导出excel自定义表头,架构师必备!

    主要内容 本文是从大型互联网系统的应用角度探讨分布式缓存的.本文站在原理.框架.架构.案例等多个视角对分布式缓存进行了探讨. 互联网系统随着容量需求的陡增,许多看似简单的存储类场景都面临着巨大的容量问 ...

  3. Java操作poi导出Excel自定义字体颜色

    Java操作poi导出Excel自定义字体颜色 功能介绍 POI操作Excel 第一步创建一个导出的工具类 整体定义表格字体样式 自定义表格字体样式 总结 功能介绍 Apache POI 是用Java ...

  4. java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽

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

  5. java 导出excel教程_Java导出Excel表格

    Java导出Excel表格 导出Excel表格需要一个poi-3.9.jar的包,该包在网上可以找到. 第一步,创建Excel对象. HSSFWorkbook workbook = new HSSFW ...

  6. java文件无法导出excel文件,【excel表格文件格式无效】java导出excel,excel打不开,报文件格式无效,怎么解决!...

    excel提示 打开的文件.xls的格式与文件扩展名不一致怎么办 如果打开文件的格式与文件的扩展名不一致,只要能够打开就不用去管他. java导出excel,excel打不开,报文件格式无效,怎么解决 ...

  7. Java导出excel文件以.xlsx后缀结尾,可设置部分单元格只读

    前言 最近在做一个小项目,有个模块的功能涉及到excel的导入导出,并且要求对导出的excel文件部分列和单元格设置为只读不可更改,在网上到处查找了一番资料,结合自己的想法,发现也并不难,这里整理记录 ...

  8. Java导出excel文件

    需求 将每个xmpp机房的在线/离线用户信息导出到Excel表格中(定时任务+网页按钮),并在网页上提供下载按钮进行下载. 效果预览 导出文件效果 点击下载弹出框效果 代码总览 /** ". ...

  9. JAVA导出EXCEL实现

    ##JAVA导出EXCEL实现的多种方式 java导出Excel的方法有多种,最为常用的方式就是使用第三方jar包,目前POI和JXL是最常用的二方包了,也推荐使用这两种. ###POI实现 POI这 ...

  10. java导出excel文件(标题为中文乱码)

    1 Java导出Excel文件 function excelOut(){   window.location.href="../getFileToExcel/"+taskId; } ...

最新文章

  1. 第02章 PyTorch基础知识
  2. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一2.4 开发内部测试工具...
  3. [转]全面了解setjmp与longjmp的使用
  4. 那些不回微信的人,都在看什么?
  5. 2021年广州如何申请失业补助金最全攻略
  6. Pecl和Pear的区别和联系?
  7. 正则化与数据先验分布的关系
  8. Vmware下安装配置HMC
  9. PHP:同时发送多个异步ajax请求,但数据却是按同步顺序返回
  10. 电脑上的ppt做不了计算机考试,ppt在有的电脑上打不开怎么办
  11. 全国社会组织信用信息公式平台(试运行)爬虫记录
  12. C++函数参数中的省略号
  13. ARFoundation系列讲解 - 80 AR内容制作一
  14. IPFS云服务器预售登录系统,ipfs 云服务器
  15. PostgreSQL 访问外部数据库之 postgres_fdw
  16. 【玖哥乱弹】祭天时不同程序员的不同杀法
  17. python webkit内核_360浏览器使用meta标签强制使用指定webkit内核 - meta强制用极速模式...
  18. 安卓java.lang.IllegalStateException: The specified child already has a parent.解决方案
  19. 史上最全最牛的C++整人代码
  20. Leetcode-“二分查找”-爱吃香蕉的珂珂

热门文章

  1. XCode7 iOS8.X Simulator 离线下载地址
  2. 关于热敏电阻温度校准问题的测试和解决
  3. 如何提示系统所在的浏览器版本过低?
  4. 嵌入式C语言(指针)
  5. mysql数据库学习心得之一
  6. c51流水灯实验报告汇编语言,LED流水灯显示实验,单片机实验报告
  7. 植被净初级生产力(NPP)的计算
  8. 纯净PE推荐——优启通 v3.3.2019.0605
  9. Code::Blocks下载及其汉化教程
  10. 金山词霸2016下载的离线词典包位置