本机excel版本大于2007

maven引入jar包配置

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version><exclusions><exclusion><groupId>dom4j</groupId><artifactId>dom4j</artifactId></exclusion></exclusions>
</dependency>

代码controller层

MemberSchoolController.java
package com.ztesoft.zsmart.zcm.monitor.controller;import javax.servlet.http.HttpServletResponse;import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;import java.util.*;@RestController
@RequestMapping(value="/memberschool")
public class MemberSchoolController  {/*** @description:导出数据* @param:[schoolId, response]* @return:void* @date:2020/02/21* @author:tangyj* @remark:* */@RequestMapping(value = "/download/data/{schoolId}", method = RequestMethod.GET,consumes = "application/octet-stream",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)public void download(@PathVariable(value="schoolId",required = true)Long schoolId,HttpServletResponse response) throws Exception{//临时生成测试数据String fileName = "test7.xlsx";String headTitle = "test_title";int colunmNum = 10;List<String> headTitleList = new ArrayList<String>();for(int i=0;i<10; i++){headTitleList.add("first "+(i+1)+"xxx");}List<List<String>>  dataList = new ArrayList<List<String>>();for(int i=0;i<5; i++){List<String> datas = new ArrayList<>();for(int j=0;j<10; j++){datas.add("yyy "+(i+1)+"yyyy"+(j+1)+"yyy");}dataList.add(datas);}//1-创建一个HSSFWorkbookExcelObject excel = new ExcelObject("test_data");//2-写入头标题excel.createHeadTile(colunmNum,headTitle);//头标默认写在第一行//3-写入行标题excel.createRowTitle(headTitleList,1);//4-写入具体数据excel.createDataByRow(2,dataList);//因为没有行标题,所以从第二行开始//5-生成excel文件excel.buildExcelFile(fileName);//6-浏览器下载excelexcel.buildExcelDocument(fileName,response);}
}

逻辑层

ExcelObject.java
package com.ztesoft.zsmart.zcm.monitor.controller;import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.bind.annotation.GetMapping;import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;public class ExcelObject {//    private HSSFWorkbook workbook;//    private HSSFSheet sheet;private XSSFWorkbook workbook;private XSSFSheet sheet;public ExcelObject() {this.workbook = new XSSFWorkbook();this. sheet = this.workbook.createSheet("sheet1");}public ExcelObject(String sheetName) {this.workbook = new XSSFWorkbook();this. sheet = this.workbook.createSheet(sheetName);sheet.setDefaultRowHeight((short) (2 * 256)); //设置默认行高,表示2个字符的高度sheet.setDefaultColumnWidth(17);    //设置默认列宽,实际上回多出2个字符,不知道为什么}/*** @description:设置头标题格式* @param:[workbook, sheet]* @return:org.apache.poi.hssf.usermodel.HSSFCellStyle* @date:2020/02/21* @author:tangyj* @remark:* */private  XSSFCellStyle getHeadTitleStyle(){//设置为居中加粗XSSFCellStyle style = this.workbook.createCellStyle();XSSFFont font = this.workbook.createFont();font.setFontHeightInPoints((short)24);font.setBold(true);style.setAlignment( HorizontalAlignment.CENTER);style.setFont(font);style.setWrapText(true);//设置自动换行return style;}/*** @description:设置行标题格式* @param:[workbook, sheet]* @return:org.apache.poi.hssf.usermodel.HSSFCellStyle* @date:2020/02/21* @author:tangyj* @remark:* */private  XSSFCellStyle getRowTitleStyle(){//设置为居中加粗XSSFCellStyle style = this.workbook.createCellStyle();XSSFFont font = this.workbook.createFont();font.setFontHeightInPoints((short)12);font.setBold(true);style.setAlignment( HorizontalAlignment.CENTER);style.setFont(font);style.setWrapText(true);//设置自动换行return style;}/*** @description:设置普通单元格格式* @param:[workbook, sheet]* @return:org.apache.poi.hssf.usermodel.HSSFCellStyle* @date:2020/02/21* @author:tangyj* @remark:* */private  XSSFCellStyle getNormalCellTitleStyle(){//设置为居中加粗XSSFCellStyle style = this.workbook.createCellStyle();XSSFFont font = this.workbook.createFont();font.setFontHeightInPoints((short)12);style.setAlignment( HorizontalAlignment.CENTER);style.setFont(font);style.setWrapText(true);//设置自动换行return style;}/*** @description:1-写入头标题* @param:[workbook, sheet, column, headTitle]* @return:void* @date:2020/02/21* @author:tangyj* @remark:* */public  void createHeadTile(int column, String headTitle){//创建行(默认第一行)XSSFRow row = sheet.createRow(0);//合并单元格int lastColIndex = column > 0 ?  (column-1):0;sheet.addMergedRegion(new CellRangeAddress(0,0,0,lastColIndex));//单元格居中加粗格式XSSFCellStyle style = getHeadTitleStyle();//写入标题XSSFCell cell  = row.createCell(0);//获取当前行的第一列cell.setCellValue(headTitle);//写入数据cell.setCellStyle(style);//设置单元格格式}/*** @description:2-写入行标题* @param:[workbook, sheet, rowTitleList, firstRowIndex]* @return:void* @date:2020/02/21* @author:tangyj* @remark:* */public  void createRowTitle(List<String> rowTitleList,int firstRowIndex){//创建行XSSFRow row = sheet.createRow(firstRowIndex);//设置为居中加粗XSSFCellStyle style = getRowTitleStyle();XSSFCell cell;for(int i=0; i< rowTitleList.size(); i++){cell = row.createCell(i);//获取当前列cell.setCellValue(rowTitleList.get(i));//写入数据cell.setCellStyle(style);//设置单元格格式}}/*** @description:3-写入具体的单元格数据* @param:[firstRowIndex, lineDataList]* @return:void* @date:2020/02/21* @author:tangyj* @remark:* */public  void createDataByRow(int firstRowIndex,List<List<String>> lineDataList){//i代表行,j代表列XSSFCellStyle style = getNormalCellTitleStyle();for(int i=0; i< lineDataList.size(); i++){List<String> lineDatas = lineDataList.get(i);XSSFRow row = sheet.createRow(firstRowIndex + i);//行for(int j=0; j<lineDatas.size(); j ++){XSSFCell cell = row.createCell(j);//列cell.setCellValue(lineDatas.get(j));//写入数据cell.setCellStyle(style);//设置单元格格式}}}/*** @description:4-生成excel文件* @param:[filename, workbook]* @return:void* @date:2020/02/21* @author:tangyj* @remark:* */public void buildExcelFile(String filename) throws Exception{FileOutputStream fos = new FileOutputStream(filename);workbook.write(fos);fos.flush();fos.close();}/*** @description:5-浏览器下载excel* @param:[filename, workbook, response]* @return:void* @date:2020/02/21* @author:tangyj* @remark:* */public void buildExcelDocument(String filename,HttpServletResponse response) throws Exception{response.reset();response.setCharacterEncoding("utf-8");response.setContentType("application/force-download");
//        response.setContentType("application/vnd.ms-excel");
//        response.setContentType("application/vnd.ms-excel;charset=utf-8");
//        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setContentType("application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(filename, "utf-8"));response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);OutputStream outputStream = response.getOutputStream();
//        response.setHeader("Content-Length", "10000");workbook.write(outputStream);outputStream.flush();outputStream.close();}}

请求

接口请求通过swagger

poi 通过浏览器导出excel文件打不开相关推荐

  1. java导出excel 打不开,poi 通过浏览器导出excel文件打不开

    本机excel版本大于2007 maven引入jar包配置 org.apache.poi poi-ooxml 3.9 dom4j dom4j 代码controller层 MemberSchoolCon ...

  2. 应用phpexcel导出excel文件后打不开的问题解决方法

    应用phpexcel导出excel文件后打不开的问题解决方法 参考文章: (1)应用phpexcel导出excel文件后打不开的问题解决方法 (2)https://www.cnblogs.com/im ...

  3. swagger easyExcel导出Excel文件打不开,文件损坏

    alibaba/easyexcel文件导出 swagger easyExcel导出Excel文件打不开,文件损坏 文件下载打不开,将文件输出到本地发现可以打开,而且swagger下载的文件大小比本地文 ...

  4. (vue)vue导出excel文件打不开,或者文件内容为object object

    (vue)vue导出excel文件打不开,或者文件内容为object object[已解决] bug: 主要原因:没有注意到后端返回的数据格式,需要的是res而不是res.data 正确写法: < ...

  5. swagger接口导出excel文件打不开

    swagger接口导出excel文件打不开: 接口添加produces="application/octet-stream" @ApiOperation(value = " ...

  6. 使用POI导入和导出 Excel文件

    来源:http://www.blogjava.net/caihualin/archive/2008/05/12/164724.html 1.ExcelWriter.java package com.e ...

  7. Springboot+poi实现浏览器下载excel文件

    1.引入依赖包 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</art ...

  8. vue+Springboot+easyexecl 导出excel文件打不开

    使用vue+Springboot+easyExecl导出文件时,在浏览器中下载的文件总是打不开,并且显示这个错误 1.我们逐步进行排查,首先看是不是后端的问题.这里附上我后端的代码 @GetMappi ...

  9. java poi导出excel模板_POI通过模板导出EXCEL文件的实例

    一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...

最新文章

  1. Python源码学习:Python函数浅析-有参函数
  2. 多巴胺如何驱使我们克服复杂情况、逆境、情绪, 让我们掌控周遭的环境的
  3. 【133天】尚学堂高淇Java300集视频精华笔记(71-72)
  4. boost::merge相关的测试程序
  5. mysql tcp 远程_MySQL开启远程访问
  6. boost.asio系列——io_service
  7. 从字到词,大词典中文BERT模型的探索之旅
  8. u-boot_NAND_Flash操作命令及烧录Linux内核和文件系统
  9. Matplotlib - 散点图 scatter() 所有用法详解
  10. MFC制作简易音乐播放器
  11. Swift应用案例 2.闭包入门到精通
  12. linux下文件删除的原理精华讲解(考试题答案系列)
  13. [ openwrt ] 添加一个通过GPIO控制的LED
  14. react视频播放组件ReactPlayer基本使用
  15. LoadRunner教程(16)-LoadRunner SLA分析
  16. 写出Oracle分页语句,Oracle分页语句
  17. MS08067红队攻防第一期班 精彩回顾~
  18. SAP License:FI/CO模块常用表及事务代码
  19. 2011款iMac的AirDrop使用方法。
  20. 逆袭-2014年中电投篮球赛札记_02【转】

热门文章

  1. 【微信小程序】使用uni-app——开发首页搜索框导航栏(可同时兼容APP、H5、小程序)
  2. python用什么编译器
  3. 【SolidWorks相关】无法装入SolidWorks.DLL文件:GdtAnalysisSupport.dll 及 提示方程式语法格式不正确
  4. 串口低频刷卡密码键盘ID卡发卡器YD791开关设置选择
  5. 遥感影像的全色、多光谱、高光谱图像
  6. 2018中国互联网安全大会9月举行!
  7. 阿里云 云监控插件安装参考
  8. Ghostxpsp3电脑爱好者纯净版V9.9
  9. 21天免费精通新概念1-4MP3
  10. 使用blob 实现 js下载word、Excel等文件