Excel表格导出

1、poi导出

1.1 pom.xml


org.apache.poi
poi
3.15
compile

   1.2  ExcelUtils 类    

package com.zzdy.recharge.utils;
import com.jfinal.plugin.activerecord.Record;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;

@Slf4j
public class ExcelUtils {
/**
* 导出Excel
* @param sheetName sheet名称
* @param title 标题
* @param values 内容
* @return
*/
public static HSSFWorkbook createExcel(String sheetName,List title, List> values,List mapName){
HSSFWorkbook wb=null;
try{
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
// 创建工作簿
wb = new HSSFWorkbook();
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
//声明列对象
HSSFCell cell = null;
//创建标题
for(int i=0;i cell = row.createCell(i);
cell.setCellValue(title.get(i));
cell.setCellStyle(style);
}
//创建内容
if(null!=values && values.size()>0){
for(int i=0;i< values.size();i++){
Map v= values.get(i);
row = sheet.createRow(i+1);
//将内容按顺序赋给对应的列对象
for(int j=0;j String val=v.get(mapName.get(j))==null?"":String.valueOf(v.get(mapName.get(j)));
row.createCell(j).setCellValue(val);
}
}
}
}catch(Exception e){
e.printStackTrace();
}finally {
try{
wb.close();
}catch ( Exception e1){
e1.printStackTrace();
}
}
return wb;
}
/**
* 外部接口调用出口
*
* @param response 响应头
* @param title 表格标题
* @param title 列头(表头)
* @param values 数据列表
*/
public static void exportExcel(String sheetName, List title, List> values, HttpServletResponse response,List mapName) {
try {
HSSFWorkbook result = createExcel(sheetName, title, values,mapName);
String fileName = System.currentTimeMillis() + ".xlsx";
setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
result.write(os);
os.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
/**
* 发送响应流方法
*
* @param response HttpServletResponse
* @param fileName String
*/
public static void setResponseHeader(HttpServletResponse response, String fileName) {
try {
String fileName1 = new String(fileName.getBytes("UTF-8"), "UTF-8");
// response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName1);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (UnsupportedEncodingException e) {
log.error(e.getMessage());
}
}
}

1.3 Controller类

// 标题
List titalName=new ArrayList<>();
titalName.add("二维码编号");
titalName.add("生成的访问路径");
List mapName=new ArrayList<>();
mapName.add("qrcodeCode");
mapName.add("contentUrl");

// 值

List> resutData=new ArrayList<>();

Map values=new HashMap<>();

values.put("qrcodeCode","二维码");
values.put("contentUrl","路径");

//打包
ExcelUtils.exportExcel("名称",titalName,resutData,response,mapName);

你可能感兴趣的:(JAVA,excel)