最近在帮人家做一个查询的功能,需要用到poi导出excel表格,之前一直也没有用过,不知道是什么情况,后来在网上找了些资料看下,也就那么一回事。希望可以给大家一些思路吧。
首先是创建一个sheet,然后再往里面添加单元格,如果手动输出过表格的话,原理其实是差不多的。
- /**
- * 导出excel表
- * @throws IOException
- */
- public void showExcel() throws IOException {
- String [] headers= {"设备编码","设备种类","设备名称","所属总站","品牌","规格型号","提供商","设备价格","用途","出厂编号","责任人","生产日期","采购日期","启用日期","建档日期","保修日期","报废期至","备注"};
- String fileName = exportExcels(headers, ServletActionContext.getRequest());
- HttpServletResponse response=ServletActionContext.getResponse();
- response.setContentType("application/vnd.ms-excel; charset=utf-8");
- response.setHeader("Content-Disposition", "p_w_upload;filename="+fileName);
- byte[] buffered = new byte[1024];
- BufferedInputStream input = new BufferedInputStream(new FileInputStream(ServletActionContext.getRequest().getRealPath("/export")+"/"+fileName));
- DataOutputStream output = new DataOutputStream(response.getOutputStream());
- while (input.read(buffered,0,buffered.length) != -1) {
- output.write(buffered,0,buffered.length);
- }
- input.close();
- output.close();
- }
- /**
- * 创建行
- * @param cells
- * @param rowIndex
- * @param demoSheet
- */
- public static void createTableRow(List<String> cells, short rowIndex, HSSFSheet demoSheet) {
- // 创建第rowIndex行
- HSSFRow row = demoSheet.createRow((short) rowIndex);
- for (short i = 0; i < cells.size(); i++) {
- // 创建第i个单元格
- HSSFCell cell = row.createCell((short) i);
- cell.setCellValue(cells.get(i));
- }
- }
- /**
- * 创建sheet
- * @param tableHeader
- * @return
- */
- public HSSFSheet createExcelSheet(String [] tableHeader,HSSFWorkbook demoWorkBook) {
- List<Device> devices=deviceService.findAllDevices();
- HSSFSheet demoSheet = demoWorkBook.createSheet("devices");
- HSSFHeader header = demoSheet.getHeader();
- header.setCenter("全部设备表");
- HSSFRow headerRow = demoSheet.createRow((short) 0);
- for (int i = 0; i < tableHeader.length; i++) {
- HSSFCell headerCell = headerRow.createCell((short) i);
- headerCell.setCellValue(tableHeader[i]);
- }
- for (int j = 1; j < devices.size(); j++) {
- List<String> list = new ArrayList<String>();
- list.add(devices.get(j).getDev_no()!=null?devices.get(j).getDev_no():"");
- list.add(devices.get(j).getCategory().getCat_name()!=null?devices.get(j).getCategory().getCat_name():"");
- list.add(devices.get(j).getDev_name()!=null?devices.get(j).getDev_name():"");
- list.add(devices.get(j).getDepartment().getDep_name()!=null?devices.get(j).getDepartment().getDep_name():"");
- list.add(devices.get(j).getDev_brand()!=null?devices.get(j).getDev_brand():"");
- list.add(devices.get(j).getDev_spec()!=null?devices.get(j).getDev_spec():"");
- list.add(String.valueOf(devices.get(j).getDev_fac())!=null?String.valueOf(devices.get(j).getDev_fac()):"");
- list.add(String.valueOf(devices.get(j).getDev_price())!=null?String.valueOf(devices.get(j).getDev_price()):"");
- list.add(devices.get(j).getDev_purpose()!=null?devices.get(j).getDev_purpose():"");
- list.add(devices.get(j).getDev_bookid()!=null?devices.get(j).getDev_bookid():"");
- list.add(devices.get(j).getUser().getUser_name()!=null?devices.get(j).getUser().getUser_name():"");//责任人
- list.add(devices.get(j).getDev_protime()!=null?devices.get(j).getDev_protime():"");
- list.add(devices.get(j).getDev_booktime()!=null?devices.get(j).getDev_booktime():"");
- list.add(devices.get(j).getDev_usetime()!=null?devices.get(j).getDev_usetime():"");
- list.add(devices.get(j).getDev_settime()!=null?devices.get(j).getDev_settime():"");
- list.add(devices.get(j).getDev_retime()!=null?devices.get(j).getDev_retime():"");
- list.add(devices.get(j).getDev_dumptime()!=null?devices.get(j).getDev_dumptime():"");
- list.add(devices.get(j).getDev_remark()!=null?devices.get(j).getDev_remark():"");
- createTableRow(list, (short) j,demoSheet);
- }
- return demoSheet;
- }
- /**
- * 输出
- * @param os
- * @param tableHeader
- * @throws IOException
- */
- public void exportExcel(OutputStream os,String [] tableHeader,HSSFWorkbook demoWorkBook) throws IOException {
- HSSFSheet sheet = createExcelSheet(tableHeader,demoWorkBook);
- sheet.setGridsPrinted(true);
- HSSFFooter footer = sheet.getFooter();
- footer.setRight("Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages());
- demoWorkBook.write(os);
- }
- public String exportExcels(String[] tableHeader,HttpServletRequest request) {
- HSSFWorkbook demoWorkBook = new HSSFWorkbook();
- //SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
- String fileName="devicess.xls";
- request=ServletActionContext.getRequest();
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(request.getRealPath("/export")+"/"+fileName);
- exportExcel(fos,tableHeader,demoWorkBook);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- fos.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return fileName;
- }