天天看点

poi导出excel表

最近在帮人家做一个查询的功能,需要用到poi导出excel表格,之前一直也没有用过,不知道是什么情况,后来在网上找了些资料看下,也就那么一回事。希望可以给大家一些思路吧。

首先是创建一个sheet,然后再往里面添加单元格,如果手动输出过表格的话,原理其实是差不多的。

  1. /**  
  2.      * 导出excel表  
  3.      * @throws IOException   
  4.      */ 
  5.     public void showExcel() throws IOException {  
  6.         String [] headers= {"设备编码","设备种类","设备名称","所属总站","品牌","规格型号","提供商","设备价格","用途","出厂编号","责任人","生产日期","采购日期","启用日期","建档日期","保修日期","报废期至","备注"};  
  7.         String fileName = exportExcels(headers, ServletActionContext.getRequest());  
  8.         HttpServletResponse response=ServletActionContext.getResponse();  
  9.         response.setContentType("application/vnd.ms-excel; charset=utf-8");  
  10.         response.setHeader("Content-Disposition", "p_w_upload;filename="+fileName);  
  11.         byte[] buffered = new byte[1024];  
  12.         BufferedInputStream input = new BufferedInputStream(new FileInputStream(ServletActionContext.getRequest().getRealPath("/export")+"/"+fileName));  
  13.         DataOutputStream output = new DataOutputStream(response.getOutputStream());  
  14.         while (input.read(buffered,0,buffered.length) != -1) {  
  15.             output.write(buffered,0,buffered.length);  
  16.         }  
  17.         input.close();  
  18.         output.close();  
  19.     }  
  20.     /**  
  21.      * 创建行  
  22.      * @param cells  
  23.      * @param rowIndex  
  24.      * @param demoSheet  
  25.      */ 
  26.     public static void createTableRow(List<String> cells, short rowIndex, HSSFSheet demoSheet) {  
  27.         // 创建第rowIndex行  
  28.         HSSFRow row = demoSheet.createRow((short) rowIndex);  
  29.         for (short i = 0; i < cells.size(); i++) {  
  30.             // 创建第i个单元格  
  31.             HSSFCell cell = row.createCell((short) i);  
  32.             cell.setCellValue(cells.get(i));  
  33.         }  
  34.     }  
  35.     /**  
  36.      * 创建sheet  
  37.      * @param tableHeader  
  38.      * @return  
  39.      */ 
  40.     public  HSSFSheet createExcelSheet(String [] tableHeader,HSSFWorkbook demoWorkBook) {  
  41.         List<Device> devices=deviceService.findAllDevices();  
  42.         HSSFSheet demoSheet = demoWorkBook.createSheet("devices");  
  43.         HSSFHeader header = demoSheet.getHeader();  
  44.         header.setCenter("全部设备表");  
  45.         HSSFRow headerRow = demoSheet.createRow((short) 0);  
  46.         for (int i = 0; i < tableHeader.length; i++) {  
  47.             HSSFCell headerCell = headerRow.createCell((short) i);  
  48.             headerCell.setCellValue(tableHeader[i]);  
  49.         }  
  50.         for (int j = 1; j < devices.size(); j++) {  
  51.             List<String> list = new ArrayList<String>();  
  52.             list.add(devices.get(j).getDev_no()!=null?devices.get(j).getDev_no():"");  
  53.             list.add(devices.get(j).getCategory().getCat_name()!=null?devices.get(j).getCategory().getCat_name():"");  
  54.             list.add(devices.get(j).getDev_name()!=null?devices.get(j).getDev_name():"");  
  55.             list.add(devices.get(j).getDepartment().getDep_name()!=null?devices.get(j).getDepartment().getDep_name():"");  
  56.             list.add(devices.get(j).getDev_brand()!=null?devices.get(j).getDev_brand():"");  
  57.             list.add(devices.get(j).getDev_spec()!=null?devices.get(j).getDev_spec():"");  
  58.             list.add(String.valueOf(devices.get(j).getDev_fac())!=null?String.valueOf(devices.get(j).getDev_fac()):"");  
  59.             list.add(String.valueOf(devices.get(j).getDev_price())!=null?String.valueOf(devices.get(j).getDev_price()):"");  
  60.             list.add(devices.get(j).getDev_purpose()!=null?devices.get(j).getDev_purpose():"");  
  61.             list.add(devices.get(j).getDev_bookid()!=null?devices.get(j).getDev_bookid():"");  
  62.             list.add(devices.get(j).getUser().getUser_name()!=null?devices.get(j).getUser().getUser_name():"");//责任人  
  63.             list.add(devices.get(j).getDev_protime()!=null?devices.get(j).getDev_protime():"");  
  64.             list.add(devices.get(j).getDev_booktime()!=null?devices.get(j).getDev_booktime():"");  
  65.             list.add(devices.get(j).getDev_usetime()!=null?devices.get(j).getDev_usetime():"");  
  66.             list.add(devices.get(j).getDev_settime()!=null?devices.get(j).getDev_settime():"");  
  67.             list.add(devices.get(j).getDev_retime()!=null?devices.get(j).getDev_retime():"");  
  68.             list.add(devices.get(j).getDev_dumptime()!=null?devices.get(j).getDev_dumptime():"");  
  69.             list.add(devices.get(j).getDev_remark()!=null?devices.get(j).getDev_remark():"");  
  70.             createTableRow(list, (short) j,demoSheet);  
  71.         }  
  72.         return demoSheet;  
  73.     }  
  74.     /**  
  75.      * 输出  
  76.      * @param os  
  77.      * @param tableHeader  
  78.      * @throws IOException  
  79.      */ 
  80.     public void exportExcel(OutputStream os,String [] tableHeader,HSSFWorkbook demoWorkBook) throws IOException {  
  81.         HSSFSheet sheet = createExcelSheet(tableHeader,demoWorkBook);  
  82.         sheet.setGridsPrinted(true);  
  83.         HSSFFooter footer = sheet.getFooter();  
  84.         footer.setRight("Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages());  
  85.         demoWorkBook.write(os);  
  86.     }  
  87.      public  String exportExcels(String[] tableHeader,HttpServletRequest request) {  
  88.          HSSFWorkbook demoWorkBook = new HSSFWorkbook();  
  89.          //SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");  
  90.         String fileName="devicess.xls";  
  91.         request=ServletActionContext.getRequest();  
  92.         FileOutputStream fos = null;  
  93.         try {  
  94.             fos = new FileOutputStream(request.getRealPath("/export")+"/"+fileName);  
  95.             exportExcel(fos,tableHeader,demoWorkBook);  
  96.         } catch (Exception e) {  
  97.             e.printStackTrace();  
  98.         } finally {  
  99.             try {  
  100.                 fos.close();  
  101.             } catch (Exception e) {  
  102.                 e.printStackTrace();  
  103.             }  
  104.         }  
  105.         return fileName;  
  106.     } 

继续阅读