excel操作工具

来源:互联网 发布:刘亦菲家族 知乎 编辑:程序博客网 时间:2024/06/06 02:37
public class ExcelUtil {

 public static boolean createExcel(HttpServletResponse response, Map map) {
     WritableWorkbook wbook = null;
     WritableSheet sheet = null;
     OutputStream os = null;
     try {
       response.reset();   
       
       String fileName="客户资料"+TimeUtil.getNowDayTimeShortStr();
       
       //生成文件名
       response.setHeader("Content-disposition", "attachment; filename="
           + new String(fileName.getBytes("GB2312"), "ISO8859-1")
           + ".xls");
       response.setContentType("application/msexcel");
       os = response.getOutputStream();
       wbook = Workbook.createWorkbook(os);
       sheet = wbook.createSheet("信息", 0);

       int row = 0;

       //填写表头
       setSheetTitle(sheet, row);

       //遍历map,填充数据
       setSheetData(sheet, map, row);

       wbook.write();
       os.flush();
     } catch (Exception e) {
       //自己处理
      e.printStackTrace();
     }finally {
         try {//切记,此处一定要关闭流,否则你会下载一个空文件
          if (wbook != null)
              wbook.close();
          if (os != null)
              os.close();
         } catch (IOException e) {
            e.printStackTrace();
         } catch (WriteException e) {
            e.printStackTrace();
      }
  }
  return false;
 }

 

private static void setSheetTitle(WritableSheet sheet, int row)
   throws RowsExceededException, WriteException {
  // 设置excel标题格式
  WritableFont wfont = new WritableFont(WritableFont.ARIAL, 12,
    WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
    Colour.BLACK);
  WritableCellFormat wcfFC = new WritableCellFormat(wfont);

  //设置每一列宽度
  sheet.setColumnView(0,13);
  sheet.setColumnView(1,20);
  sheet.setColumnView(2,13);
  sheet.setColumnView(3,13);
  sheet.setColumnView(4,13);

  //填写第一行提示信息

  sheet.addCell(new Label(0, row, "登录方式", wcfFC));
  sheet.addCell(new Label(1, row, "帐号", wcfFC));
  sheet.addCell(new Label(2, row, "次数", wcfFC));
  sheet.addCell(new Label(3, row, "最近日期", wcfFC));
  sheet.addCell(new Label(4, row, "最近时间", wcfFC));
 }

 private static void setSheetData(WritableSheet sheet, Map map, int row)
   throws RowsExceededException, WriteException {
  WritableFont wfont = new WritableFont(WritableFont.ARIAL, 10,
    WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
    Colour.RED);
  WritableCellFormat wcfFC = new WritableCellFormat(wfont);

  //从map中获取数据
  List<Terminal> terminalList = (List<Terminal>) map.get("terminalList");
  if(terminalList.size()==0){
  row++;
  sheet.mergeCells(0, 1, 4, 1);
  sheet.addCell(new Label(0, row, "暂无相关数据...",wcfFC));
  }else{
  //遍历并填充
  for (Terminal terminal : terminalList) {
   row++;
   sheet.addCell(new Label(0, row, terminal.getType()));
   sheet.addCell(new Label(1, row, terminal.getName()));
   sheet.addCell(new Label(2, row, ""+terminal.getLogin_count()));
   sheet.addCell(new Label(3, row, terminal.getDate()));
   sheet.addCell(new Label(4, row, terminal.getHour()));
  }
  }
 }
}
0 0
原创粉丝点击