hefeidaxia 发表于 2013-2-7 09:52:38

java之报表生成excel并提供下载

public InputStream getInputStream(){HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("sheet1");HSSFRow row = sheet.createRow(0);HSSFCell cell = row.createCell((short) 0);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("序号");cell = row.createCell((short) 1);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("姓");cell = row.createCell((short) 2);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("名");cell = row.createCell((short) 3);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("年龄");List<User> list = this.findAll();for (int i = 0; i < list.size(); ++i){User user = list.get(i);row = sheet.createRow(i + 1);cell = row.createCell((short) 0);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(i + 1);cell = row.createCell((short) 1);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(user.getFirstname());cell = row.createCell((short) 2);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(user.getLastname());cell = row.createCell((short) 3);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(user.getAge());}File file = new File("test.xls");try{OutputStream os = new FileOutputStream(file);wb.write(os);os.close();}catch (Exception e){e.printStackTrace();}InputStream is = null;try{is = new FileInputStream(file);}catch (FileNotFoundException e){e.printStackTrace();}return is;}
用到的包主要是Apache POI包,要想下载文件,首先把下载数据定义为一个输入输出流,里面的调用poi包里面的方法 HSSFWorkbook这个方法是创建一个工作表,也就是excel表,HSSFSheet是创建它的列,HSSFCell是创建它的行数,我用的是SSH框架,在里面要注意service里面要定义的下载名称要与struts配置文件里面的文件名一样才能成功下载,例public InputStream getDownloadFile(){return this.userService.getInputStream();}
那么下载的名字就应该是downloadFile,以下是struts XML配置
<action name="generateExcel" class="GenerateExcelAction"><result name="success" type="stream"><param name="contentType">application/vnd.ms-excel</param><param name="contentDisposition">filename="ALLUser.xls"</param><param name="inputName">downloadFile</param></result></action>
这样就能正确下载了。
页: [1]
查看完整版本: java之报表生成excel并提供下载