首页 > 代码库 > java生成Ecxel文件及下载(公用)
java生成Ecxel文件及下载(公用)
/** * 上海汽车集团财务有限责任公司 * Copyright (c) 1994-2014 All Rights Reserved. */ package com.saicfc.pmpf.internal.manage.utils; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; /** * Excel文件生成器 * @author lizhiyong * @version $Id: ExcelUtils.java, v 0.1 2014年9月11日 下午5:27:18 Exp $ */ public class ExcelUtils { /** * 生成一个Excel文件 jxl * @param filePath 要生成的Excel文件的路径 * @param titleList 要生成的Excel文件的头信息 * @param dataList 要生成的Excel文件的详细信息 * @param fileName 要生成的Excel文件名 * @param sheetName 要生成的sheet文件名 * @return excelFile */ @SuppressWarnings("rawtypes") public static File writeExcel(String filePath, List titleList, List dataList, String fileName, String sheetName) { WritableWorkbook wwb = null; File excelFile = null; try { File file = new File(filePath); if (!file.exists()) { file.mkdir(); System.out.println("文件夹已创建"); } // 新建立一个jxl文件 //定义文件名格式并创建 excelFile = File.createTempFile(fileName, ".xls", new File(filePath)); //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(excelFile); if (wwb != null) { //创建一个可写入的工作表 //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置 WritableSheet ws = wwb.createSheet(sheetName, 0); //添加头信息 int row = 0; for (Iterator iterator = titleList.iterator(); iterator.hasNext();) { LinkedHashMap titleMap = (LinkedHashMap) iterator.next(); int cell = 0; for (Iterator titleIterator = titleMap.entrySet().iterator(); titleIterator .hasNext();) { java.util.Map.Entry titleEntry = (java.util.Map.Entry) titleIterator.next(); //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行 ws.addCell(new jxl.write.Label(cell, row, (String) titleEntry.getValue())); cell++; } row++; } //下面开始添加单元格信息 int rows = titleList.size(); for (Iterator iterator = dataList.iterator(); iterator.hasNext();) { LinkedHashMap dataMap = (LinkedHashMap) iterator.next(); int cells = 0; for (Iterator dataIterator = dataMap.entrySet().iterator(); dataIterator .hasNext();) { java.util.Map.Entry dataEntry = (java.util.Map.Entry) dataIterator.next(); //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行 //将生成的单元格添加到工作表中 ws.addCell(new jxl.write.Label(cells, rows, (String) dataEntry.getValue())); cells++; } rows++; } //从内存中写入文件中 wwb.write(); //关闭资源,释放内存 wwb.close(); } } catch (IOException e) { e.printStackTrace(); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } return excelFile; } }
下面是调用:
String fileName = "中信银行(CITIC)退款数据"; String sheetName = "中信银行(CITIC)退款数据"; List titleList = new ArrayList(); LinkedHashMap titleMap = new LinkedHashMap(); titleMap.put("fileType", "文件类型:"); titleMap.put("fileType1", "FTB2CBatchPayback"); titleList.add(0, titleMap); LinkedHashMap titleMap2 = new LinkedHashMap(); titleMap2.put("fileTitle", "标题:"); titleMap2.put("fileTitle1", "退款批量"); titleList.add(1, titleMap2); titleList.add(2, new LinkedHashMap()); titleList.add(3, new LinkedHashMap()); LinkedHashMap titleMap3 = new LinkedHashMap(); titleMap3.put("title1", "原支付订单号"); titleMap3.put("title2", "原支付订单日期"); titleMap3.put("title3", "退款金额"); titleMap3.put("title4", "摘要"); titleList.add(4, titleMap3); //创建文件 File file = ExcelUtils.writeExcel(filePath, titleList, exportData, fileName, sheetName); //下载文件 downLoadFile(response, filePath, file);
/** * 下载文件 * @param response * @param filePath 文件路径 * @param file 文件 * @throws IOException */ public void downLoadFile(HttpServletResponse response, String filePath, File file) throws IOException { String fileName = file.getName(); //下载文件 FileManageUtils.exportFile(response, filePath + fileName, fileName); //删除单个文件 FileManageUtils.deleteFile(filePath, fileName); }
package com.saicfc.pmpf.internal.manage.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.http.HttpServletResponse; /** * 文件管理 * @author lizhiyong * @version $Id: FileManageUtils.java, v 0.1 2014年9月11日 上午9:37:47 Exp $ */ public class FileManageUtils { /** * 下载文件 * @param response * @param csvFilePath * 文件路径 * @param fileName * 文件名称 * @throws IOException */ public static void exportFile(HttpServletResponse response, String csvFilePath, String fileName) throws IOException { response.setContentType("application/csv;charset=GBK"); response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("GBK"), "ISO8859-1")); //URLEncoder.encode(fileName, "GBK") InputStream in = null; try { in = new FileInputStream(csvFilePath); int len = 0; byte[] buffer = new byte[1024]; response.setCharacterEncoding("GBK"); OutputStream out = response.getOutputStream(); while ((len = in.read(buffer)) > 0) { //out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }); out.write(buffer, 0, len); } } catch (FileNotFoundException e) { System.out.println(e); } finally { if (in != null) { try { in.close(); } catch (Exception e) { throw new RuntimeException(e); } } } } /** * 删除该目录filePath下的所有文件 * @param filePath * 文件目录路径 */ public static void deleteFiles(String filePath) { File file = new File(filePath); if (file.exists()) { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isFile()) { files[i].delete(); } } } } /** * 删除单个文件 * @param filePath * 文件目录路径 * @param fileName * 文件名称 */ public static void deleteFile(String filePath, String fileName) { File file = new File(filePath); if (file.exists()) { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isFile()) { if (files[i].getName().equals(fileName)) { files[i].delete(); return; } } } } } }
java生成Ecxel文件及下载(公用)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。