/** * 生成excel并下载 */ public void exportExcel(){ File newFile = createNewFile(); //File newFile = new File("d:/ss.xls"); //新文件写入数据,并下载***************************************************** InputStream is = null; HSSFWorkbook workbook = null; HSSFSheet sheet = null; try { is = new FileInputStream(newFile); workbook = new HSSFWorkbook(is); //获取第一个sheet sheet = workbook.getSheetAt(0); } catch (Exception e1) { e1.printStackTrace(); } if(sheet != null){ try { //写数据 FileOutputStream fos = new FileOutputStream(newFile); HSSFRow row = sheet.getRow(4); HSSFCell cell = row.getCell(1); System.out.println(cell.getStringCellValue()); cell.setCellValue("ssssssssssssssssssssssssssssssssssssssssssss"); workbook.write(fos); fos.flush(); fos.close(); //下载 InputStream fis = new BufferedInputStream(new FileInputStream(newFile)); HttpServletResponse response = this.getResponse(); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); response.reset(); response.setContentType("text/html;charset=UTF-8"); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/x-msdownload"); String newName = URLEncoder.encode("采购合同"+System.currentTimeMillis()+".xls", "UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=\""+ newName + "\""); response.addHeader("Content-Length", "" + newFile.length()); toClient.write(buffer); toClient.flush(); } catch(Exception e) { e.printStackTrace(); }finally { try { if (null != is) { is.close(); } } catch (Exception e) { e.printStackTrace(); } } } //删除创建的新文件 //this.deleteFile(newFile); } /** * 复制文件 * * @param s * 源文件 * @param t * 复制到的新文件 */ public void fileChannelCopy(File s, File t) { try { InputStream in = null; OutputStream out = null; try { in = new BufferedInputStream(new FileInputStream(s),1024); out = new BufferedOutputStream(new FileOutputStream(t),1024); byte[] buffer = new byte[1024]; int len; while ((len=in.read(buffer))!=-1) { out.write(buffer,0,len); } } finally { if (null != in) { in.close(); } if (null != out) { out.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * 读取excel模板,并复制到新文件中供写入和下载 * @return */ public File createNewFile(){ //读取模板,并赋值到新文件************************************************************ //文件模板路径 String path = this.getRequest().getRealPath(SystemConfig.FILETEMPLATE); String fileName="purchaseContract.xls"; File file=new File(path+"/"+fileName); //保存文件的路径 String realPath = ServletActionContext.getServletContext().getRealPath(SystemConfig.UPLOAD_FILE_DIR); //新的文件名 String newFileName = "采购合同"+System.currentTimeMillis() + ".xls"; //判断路径是否存在 File dir = new File(realPath); if(!dir.exists()){ dir.mkdirs(); } //写入到新的excel File newFile = new File(realPath, newFileName); try { newFile.createNewFile(); //复制模板到新文件 fileChannelCopy(file, newFile); } catch (Exception e) { e.printStackTrace(); } return newFile; } /** * 下载成功后删除 * * @param files */ private void deleteFile(File... files) { for (File file : files) { if (file.exists()) { file.delete(); } } }
时间: 2024-10-10 23:14:01