在实际开发中经常会有导出表格数据的需求,原生POI操作如下
//poi操作
Sheet sheet = workbook.createSheet("会员注册信息表");
Row row0 = sheet.createRow(0);
//1.起始行 2.结束行 3.起始列 4.结束列
CellRangeAddress cra = new CellRangeAddress(0, 0, 0, 10);
sheet.addMergedRegion(cra);
//for循环创建单元格
for (int i = 0; i < 10; i++) {
Cell cell = row0.createCell(i);
}
row0.getCell(0).setCellValue("会员注册信息表");
Row row1 = sheet.createRow(1);
String[] rowName = {"主体名称", "注册手机号", "注册时间", "是否会员", "信息是否完善", "用户状态", "信息完善时间", "试用到期时间", "会员购买时间", "会员过期时间"};
//给第一行单元格赋值
for (int i = 0; i < rowName.length; i++) {
Cell cell = row1.createCell(i);
for (int k = 0; k <= i; k++) {
cell.setCellValue(rowName[k]);
}
}
//外层for循环创建行,内层赋值
for (int i = 0; i < registerList.size(); i++) {
NjtUserRegister register = registerList.get(i);
String companyName = register.getCompanyName();
String mobilePhone = register.getMobilePhone();
Date registerTime = register.getRegisterTime();
Integer memberFlag = register.getMemberFlag();
Integer perfectFlag = register.getPerfectFlag();
Integer userStatus = register.getUserStatus();
Date perfectTime = register.getPerfectTime();
Date probationTime = register.getProbationTime();
Date memberTime = register.getMemberTime();
Date memberExpiredTime = register.getMemberExpiredTime();
ArrayList<Object> list = new ArrayList<>();
list.add(companyName);
list.add(mobilePhone);
list.add(registerTime);
list.add(memberFlag);
list.add(perfectFlag);
list.add(userStatus);
list.add(perfectTime);
list.add(probationTime);
list.add(memberTime);
list.add(memberExpiredTime);
Row rows = sheet.createRow(i + 2);
for (int k = 0; k < list.size(); k++) {
Cell cell = rows.createCell(k);
Object o = list.get(k);
if (o != null) {
if (o instanceof Date) {
//日期格式转换
DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
String s = dateFormat.format(o);
cell.setCellValue(s);
}
if (!(o instanceof Date)){
cell.setCellValue(o.toString());
}
}
}
}
涉及知识点:
POI操作,创建工作簿,创建表,创建单元格,导出日期格式转换,集合相关操作