struts-xml
<result name="createExcel" type="stream"> <param name="contentType"> application/vnd.ms-excel </param> <param name="inputName">excelStream</param> <param name="contentDisposition"> filename="export.xls" </param> <param name="bufferSize">1024</param> </result>
java
public String createExcel(){ excelStream = pndDeviceService.getExcelInputStream(); return "createExcel"; }
serviceImpl
public String createExcel(OutputStream os,List<PndDevice> list) { try { String str = ""; WritableWorkbook wbook = Workbook.createWorkbook(os); // OutputStream os建立excel文件new File("f:/PndDevice.xls" WritableSheet wsheet = wbook.createSheet("PND设备资料表", 0); // 工作表名称 // 设置Excel字体 WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK); WritableCellFormat titleFormat = new WritableCellFormat(wfont); String[] title = { "产品型号", "序列号", "Sim卡号", "通讯码", "当前地图版本", "供应商ID", "Pnd设备Id", "创建时间" }; // 设置Excel表头 for (int i = 0; i < title.length; i++) { Label excelTitle = new Label(i, 0, title[i], titleFormat); wsheet.addCell(excelTitle); } int c = 1; // 用于循环时Excel的行号 // ClassroomService cs = new ClassroomService(); // List list = pndDeviceDAO.findAll(); // 这个是从数据库中取得要导出的数据 Iterator it = list.iterator(); while (it.hasNext()) { PndDevice pd = (PndDevice) it.next(); Label content1 = new Label(0, c, pd.getProductType()); Label content2 = new Label(1, c, pd.getSerialNum()); Label content3 = new Label(2, c, pd.getSimCardNum().toString()); Label content4 = new Label(3, c, pd.getCommunicationCode()); Label content5 = new Label(4, c, pd.getCurrentMapVersion()); Label content6 = new Label(5, c, pd.getSuppliersId()); Label content7 = new Label(6, c, pd.getPndDeviceId()); Label content8 = new Label(7, c, pd.getCreateTime().toString()); wsheet.addCell(content1); wsheet.addCell(content2); wsheet.addCell(content3); wsheet.addCell(content4); wsheet.addCell(content5); wsheet.addCell(content6); wsheet.addCell(content7); wsheet.addCell(content8); c++; } str = "正确"; wbook.write(); // 写入文件 wbook.close(); os.close(); } catch (Exception e) { e.printStackTrace(); } return "true"; }
public InputStream getExcelInputStream() { //将OutputStream转化为InputStream ByteArrayOutputStream out = new ByteArrayOutputStream(); List<PndDevice> list = pndDeviceDAO.findAll(); createExcel(out,list); return new ByteArrayInputStream(out.toByteArray()); }