easypoi常规应用

easypoi常规应用

easypoi没有设置orderNum默认从上往下排序!!!
1、表头如何分组?

// groupName可以实现表头分组  farmat可以把时间转字符串格式
@Excel(name = "出生日期", format = "yyyy-MM-dd", width = 20, groupName = "时间", orderNum = "4")
private Date birthday = null;

2、如何表格中添加图片导出?

// type 导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本
// imageType 导出类型 1 从file读取 2 是从数据库中读取 默认是文件 同样导入也是一样的
// 支持导入url图片噢
@Excel(name = "公司LOGO", type = 2 ,width = 40 , height = 20,imageType = 1)

3、如何实现单元格下拉框?

// addressList 必须为true
// 配合使用dict字段或replace字段,建议使用replace,dict还需要写实现类比较麻烦
@Excel(name = "B站登记", dict = "level", addressList = true)
private int    bilibili;
// status使用String类型才能转换成值。嗯!目前是这么认为的!
@Excel(name = "状态", replace = {"初始化_0", "正常_1", "注销_2"}, addressList = true)
private String status;

字典实现类-被引用
4、1-10万数据大数据导出

// 使用exportBigExcel()方法就好
ExcelExportUtil.exportBigExcel()

5、关于枚举属性的使用(现在POJO中极少使用枚举,因为枚举交互并不友好)

// 这种几乎用不到,导出的就是枚举名称,很少场景用得到
@Excel(name ="基础状态" )
private StatusEnum baseStatus;
// 导出枚举中的message
@Excel(name ="状态" , enumExportField = "message", enumImportMethod = "getByMessage")
private StatusEnum status;

6、导出时,怎么隐藏字段?

// isColumnHidden = true 导出时该字段会隐藏
@Excel(name = "进校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd",isColumnHidden = true)
private Date registrationDate;

7、导出时,如何实现统计?

// 设置type为10,表示数字类型;设置isStatistics为true,表示统计。两个条件缺一不可
@Excel(name = "dou", type = 10, isStatistics = true)

8、number格式转换

转为百分比?没玩过
@Excel(name = "long", numFormat = "#.##%")

9、简单表格导入

// 该框架有点特殊,导入需要设置titleRows为1,否则会报错。感觉比较奇怪,先这么用着!
ImportParams params = new ImportParams();
params.setTitleRows(1);
List<ImportCheckOneLine> list = ExcelImportUtil.importExcel(new File(FileUtilTest.getWebRootPath("import/check.xls")),
    ImportCheckOneLine.class, params);
// isImportField 为true 表示导入校验是否包含该属性,没有则报错
@Excel(name = "姓名", isImportField = "true")

10、怎么创建表格格式?

// 格式都是通过workbook对象生成的
CellStyle sellStyle = workbook.createCellStyle();
11、表格怎么以PDF格式导出?
// 定义PDF文件基础信息
PdfExportParams params = new PdfExportParams("学生信息");
File file = new File("D:/home/excel/PdfImageTest.pdf");
file.createNewFile();
// PDF导出关键方法
PdfExportUtil.exportPdf(params, StudentEntityImage.class, studentList, new FileOutputStream(file));

12、表格怎么以Word格式导出?

// 都需要模板,只能填充模板中的值
public class ManyPageWordTest {
    @Test
    public  void testPage() {
        List<Map<String, Object>> list = new ArrayList<>();
        for (int i = 0; i < 1; i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("name", "小明" + i);
            list.add(map);
        }
        try {
            XWPFDocument doc = WordExportUtil
                    .exportWord07("word/loan.docx", list);
            FileOutputStream fos = new FileOutputStream("D:/home/excel/ManyPageWordTest.拼接多页测试.docx");
            doc.write(fos);
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

模板:
easypoi常规应用_第1张图片
生成效果:
easypoi常规应用_第2张图片

easypoi对poi对poi做了封装,满足了大部分功能,但也不是完美的。‘表格尾部添加签名’功能还是得自己实现的。实现代码如下:
详细解析版

// easypoi的导出属性 标题、副标题、sheet(表格)名称、是否设置表头
ExportParams exportParams = new ExportParams();
// 设置表头
exportParams.setCreateHeadRows(true);
exportParams.setSheetName(MessageConstant.Game_Trade_Order_List);
exportParams.setTitle(String.format("%s%s ", MessageConstant.Game_Trade_Order_List,DateUtil.getDateTimeString()));
exportParams.setSecondTitle("日期:                 ");
// 利用easypoi的工具类生成workbook(工作簿)对象
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, OrderGameVO.class, orderGameVOList);
// 尾部加签名步骤
// 1、获取对应的sheet
Sheet sheet = workbook.getSheet(MessageConstant.Game_Trade_Order_List);
// 2、获取目前表格最后一行,以及得到一行的单元格总数量(哈哈,我觉得取最后一行比较稳)
int lastRowNum = sheet.getLastRowNum();
short lastCellNum = sheet.getRow(2).getLastCellNum();
// 3、创建合并单元格,并整合到sheet中 ||参数(开始行,结束行,开始单元格,结束单元格)
CellRangeAddress rangeAddress = new CellRangeAddress(lastRowNum+1 , lastRowNum+2 , 0, lastCellNum-1);
sheet.addMergedRegion(rangeAddress);
// 4、往合并的单元格填充数据
Cell signatureCell = sheet.createRow(lastRowNum + 1).createCell(0);
// 创建格式,提供单元格使用
CellStyle signatureCellStyle = workbook.createCellStyle();
signatureCellStyle.setAlignment(HorizontalAlignment.LEFT);
signatureCell.setCellStyle(signatureCellStyle);
signatureCell.setCellValue("指标:__________________   审核:__________________   批准:__________________ ");
//使用response将workbook内容写回浏览器
ExcelUtiles.downLoadExcel(fileName,response,workbook);

感谢上海悟耘信息提供的开源框架
官网:https://opensource.afterturn.cn/
开发文档:http://doc.wupaas.com/docs/easypoi/easypoi-1c0u6ksp2r091
gitee代码库:https://gitee.com/lemur/easypoi
测试项目:http://git.oschina.net/lemur/easypoi-test (满足大部分工作所需案例,直接跑test学习,效率比较高)

你可能感兴趣的:(Java)