架构SSM + Maven

一、添加依赖:

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11</version>
</dependency> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>

二、controller层导出:

(1)HSSFWorkbook工具类(导出.xls格式文件)

HSSFWorkbook对象,最多支持65535行,适用一般数据量少导出

    @RequestMapping(value = "/exportExcel")
public void exportallCusTNList(HttpServletRequest request,HttpServletResponse response) {
String clSchWorkID = request.getParameter("clSchWorkID");
// 创建excel
Workbook wb = new HSSFWorkbook();
try {
List<Cllog> cllogList = cllogService.getCusTNListBySchWorkId(clSchWorkID); // 创建一张工作表
HSSFSheet sheet = wb.createSheet("sheet1");
// 设置单元格宽度
sheet.setColumnWidth(0, "列名".getBytes().length*2*256);
sheet.setColumnWidth(1, "列名".getBytes().length*2*256);
// 创建第一行
HSSFRow row = sheet.createRow(0);
// 创建第一行的列并向单元格写值
HSSFCell cell = row.createCell(0);
cell.setCellValue("序列号");
cell = row.createCell(1);
cell.setCellValue("手机型号"); // 写入数据
for (short i=0;i<cllogList.size();i++)
{
row = sheet.createRow(i+1);
row.createCell(0).setCellValue(String.valueOf(i+1));
row.createCell(1).setCellValue(cllogList.get(i).getClCustn());
}
// 文件名
String fileName = "序列号" + clSchWorkID + "手机清单.xls";
// 解决文件乱码
final String userAgent = request.getHeader("user-agent");
if (userAgent != null && userAgent.indexOf("Firefox") >= 0) {
fileName = new String(fileName.getBytes(), "ISO8859-1");
} else {
fileName = URLEncoder.encode(fileName, "UTF8");
}
// 下载文件
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename="+fileName);
response.flushBuffer();
wb.write(response.getOutputStream()); } catch (Exception e) {
e.printStackTrace();
} finally {
if(wb != null) {
try {
wb.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

如果用HSSFWorkbook对象创建xlsx对象,用WPS可以打开,但是用office打开会出现如下错误:

(2)SXSSFWorkbook工具类(导出.xlsx格式文件,适用于数据量大的文件导出)

SXSSFWorkbook对象,只支持.xlsx格式。它就是用来解决大数据量以及超大数据量的导入导出操作的,单个sheet表就支持近104万条数据了。要是导出104万以上的数据,这时我们必须拆分到多个工作表来实现  

        // 只添加跟HSSFWorkBook不一样的代码
// 创建excel
Workbook wb = new SXSSFWorkbook()
// 创建一张工作表
Sheet sheet = wb.createSheet("sheet1");
// 设置单元格宽度
  sheet.setColumnWidth(0, "列名".getBytes().length*2*256);
  sheet.setColumnWidth(1, "列名".getBytes().length*2*256);
// 创建第一行
Row row = sheet.createRow(0);
// 创建第一行的列并向单元格写值
Cell cell = row.createCell(0);
    
  // 文件名
String fileName = "序列号" + clSchWorkID + "手机清单.xlsx";

参考文章:https://www.cnblogs.com/Big-Boss/p/10002739.html

参考文章:https://blog.csdn.net/a602049511/article/details/52367563/

——与君共勉

最新文章

  1. HDU 5976 数学,逆元
  2. Spring的事件和监听器
  3. C++学习13 类class和结构体struct的区别
  4. mongo数据库基础操作
  5. Mina学习之IoSession
  6. Python 关于正负无穷float(‘inf’)的一些用法
  7. 安装centos7注意事项
  8. 怎么把自己电脑上开发的项目发布到自己电脑IIS上面?
  9. python 爬取国家粮食局东北地区玉米收购价格监测信息
  10. git回退到某个历史版本
  11. SpringInAction学习笔记(一):核心概念
  12. zrange 复杂度 O(log(N)+M), N 为有序集的基数,而 M 为结果集的基数
  13. MVC架构模式详细说明
  14. VysorPro助手
  15. Java基础88 数据库设计的三大范式
  16. swift OC混编工程,xcode断点调试,控制台左侧只有变量名称不显示值,右侧输入po命令,打印除一堆提示
  17. antlr4 接触
  18. Parallel学习
  19. C11多线程
  20. DataSnap对象传递

热门文章

  1. intelij idea 2018 license server
  2. 下载安装tomcat 部署本地项目
  3. (7)打造简单OS-加载内核
  4. xyz
  5. zabbix(10)自动发现规则(low level discovery)
  6. 2019-12-10:win7,win12提权练习
  7. OpenFOAM 中边界条件的设定【转载】
  8. 三行代码CSS竖向居中
  9. GIAC 技术大会 Redis 演讲文字稿
  10. ArcGIS10.3_解决属性表中文乱码问题