Java|导出Excel文件

项目里很多接口都涉及导出Excel文件,总结下项目中导出Excel文件的方法:

1.请求中不带请求中带HttpServletResponse response。

使用ExcelData和ExportExcelUtils工具类结XSSFWorkbook合实现Excel文件导出

ini 复制代码
ExcelData data = new ExcelData();
data.setName("页签名称");

// 标题
List<String> titles = new ArrayList();
titles.add("第一列");
titles.add("第二列");
titles.add("第三列");
data.setTitles(titles);

// 内容
List<List<Object>> rows = new ArrayList();
for(int i=0; i<10; i++){
    List<Object> row = new ArrayList();
    row.add(第+"i"+行第一列);
    row.add(第+"i"+行第二列);
    row.add(第+"i"+行第三列);
    rows.add(row);
}
data.setRows(rows);

XSSFWorkbook wb = ExportExcelUtils.exportExcel(data);
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
wb.write(outByteStream);
wb.close();

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/vnd.ms-excel");
headers.add("Connection", "close");
headers.add("file", "type");
headers.add("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO-8859-1"));

return new ResponseEntity<byte[]>(outByteStream.toByteArray(), headers, HttpStatus.CREATED);

2.请求中带HttpServletResponse response。

使用XSSFWorkbook合实现Excel文件导出

scss 复制代码
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("UTF-8");
response.setHeader("file", "type");
response.setHeader("Connection", "close");
response.setHeader("Content-disposition", "attachment;filename=" + ExcelUtil.toUtf8String("文件名"));

String filePath = "/docs/file.xlsx";
InputStream inputStream = new ClassPathResource(filePath).getInputStream();
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream);

// sheet
XSSFSheet sheetAt = xssfWorkbook.getSheetAt(0);
sheetAt.setColumnWidth(0, 15000);

// 单元格格式
XSSFCellStyle cellStyle = xssfWorkbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);

// 标题
writeValue(sheetAt, cellStyle, 0, 0, "第一列");
writeValue(sheetAt, cellStyle, 0, 0, "第二列");
writeValue(sheetAt, cellStyle, 0, 0, "第三列");

// 内容
for(int i=1; i=10; i++){
    writeValue(sheetAt, cellStyle, i, 0, "第"+i+"行第一列");
    writeValue(sheetAt, cellStyle, i, 1, "第"+i+"行第二列");
    writeValue(sheetAt, cellStyle, i, 2, "第"+i+"行第三列");
}

xssfWorkbook.write(response.getOutputStream());

if (null != xssfWorkbook) {
    xssfWorkbook.close();
}
相关推荐
在未来等你18 分钟前
互联网大厂Java求职面试:AI大模型推理优化与实时数据处理架构
java·ai·大模型·向量数据库·rag·分布式系统
买了一束花21 分钟前
预分配矩阵内存提升文件数据读取速度
java·人工智能·算法·matlab
zizisuo33 分钟前
Java集合框架深度剖析:结构、并发与设计模式全解析
java·javascript·数据结构·设计模式
要加油哦~39 分钟前
刷题 | 牛客 - js中等题-下(更ing)30/54知识点&解答
java·开发语言·javascript
gkdpjj1 小时前
Linux网络 网络基础一
linux·服务器·开发语言·网络·后端·智能路由器·软件工程
程序员鱼皮1 小时前
炸裂!Spring AI 1.0 正式发布,让 Java 再次伟大!
java·计算机·ai·程序员·互联网·开发
俺不是西瓜太郎´•ﻌ•`2 小时前
欧拉降幂(JAVA)蓝桥杯乘积幂次
java·开发语言·蓝桥杯
神码小Z2 小时前
Spring Cloud Gateway 微服务网关实战指南
java·spring boot·spring cloud
EQ-雪梨蛋花汤2 小时前
【如何做好一份技术文档?】用Javadoc与PlantUML构建高质量技术文档(API文档自动化部署)
java·api·ci·plantuml·doc
MaCa .BaKa2 小时前
40-智慧医疗服务平台(在线接/问诊/机器学习)
java·spring boot·mysql·机器学习·maven·numpy·pandas