栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现下载excel文件并以压缩包的形式返回

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现下载excel文件并以压缩包的形式返回

核心代码:

1.创建准备输出的excel文件并填充内容
2.设置输出流

// 准备将Excel的输出流通过response输出到页面下载
// 八进制输出流
response.setContentType("application/octet-stream");

// 设置导出zip的名称
response.setHeader("Content-Disposition","attachment;filename=历史数据表.zip");

3.完成zip流返回

// 压缩文件流
ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream());

// 将生成excel转化为输入流返回
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ByteArrayInputStream swapStream = null;
try {
	workbook.write(outputStream);
	swapStream = new ByteArrayInputStream(outputStream.toByteArray());
} catch (IOException e) {
    e.printStackTrace();
}
   
byte[] buffer = new byte[5*1024];
int length = 0;
// 将文件夹放入zip中
zipOut.putNextEntry(new ZipEntry("历史数据表.xls"));
while ((length = swapStream.read(buffer)) != -1) {
    zipOut.write(buffer,0,length);
}
swapStream.close();
// 关闭zip文件中之前打开的项
zipOut.closeEntry();
zipOut.close();
代码示例:
// 声明一个工作簿
HSSFWorkbook workbook = new HSSFWorkbook();

// 生成一个表格,设置表格名称
HSSFSheet sheet = workbook.createSheet("历史数据表");

// 设置表格列宽度为10个字节
sheet.setDefaultColumnWidth(10);

// 创建标题的显示样式
HSSFCellStyle headerStyle = workbook.createCellStyle();
headerStyle.setFillForegroundColor(IndexedColors.YELLOW.index);
headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

// 创建第一行表头
HSSFRow headrow = sheet.createRow(0);

// 遍历添加表头
for (int i = 0; i < header.length; i++) {
	// 创建一个单元格
	HSSFCell cell = headrow.createCell(i);

	// 创建一个内容对象
	HSSFRichTextString text = new HSSFRichTextString(header[i]);

	// 将内容对象的文字内容写入到单元格中
	cell.setCellValue(text);
	cell.setCellStyle(headerStyle);
}

// 每行的数据
for (int j = 0; j < results.size(); j++) {
	// 创建一行
	HSSFRow row1 = sheet.createRow(j + 1);
	// 该行对应的数据
	List list2 = (List) results.get(j).get("FieldInfo");
	if (list2 != null && list2.size() > 0) {
		row1.createCell(0).setCellValue(results.get(j).get("time") == null ? ""
				: new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date((long) results.get(j).get("time"))));
		row1.createCell(1).setCellValue(results.get(j).get("recieveTime") == null ? ""
				: new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date((long) results.get(j).get("recieveTime"))));
		if (((String) results.get(j).get("type")).equals("02")) {
			row1.createCell(2).setCellValue("实时数据");
		} else if (((String) results.get(j).get("type")).equals("03")) {
			row1.createCell(2).setCellValue("补发数据");
		}
		// 每列的数据
		DbcParamdetails dbcParamdetails = null;
		boolean flag = true;
		for (int k = 3; k < headerId.length; k++) {
			for (FieldInfo fieldInfo : list2) {
				// 为每一列赋值
				if (headerId[k].equals(fieldInfo.getId())) {
					row1.createCell(k).setCellValue(fieldInfo.getValue());
					if(fieldInfo.getValue() != null) {
						flag = false;
					}
				}
			}
			if(flag) {
				row1.createCell(k).setCellValue("-");
			}
			flag = true;
		}
	}
}

// 准备将Excel的输出流通过response输出到页面下载
// 八进制输出流
response.setContentType("application/octet-stream");

// 设置导出Excel的名称
//response.setHeader("Content-disposition", "attachment;filename=历史数据表.xls");
// 设置导出zip的名称
response.setHeader("Content-Disposition","attachment;filename=历史数据表.zip");

// 刷新缓冲
response.flushBuffer();

// workbook将Excel写入到response的输出流中,供页面下载
//workbook.write(response.getOutputStream());
// 压缩文件流
ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream());

// 将生成excel转化为输入流返回
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ByteArrayInputStream swapStream = null;
try {
	workbook.write(outputStream);
	swapStream = new ByteArrayInputStream(outputStream.toByteArray());
} catch (IOException e) {
    e.printStackTrace();
}

byte[] buffer = new byte[5*1024];
int length = 0;
// 将文件夹放入zip中
zipOut.putNextEntry(new ZipEntry("历史数据表.xls"));
while ((length = swapStream.read(buffer)) != -1) {
    zipOut.write(buffer,0,length);
}
swapStream.close();
// 关闭zip文件中之前打开的项
zipOut.closeEntry();
zipOut.close();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号