使用 poi 创建表格 :
/**
* 导出 表
* @param ids
* @return
*/
public Workbook writeExcel(long[] ids,Ioc ioc,HttpSession session, @Param("..") Pager<MissedAsset> pager,
@Param("search") String search){
/*HSSFWorkbook wook = new HSSFWorkbook();
HSSFSheet sheet=wook.createSheet("遗漏资产信息");
HSSFRow row=sheet.createRow(0);*/
XSSFWorkbook work = new XSSFWorkbook();
XSSFSheet sheet = work.createSheet("遗漏资产信息");
//在sheet中创建一行
XSSFRow row = sheet.createRow(0);
//在该行写入各种类型的数据
row.createCell(0).setCellValue("资产IP");
row.createCell(1).setCellValue("发现时间");
row.createCell(2).setCellValue("备注");
// 调整列宽
sheet.setColumnWidth(0, (short)4500);
sheet.setColumnWidth(1, (short)5500);
sheet.setColumnWidth(2, (short)8500);
// 遍历数据库 取出数据,放入表格里
//在写入 日期格式的 数据需要进行特殊处理(这是一种 简单的处理方式)
int rowNum = 1;
//List<DownLineAsset> list = getList(ids);
List<MissedAsset> list = null;
pager.setPage(1);
pager.setPageSize(10000);
// 选择 条目的
if(search == null || search.equals("") ){
BoolQueryBuilder qb = QueryBuilders.boolQuery();
if(ids == null || ids.length == 0){
// 全查
list = MissedAssetService.getInstance().getList(pager,null).getData();
}else{
qb.must(QueryBuilders.inQuery("id", ids));
list = MissedAssetService.getInstance().getList(pager,qb).getData();
}
}else{
// 说明 有 查询条件
// 1.已经选择 具体 信息,则继续 按照 ids 查询
if( ids != null && ids.length > 0){
//list = getList(ids);
BoolQueryBuilder qb = QueryBuilders.boolQuery();
qb.must(QueryBuilders.inQuery("id", ids));
list = MissedAssetService.getInstance().getList(pager,qb).getData();
}else{
// 2.说明 有满足条件且 没有具体选择,则需要 模糊查询出符合条件的 所有信息
// 重新 设置 page 最大导出20 万数据,多了内存受不了
Pager<MissedAsset> customQuery = MissedAssetService.getInstance().getFuzzyList(pager, search);
//Pager<AllProviceAddress> customQuery = customQuery(ioc, session, pager, AllProviceAddress.class,search);
list = customQuery.getData();
}
}
for (MissedAsset ifInfo : list) {
XSSFRow rowInsert=sheet.createRow(rowNum);
rowInsert.createCell(0).setCellValue(ifInfo.getIP());
rowInsert.createCell(1).setCellValue(ifInfo.getCreateTime());
rowInsert.createCell(2).setCellValue(ifInfo.getRemark());
rowNum ++;
}
return work;
}