读
读取值顺序
1. 获取sheet -> row -> cell -> cellType -> 对应type获取值
例: sheet.getSheet() -> sheet.getRow(0) -> row.getCell();
-> cell.getCellTypeEnum() -> STRING对应 cell.getStringCellValue();
CellTypeEnum(类型枚举):
注: 日期也是NUMBERIC类型
写
ExcelWriter writer = ExcelUtil.getWriter("D:/test/test2007.xlsx");
// 跳过第一行
writer.passCurrentRow();
// 合并前6列当前行单元格并测试内容
writer.merge(5, "测试内容");
// 设置别名, 当前数据中name的属性,输出后对应在(名称)列下
writer.addHeaderAlias("name", "名称");
// 写入内存数据
writer.write(null);
// 把内存数据写入到文件中
writer.flush();
// 关流
writer.close();
样式
ExcelWriter writer = ExcelUtil.getWriter("D:/test/test2007.xlsx");
// 工作薄
Workbook workbook = writer.getWorkbook();
// 表
Sheet sheet = workbook.getSheet(0);
// 设置密码 默认单元是锁定的 只有设置了该值锁定才会生效
sheet.protectSheet("123");
Row row = sheet.createRow(0);
Cell cell = row.getCell(0);
// 创建单元格样式
CellStyle cellStyle = writer.getCellStyle();
// 边框
cellStyle.setBorderTop(BorderStyle.THIN); // 上边框
// 居中
cellStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中
// 字体
Font font = writer.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 15); // 字号
font.setItalic(Boolean.TRUE); // 斜体
font.setBold(Boolean.TRUE); // 加粗
font.setColor(IndexedColors.YELLOW.index); // 颜色
cellStyle.setFont(font);
// 取消当前单元格锁定
cellStyle.setLocked(Boolean.FALSE);
// 自定义单元格格式
short format = workbook.createDataFormat().getFormat("yyyy-MM");
cellStyle.setDataFormat(format);
cell.setCellStyle(cellStyle);
// 设置指定列的默认样式
sheet.setDefaultColumnStyle(1, workbook.createCellStyle());
// 设置指定列的默认宽
sheet.setDefaultColumnWidth(1000);
// 设置单元格下拉选择
sheet.addValidationData(setDataValidation(sheet, new String[]{"1", "2", "3"}, 1, 500, 1, 1));
// 计算列宽
sheet.setColumnWidth(1, "列名".getBytes().length*2*256);