List<Map<String, String>> result = new ArrayList<>();
Map<String, String> map = new LinkedHashMap<>();
map.put("U_ID", "...");
...
result.add(map);
步骤二:定义变量值,创建Excel文档对象。
String fileName = "公司员工信息表.xls"; // 定义文件名
String headString = "公司员工信息表"; // 定义表格标题
String sheetName = "工作表一"; // 定义工作表表名
String filePath = "E:\\test\\"; // 文件本地保存路径
String[] thead = {"主键(U_ID)","状态(UDT_STATE)","姓名(U_NAME)","SAP编号(UDT_SAPID)","性别(U_SEX)","管理关系归属(UDT_ASCRIPTION)","所属公司(UDT_COMPANY)","一级部门(UDT_FIRST)","二级部门(UDT_SECOND)","职务岗位(POSSITION_ID)","厂区(UDT_PARK)","城市(CITY_NAME)"}; // 定义表头内容
int[] sheetWidth = {2500,3500,3000,4000,2500,5000,5000,5000,5000,5000,3500,3500}; // 定义每一列宽度
HSSFWorkbook wb = new HSSFWorkbook(); // 创建Excel文档对象
HSSFSheet sheet = wb.createSheet(sheetName); // 创建工作表
表格分为了三部分,按顺序生成。基本思路是先创建行,再创建每一行中的每一格,添加样式,填入内容。
// ①创建表格标题
ExcelUtil.createHeadTittle(wb, sheet, headString, result.get(0).size() - 1);
// result.get(0).size() - 1为表格占用列数,从0开始
// ②创建表头
ExcelUtil.createThead(wb, sheet, thead, sheetWidth);
// ③填入数据
ExcelUtil.createTable(wb, sheet, result);
调用的ExcelUtil工具类代码如下:
public class ExcelUtil {
/**
* 创建表格标题
* @param wb Excel文档对象
* @param sheet 工作表对象
* @param headString 标题名称
* @param col 标题占用列数
*/
public static void createHeadTittle(HSSFWorkbook wb,HSSFSheet sheet,String headString,int col){
HSSFRow row = sheet.createRow(0); // 创建Excel工作表的行
HSSFCell cell = row.createCell(0); // 创建Excel工作表指定行的单元格
row.setHeight((short) 1000); // 设置高度
cell.setCellType(HSSFCell.ENCODING_UTF_16); // 定义单元格为字符串类型
cell.setCellValue(new HSSFRichTextString(headString));
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, col)); // 指定标题合并区域
// 定义单元格格式,添加单元格表样式,并添加到工作簿
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 指定单元格垂直居中个对齐
cellStyle.setWrapText(true); // 指定单元格自动换行
// 设置单元格字体
HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("微软雅黑");
font.setFontHeightInPoints((short) 16); // 字体大小
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
}
/**
* 创建表头
* @param wb Excel文档对象
* @param sheet 工作表对象
* @param thead 表头内容
* @param sheetWidth 每一列宽度
*/
public static void createThead(HSSFWorkbook wb,HSSFSheet sheet,String[] thead,int[] sheetWidth){
HSSFRow row1 = sheet.createRow(1);
row1.setHeight((short) 600);
// 定义单元格格式,添加单元格表样式,并添加到工作簿
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle.setWrapText(true);
cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); // 设置背景色
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 设置右边框类型
cellStyle.setRightBorderColor(HSSFColor.BLACK.index); // 设置右边框颜色
// 设置单元格字体
HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("宋体");
font.setFontHeightInPoints((short) 10);
cellStyle.setFont(font);
// 设置表头内容
for(int i=0;inew HSSFRichTextString(thead[i]));
cell1.setCellStyle(cellStyle);
}
// 设置每一列宽度
for(int i=0;i/**
* 填入数据
* @param wb // Excel文档对象
* @param sheet // 工作表对象
* @param result // 表数据
*/
public static void createTable(HSSFWorkbook wb,HSSFSheet sheet,List
FileOutputStream fos = new FileOutputStream(new File(filePath+fileName));
// filePath,fileName是如上定义的文件保存路径及文件名
wb.write(fos);
fos.close();
wb.close();