架构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/

——与君共勉

java用POI导出Excel的更多相关文章

  1. Java之POI导出Excel(一):单sheet

    相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码  <!-- ...

  2. java解决poi导出excel文字水印,导出excel不可操作问题

    首先需求是用户提出导出excel数据需使用水印备注其用途: 其实就是在导出excel的同时带有自定义文字水印的导出. 那么我们首先想到的肯定是以一个什么样的思路去解决该问题,首先查找poi导出exce ...

  3. java使用poi导出excel

    继上一篇导出pdf,这篇导出excel. 1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <art ...

  4. Java使用POI导出excel(下)——实例与小技巧

    [更新]:thinkgem的导出工具类: /** * Copyright © 2012-2016 <a href="https://github.com/thinkgem/jeesit ...

  5. java springmvc poi 导出Excel,先简单记录,后期会详细描写

    POI jar包下载 : http://poi.apache.org/download.html jsp代码 <%@ page language="java" content ...

  6. Java之POI导出Excel(二):多个sheet

    相信在大部分的web项目中都会有导出导入Excel的需求,之前我也写过一篇导出单个sheet工作表的文章,没看过的小伙伴可以去看哈,链接也给大家放出来了:导出单个sheet 但是在我们日常的工作中,需 ...

  7. Java使用POI导出excel(上)——基本操作

    相关的介绍参考自:http://zc985552943.iteye.com/blog/1491546 一.概述 1.概念 受上文博文博主的启发,有必要先对excel的各个概念先做了解! //上述基本都 ...

  8. Java之Poi导出Excel文档

    一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...

  9. java 使用poi导出Excel,设置单元格保护不可编辑

    //sheet表加密:等效excel的审阅菜单下的保护工作表 sheet.protectSheet(new String("333"));//333是密码 更多设置请参考:http ...

随机推荐

  1. 解决Navicat无法连接到centos上的MySQL,但命令行可以,修改权限,MySQL密码权限受限:ERROR 1820 (HY000) ERROR 1819 (HY000)

    问题分析 查看MySQL文档发现5.7版本后加入了对用户密码严格的管理规范,具体设置字段如下: validate_password_dictionary_file #插件用于验证密码强度的字典文件路径 ...

  2. Codeforces Round #566 (Div. 2)题解

    时间\(9.05\)好评 A Filling Shapes 宽度为\(3\),不能横向填 考虑纵向填,长度为\(2\)为一块,填法有两种 如果长度为奇数则显然无解,否则\(2^{n/2}\) B Pl ...

  3. 基于Python的GMSSL实现

    基于Python的GMSSL实现 团队任务 一.小组讨论对课程设计任务的理解 基于Python的GMSSL实现,即GmSSL开源加密包的python实现,支持其SM2/SM3/SM4等国密(国家商用密 ...

  4. Hibernate HQL和QBC

    OID查询 一.什么是OID查询 根据对象的OID主键进行检索 二.OID查询方式 1. get方法 当get()方法被调用的时候就会立即发出SQL语句 并且返回的对象也是实际的对象 使用get()和 ...

  5. contos的apt-get安装

    本文链接:https://blog.csdn.net/lesz_s/article/details/88732500 首先contos的软件包管理是yum但是yum包好多都没有 比如我想装的slwge ...

  6. C# WinForm快捷键设置技巧

    C# WinForm快捷键设置技巧 1.Alt+*(按钮快捷键) 按钮快捷键也为最常用快捷键,其设置也故为简单.在大家给button.label.menuStrip等其他控件的Text属性指定名称时, ...

  7. How can I get a Netty server to reload a TLS certificate when it is renewed?

    java - How can I get a Netty server to reload a TLS certificate when it is renewed? - Stack Overflow ...

  8. $createElement实现自定义弹窗

    <el-button type="text" @click="open4">点击打开 Message Box</el-button> m ...

  9. struct2json -- C结构体与 JSON 快速互转库V1.0发布

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhutianlong/article/d ...

  10. Could not find conda environment: tensorflow | anaconda激活环境

    问题:在使用Anaconda Prompt时activate tensorflow时出现Could not find conda environment: tensorflow. 解答: 因为大家在使 ...