Java导出Excel表格(jxl)

时间:2022-12-17 22:27:22

一、获取输出流创建excel文件

OutputStream os = response.getOutputStream();// 取得输出流 
response.reset();// 清空输出流
WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件

二、设置文件名称、定义输出类型

response.setHeader("Content-disposition", "attachment; filename="+new String(xlsName.getBytes("gbk"), "iso8859-1")+".xls");// 设定输出文件头  
response.setContentType("application/msexcel");// 定义输出类型
WritableSheet wsheet = wbook.createSheet("汇总表", 0); // sheet名称

三、设置单元格的默认宽度

 wsheet.getSettings().setDefaultColumnWidth(15);

四、获取内容数据

HashMap<String,Object> datamap=(HashMap<String, Object>) resultMap.get("data");//除表格第一行(列头)和第一列(行头)外的数据
List<Map<String,Object>> lj = (List<Map<String,Object>>)resultMap.get("lj");//每一行的头
List<Map<String,Object>> pl = (List<Map<String,Object>>)resultMap.get("pl");//每一列的头
String rqString = (String) resultMap.get("rq");
String dw = (String) resultMap.get("dw");

五、设置excel(内容)标题

//设置标题的字体样式和颜色

WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK); 

WritableCellFormat wcfFC = new WritableCellFormat(wfont);

//设置标题的位置(居中)

wcfFC.setAlignment(Alignment.CENTRE);

//从(0,0)开始合并pl长度个单元格
wsheet.mergeCells(0, 0, pl.size(), 0);

//把标题按定义的样式加入表格

wsheet.addCell(new Label(0, 0, tmptitle, wcfFC)); 


//1.生成固定标识
WritableCellFormat wcfFC3 = new WritableCellFormat();
wcfFC3.setBorder(Border.ALL, BorderLineStyle.THIN);//设置单元格边框All全边框,THIN实线
wsheet.addCell(new Label(0, 2, "XX\\品类",wcfFC3));
//循环表头
for(int i=0;i < pl.size();i++){
       wsheet.addCell(new Label(i+1, 2, pl.get(i).get("JC").toString(),wcfFC3));
 }
//2.生成左侧除第一行外的第一列
      for (int i = 0; i < lj.size(); i++) {
               wsheet.addCell(new Label(0, i+3, lj.get(i).get("JC").toString(),wcfFC3));
          }
        for (int i = 0; i < pl.size(); i++) {
                for (int j = 0; j < lj.size(); j++) {
                String pldm = (String) pl.get(i).get("DM");
                String ljdm = (String) lj.get(j).get("DM");
                String key = ljdm+pldm+"CS";
                wsheet.addCell(new Label(i+1, j+3, datamap.get(key)== null?"0":datamap.get(key).toString(),wcfFC3));
             }
          }
          wsheet.mergeCells(0, lj.size()+3, pl.size(), lj.size()+3);
          wsheet.addCell(new Label(0, lj.size()+3, dw));
                
           // 主体内容生成结束          
          wbook.write(); // 写入文件  
          wbook.close();  
         os.close(); // 关闭流

=====================================================================

方法详情查看文档

=====================================================================

其他相关文章可参考:

http://zhouhaitao.iteye.com/blog/1842769