excl 表格 生成 组装 导出
excl 表格 生成 组装 导出 直接返回文件流给浏览器
controller代码:
public void userExport(HttpServletResponse response) {
List<QUser> qlist = userServiceImpl.getUserListExport();
//导出文件名称
String fileName="用户列表";
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, List> excl = new HashMap<>();
List<String> rowlist = new ArrayList<>();
rowlist.add("用户id");
rowlist.add("用户手机号");
rowlist.add("用户名");
rowlist.add("注册时间");
rowlist.add("归属二级域名");
excl.put("rowList", rowlist);
excl.put("dataList", list);
for (QUser user : qlist) {
HashMap<String,String> map=new HashMap<>();
map.put("用户id",user.getUid().toString());
map.put("用户手机号",user.getLoginname());
map.put("用户名", user.getUname());
map.put("注册时间", sdf.format(user.getRegisterTime()));
map.put("归属二级域名", user.getTowDomain());
list.add(map);
}
//生成文件
HSSFWorkbook excel = ExceUtil.getExcel(excl, fileName);
try {
OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xlsx");//xlsx
response.setContentType("application/msexcel");
excel.write(output);
output.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
ExceUtil工具类代码
package com.xz.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ExceUtil {
/**
* 创建excel表格
*
* @param tableName sheet表名
* @return HSSFWorkbook
*/
public static HSSFWorkbook getExcel(Map<String, List> resultMap, String tableName) {
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
HSSFSheet sheet = wb.createSheet(tableName);
//设置表头
//创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
HSSFRow row = sheet.createRow(0);
//创建单元格并设置单元格内容
List rowList = resultMap.get("rowList");
List dataList = resultMap.get("dataList");
//插入表头单元格内容,表头数据
for (int i = 0; i < rowList.size(); i++) {
row.createCell(i).setCellValue(rowList.get(i).toString().trim());
}
//插入行数据
for (int i = 0; i < dataList.size(); i++) {
HSSFRow row1 = sheet.createRow(i + 1);
Map<String, String> map2 = (Map<String, String>) dataList.get(i);
for (Map.Entry<String, String> en : map2.entrySet()) {
for (int j = 0; j < rowList.size(); j++) {
if (rowList.get(j).equals(en.getKey())) {
if (en.getValue() == "" || en.getValue() == null) {
row1.createCell(j).setCellValue("");
} else {
row1.createCell(j).setCellValue(en.getValue().toString());
}
}
}
}
}
return wb;
}
}
这篇博客主要介绍了如何在Java中生成、组装并导出Excel表格,特别是通过直接返回文件流到浏览器的方式实现。
1649

被折叠的 条评论
为什么被折叠?



