ExcelUtil工具类
package com.itcast.utils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
import com.itcast.entity.Purchase;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import static org.apache.poi.ss.usermodel.VerticalAlignment.*;
public class ExcelUtil {
/**
*
* @param list 保存的数据
*/
public static byte[] export(List<Purchase> list) {
HSSFWorkbook wb = new HSSFWorkbook();//创建excel表
HSSFSheet sheet = wb.createSheet();
sheet.setDefaultColumnWidth(20);//设置默认行宽
HSSFFont titleFontStyle = wb.createFont();
titleFontStyle.setBold(true);
//标题样式(加粗,垂直居中)
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setVerticalAlignment(CENTER);//垂直居中
cellStyle.setAlignment(HorizontalAlignment.CENTER); //水平居中
cellStyle.setFont(titleFontStyle);
//设置边框样式
cellStyle.setBorderBottom(BorderStyle.THIN); //下边框
cellStyle.setBorderLeft(BorderStyle.THIN);//左边框
cellStyle.setBorderTop(BorderStyle.THIN);//上边框
cellStyle.setBorderRight(BorderStyle.THIN);//右边框
//创建标题
HSSFRow rowTitle = sheet.createRow(0);
rowTitle.setHeightInPoints(20);
Object titleObj = list.get(0);
Field[] fields = titleObj.getClass().getDeclaredFields();
HSSFCell hc;
for (int i = 0; i < fields.length; i++) {
hc = rowTitle.createCell(i);
hc.setCellValue(fields[i].getName());
hc.setCellStyle(cellStyle);
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
//创建表格数据
int i = 1;
for (Object obj : list) {
fields = obj.getClass().getDeclaredFields();
HSSFRow rowBody = sheet.createRow(i);
rowBody.setHeightInPoints(20);
int j = 0;
for (Field f : fields) {
f.setAccessible(true);
Object va = f.get(obj);
if (null == va) {
va = "";
}
hc = rowBody.createCell(j);
hc.setCellValue(va.toString());
hc.setCellStyle(cellStyle);
j++;
}
i++;
}
wb.write(byteArrayOutputStream);
return byteArrayOutputStream.toByteArray();
} catch (Exception ex) {
System.out.println("未知异常");
} finally{
try {
wb.close();
} catch (IOException ex) {
}
}
return null;
}
}
Controller
@RequestMapping("/export")
public void export(HttpServletResponse response) {
try {
List<Purchase> user = purchaseService.find();
byte[] result = ExcelUtil.export(user);
response.getOutputStream().write(result);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("export.xls", "utf-8"));
response.getOutputStream().close();
} catch (Exception ex) {
}
//return "";
}
前端
<a href="export">报表导出</a>