我使用的是Springboot框架开发的。首先需要在pom.xml文件中引入以下maven包:
org.apache.poi
poi
3.10-FINAL
org.apache.poi
poi-ooxml
3.8
然后编写一个excel工具类,使用时直接调用即可。
package com.label.tool;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class ExcelTool {
/**
* Excel批量导出
* @param response 响应结果
* @param title 标题
* @param head 表头
* @param t 实体类
* @param sheetName 表标签名
* @param fileName 文件名称
* @param columnWidth 表格宽度
* @throws Exception
*/
public static void exportExcel(HttpServletResponse response,
String title,
Listhead,
List> t,
String sheetName,
String fileName,
int columnWidth) throws Exception {
//声明一个工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//生成一个表格,设置表格名称
HSSFSheet sheet = workbook.createSheet(sheetName);
//设置表格列宽度
sheet.setDefaultColumnWidth(columnWidth);
//写入表头数据
int rowIndex = 0;
if(!"".equals(title)&&title!=null) {
HSSFRow rowHead = sheet.createRow(0);
HSSFCell cell = rowHead.createCell(0);
HSSFRichTextString text = new HSSFRichTextString(title);
cell.setCellValue(text);
// 设置字体
CellStyle cellStyle = workbook.createCellStyle();
HSSFFont redFont = workbook.createFont();
//设置字体大小
redFont.setFontHeightInPoints((short) 18);
//字体
redFont.setFontName("黑体");
//设置居中
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle.setFont(redFont);
cell.setCellStyle(cellStyle);
CellRangeAddress region = new CellRangeAddress(0, 1, 0, 14);
sheet.addMergedRegion(region);
rowIndex = 2;
}
int cellIndex=0;
HSSFRow rowHead = sheet.createRow(rowIndex++);
for(String h : head){
//创建一个row行,然后自增1
//创建一个单元格
HSSFCell cell = rowHead.createCell(cellIndex++);
//创建一个内容对象
HSSFRichTextString text = new HSSFRichTextString(h);
//将内容对象的文字内容写入到单元格中
cell.setCellValue(text);
}
for(int j=0;j