依赖:
<dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-ooxml</artifactId>            <version>3.15-beta2</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->    <dependency>        <groupId>org.apache.poi</groupId>        <artifactId>poi-ooxml-schemas</artifactId>        <version>3.17</version>    </dependency>

核心代码:

/*** title:导出excel标题、headers 导出到excel显示的列头、      columns 对应数据库字段 、list 导出数据* @param title* @param headers* @param columns* @param list* @param out* @param pattern* @throws NoSuchMethodException* @throws Exception*/public void expoortExcelx(String title, String[] headers, String[] columns,List<GrApplyDetails> list, OutputStream out, String pattern) throws NoSuchMethodException, Exception{//创建工作薄XSSFWorkbook workbook=new XSSFWorkbook();//创建表格Sheet sheet=workbook.createSheet(title);//设置默认宽度sheet.setDefaultColumnWidth(25);//创建样式XSSFCellStyle style=workbook.createCellStyle();//设置样式style.setFillForegroundColor(IndexedColors.GOLD.index);style.setFillPattern(CellStyle.SOLID_FOREGROUND);style.setBorderBottom(CellStyle.BORDER_THIN);style.setBorderLeft(CellStyle.BORDER_THIN);style.setBorderRight(CellStyle.BORDER_THIN);style.setBorderTop(CellStyle.BORDER_THIN);//生成字体XSSFFont font=workbook.createFont();font.setColor(IndexedColors.VIOLET.index);font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//应用字体style.setFont(font);//自动换行style.setWrapText(true);//声明一个画图的顶级管理器Drawing drawing=(XSSFDrawing) sheet.createDrawingPatriarch();//表头的样式XSSFCellStyle titleStyle=workbook.createCellStyle();//样式对象titleStyle.setAlignment(CellStyle.ALIGN_CENTER_SELECTION);//水平居中titleStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//设置字体XSSFFont titleFont=workbook.createFont();titleFont.setFontHeightInPoints((short)15);titleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体titleStyle.setFont(titleFont);sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, headers.length-1));//指定合并区域Row rowHeader = sheet.createRow(0);//XSSFRow rowHeader=sheet.createRow(0);Cell cellHeader=rowHeader.createCell(0);XSSFRichTextString textHeader=new XSSFRichTextString(title);cellHeader.setCellStyle(titleStyle);cellHeader.setCellValue(textHeader);Row row=sheet.createRow(1);for(int i=0;i<headers.length;i++){Cell cell=row.createCell(i);cell.setCellStyle(style);XSSFRichTextString text=new XSSFRichTextString(headers[i]);cell.setCellValue(text);}//遍历集合数据,产生数据行if(list!=null&&list.size()>0){int index=2;for(GrApplyDetails t:list){row=sheet.createRow(index);index++;for(short i=0;i<columns.length;i++){Cell cell=row.createCell(i);String filedName=columns[i];String getMethodName="get"+filedName.substring(0,1).toUpperCase()+filedName.substring(1);Class tCls=t.getClass();Method getMethod=tCls.getMethod(getMethodName,new Class[]{});Object value=getMethod.invoke(t, new Class[]{});String textValue=null;if(value==null){textValue="";}else if(value instanceof Date){Date date=(Date)value;SimpleDateFormat sdf = new SimpleDateFormat(pattern);textValue = sdf.format(date);}else if(value instanceof byte[]){row.setHeightInPoints(80);sheet.setColumnWidth(i, 35*100);byte[] bsValue=(byte[])value;XSSFClientAnchor anchor=new XSSFClientAnchor(0,0,1023,255,6,index,6,index);anchor.setAnchorType(2);drawing.createPicture(anchor, workbook.addPicture(bsValue, XSSFWorkbook.PICTURE_TYPE_JPEG));}else if(columns[i].equals("supportingDocuments")){// 使用creationHelpper来创建XSSFHyperlink对象CreationHelper createHelper = workbook.getCreationHelper();XSSFHyperlink  link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_URL);
//我这里设置的是超链接到本地文件,也可以改成网址link.setAddress("file://C:/home/cpmt/template/attachments/1621235577767/test1.docx");cell.setHyperlink(link);cell.setCellValue("点击打开附件");continue;}else{// 其它数据类型都当作字符串简单处理textValue=value.toString();}if(textValue!=null){Pattern p = Pattern.compile("^//d+(//.//d+)?$");Matcher matcher = p.matcher(textValue);if (matcher.matches()) {// 是数字当作double处理cell.setCellValue(Double.parseDouble(textValue));} else {XSSFRichTextString richString = new XSSFRichTextString(textValue);// HSSFFont font3 = workbook.createFont();// font3.setColor(HSSFColor.BLUE.index);// richString.applyFont(font3);cell.setCellValue(richString);}}}}}workbook.write(out);}

调用:

response.setHeader("Content-Disposition", "attachment; filename=template.xlsx");OutputStream out =response.getOutputStream();  ExportExcelUtil.expoortExcelx("表头",headers,clouns,list,out,"yyyy-MM-dd HH:mm:ss");

以上内容参考了一位大佬的代码,可惜链接找不到了,后续有缘遇上再补上

Java POI 导出excel附件,附件中设置超链接到其他文件或网址相关推荐

  1. 使用jxls,poi导出excel的公式中出现@符号,或者公式不生效

    问题描述 使用jxls,poi导出excel的公式中出现@符号,或者公式不生效(和office版本有关系) 模板excel公式 =MIN(IF(A11:T12>0,A11:T12))/A21 生 ...

  2. java poi 导出excel不能超过65536行

    java poi 导出excel不能超过65536行 报这个异常 Exception in thread "main" java.lang.IllegalArgumentExcep ...

  3. JAVA POI 导出EXCEL时,EXCEL模板中的公式无效问题

    JAVA POI 出力EXCEL时,EXCEL模板中的公式无效问题 工作中遇到一个问题. EXCEL模板有两个sheet,画面内容要导出到第二个sheet中,第一个sheet设置公式,读取第二个she ...

  4. JAVA POI导出EXCEL设置自定义样式(线框加粗,合并指定行,合计求和,冻结行)

    前面部分是当时查询的记录: 实现Excel文件单元格合并.冻结和文件导出 Workbook wb = new HSSFWorkbook();Sheet sheet = wb.createSheet(& ...

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

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

  6. Java POI导出Excel

    版权声明:本文为博主原创文章,未经博主允许不得转载.    在软件开发工作当中,导出Excel表格是比较常见的,下面我为大家分享一下POI导出Excel的一些方法. 1.引用poi.jar包 < ...

  7. Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

    原文转载:http://blog.csdn.net/evangel_z/article/details/7332535 目录(?)[+] 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数 ...

  8. java poi导出Excel表格超大数据量解决方案

    Java实现导出excel表格功能,大部分都会使用apache poi,apache poi API 地址 POI之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM大小效果 ...

  9. Java POI导出Excel时,合并单元格没有边框的问题

    今天用POI导出Excel的时候,发现导出的单元格确少边框,最后发现有2个方案可以解决. 方案一 CellRangeAddress的4个参数分别表示:起始行号,终止行号, 起始列号,终止列号 // 使 ...

最新文章

  1. 前端中的this,指的是什么?
  2. 利用Python爬取糗事百科段子信息
  3. 【Git】解决remote: ******: Incorrect username or password (access token)方法
  4. CF--思维练习--CodeForces - 216C - Hiring Staff (思维+模拟)
  5. 认识Mahout下的云计算机器学习
  6. npm配置镜像、设置代理
  7. Oracle 连接查询一
  8. sybase jz0c0 连接已关闭_Go 基于 channel 实现连接池
  9. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用6
  10. CentOS 关闭暂不需要的系统服务
  11. linux设备驱动程序-i2c(1):i2c总线的添加与实现
  12. 下载XAMPP并安装和使用(Mac环境)
  13. Python为什么取名为Python,很少人知道
  14. 密码学(一):古典密码之维吉尼亚密码原理介绍
  15. 视频分析的非局部(non-local) 神经网络模块
  16. 斑马标签打印机蛋疼的打印错误处理方法
  17. C# 添加、删除PPT水印
  18. 组装电脑中毒目录变exe应用程序文件恢复方案
  19. win7之下魔兽不能全屏
  20. 获取mumu模拟器日志

热门文章

  1. Java毕业设计_养生APP的设计与实现
  2. 流言蜚语中男人和女人之间的友情能坚持多久?
  3. 火山引擎 DataLeap 的 Data Catalog 系统公有云实践
  4. 云邦互联免费空间使用
  5. 硬件安全技术——概述1(安全威胁和硬件安全技术)
  6. EngineerCMS工程师知识管理系统下载
  7. Django实现xadmin后台二级联动、三级联动(提供另一种实现方式)
  8. 1553B的进阶之路——RT模式
  9. python unicode编码_python 中文unicode编码
  10. AnchorFree系列算法详解