相信很多人在项目过程中都会遇到将数据导出到excel中的需求,对于这个问题,首先此文章讲述的是自己使用的方法:我是通过poi导出的2003版的excel表格
方法一:代码如下
public File writeExcel(List<Map<String,Object>> writeContent,String titleList[],String userId) {
WritableWorkbook book = null;
File file = new File(nfsUrl+userId+"/"+"outSourceExport1.zip");//首先需要创建一个zip包
try {
// 打开文件
book = Workbook.createWorkbook(file);
// 参数0表示这是第一页
int linenum = 0;
WritableSheet sheet = book.createSheet("催收导出数据", 0);
for(int i=0;i<titleList.length;i++){
sheet.addCell(new Label(i, linenum, titleList[i]));
}
linenum ++;
if(writeContent!=null && !writeContent.isEmpty()){//此处是传进来的自己的数据(就是要写到excel中的数据集合)
for(int i=0; i<writeContent.size(); i++){
Map<String, Object> columnMap = writeContent.get(i);
Iterator iter = columnMap.entrySet().iterator();
int y = 0;
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
if(val!=null){sheet.addCell(new Label(y, linenum, val.toString()));}else{sheet.addCell(new Label(y, linenum, null));}
y ++;
}
linenum ++;
}
}
// 写入数据并关闭文件
book.write();
} catch (Exception e) {
System.out.println(e);
}finally{
if(book!=null){
try {
book.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return file;
}
调用
public String getFile(T_L000800 tL000800){
//此处是自己要写入的数据集合,自己查出来即可
List<Map<String,Object>> resultList = jdbcTemplate.queryForList(sqlColumnBuilder.toString());
//调用上面的写入excel方法(此处的resultList:是自己的数据集合,titleList是excel中的title,最后一个参数是我需要的,可以不传)
File exportFile = writeExcel(resultList,titleList,tL000800.getTuserId());
if(exportFile.exists()){
//加载导出文件,先创建一个outputStream(这里是因为我没有传入response,若用response的话直接ServletOutputStream out = response.getOutputStream()获取输出流即可)
FileOutputStream out = new FileOutputStream(new File(nfsUrl+tL000800.getTuserId()+"/"+"outSourceExport.zip"