依赖:
<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. Android Bluetooth模块学习笔记
  2. psfaddtable - 添加一个Unicode字符表到控制台字体中
  3. C++用并查集Disjoint union实现connected component连通分量(附完整源码)
  4. POJ - 3322 Bloxorz I(bfs+状态设计)
  5. 高并发负载均衡(二):LVS 的 DR,TUN,NAT 网络模型推导
  6. [openjudge] 2797最短前缀 Trie
  7. PerlTidy的配置项
  8. Golang程序性能分析(一)pprof和go-torch
  9. asp.net应用程序无法连接oracle数据库,2020:ASP连接Oracle数据库问题的解决过程
  10. C语言无缘无故提示缺少分号:missing ';' before identifier '...'
  11. JasperReports学习(1)
  12. 2012年3月份第1周51Aspx源码发布详情
  13. mac的angular/cli安装及踩坑记录
  14. Python_作图添加水平线和垂直线_linspace语句介绍
  15. 深入React v16新特性(二)
  16. (选做)基于数组的工资处理系统
  17. Error creating bean with name xxxxxxx
  18. 【笔记】效率脑科学:卓有成效地完成每一项工作
  19. 2021巢湖学院高考成绩查询,2021年巢湖学院录取结果查询网址入口及录取结果公布时间...
  20. 盘点丨2017年国内最酷的10家大数据创业公司

热门文章

  1. 图像加噪(高斯噪声和椒盐噪声)
  2. gre阅读passage31-70
  3. stockgo数据爬取-业绩预告
  4. 解决 The run destination 设备 is not valid for Testing the Xcode doesn’t support iPhone4s’s iOS 15.1
  5. day30~31_linux概述及安装设置
  6. java8 gc_java8添加并查看GC日志(ParNew+CMS)
  7. AAC架构和Mvvm模式解析(MvvmHabit)
  8. 2012年下半年11月份系统架构设计师上午试题答案之一
  9. 吴裕雄 人工智能 java、javascript、HTML5、python、oracle ——智能医疗系统WEB端初诊代码简洁版实现...
  10. 使用https://mail.google.com/登录GMail