- 浏览: 127461 次
- 性别:
-
文章分类
- 全部博客 (390)
- java开发 (0)
- Struts2框架 (0)
- Spring3框架 (0)
- Spring4框架 (0)
- Hibernate3框架 (0)
- Hibernate4框架 (0)
- jQuery前台技术 (0)
- ExtJs3前台技术 (2)
- ExtJs4前台技术 (0)
- javascript脚本语言 (0)
- Oracle数据库 (0)
- MySQL数据库 (0)
- SQL Server数据库 (0)
- JSTL与EL (0)
- Ajax技术 (0)
- DWR技术 (0)
- Ibatis技术 (0)
- Mybatis技术 (0)
- JBPM工作流 (0)
- xstream技术 (0)
- 框架整合技术 (0)
最新评论
用POI创建Excel文件及下载
POIExcelUtils.java:
package com.saicfc.pmpf.internal.manage.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.saicfc.pmpf.common.enums.ChannelCodeEnums; /** * @author lizhiyong * @version $Id: POIExcelUtils.java, v 0.1 2014年9月18日 上午9:28:30 Exp $ */ public class POIExcelUtils { /** * 定制日期格式 */ private static String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; /** * 定制浮点数格式 */ private static String NUMBER_FORMAT = "#,##0.00"; /** * 定制百分比格式 */ private static String PRECENT_FORMAT = "0.00%"; private static HSSFWorkbook workbook = new HSSFWorkbook(); private static HSSFSheet sheet = workbook.createSheet(); private static HSSFRow row; /** * 导出Excel文件 * @param filePath * @throws IOException */ public static void exportXLS(String filePath) throws IOException { try { FileOutputStream fOut = new FileOutputStream(filePath); workbook.write(fOut); fOut.flush(); fOut.close(); } catch (IOException e) { e.getStackTrace(); } } /** * 导出Excel文件 * @param file * @throws IOException */ public static void exportXLS(File file) throws IOException { try { FileOutputStream fOut = new FileOutputStream(file); workbook.write(fOut); fOut.flush(); fOut.close(); } catch (IOException e) { e.getStackTrace(); } } /** * 增加一行 * @param index 行号 */ public static void createRow(int index) { row = sheet.createRow(index); } /** * 设置单元格的字符值格式 * @param index 列号 * @param value 单元格填充的值 */ public static void setStringCell(int index, String value) { HSSFCell cell = row.createCell(index); cell.setCellValue(value); cell.setCellType(HSSFCell.CELL_TYPE_STRING); } /** * 设置单元格日期格式 * @param index 列号 * @param value 单元格填充值 */ public static void setDateCell(int index, Calendar value) { HSSFCell cell = row.createCell(index); cell.setCellValue(value.getTime()); //建立新的cell样式 HSSFCellStyle cellStyle = workbook.createCellStyle(); HSSFDataFormat format = workbook.createDataFormat(); //设置cell样式为定制的日期格式 cellStyle.setDataFormat(format.getFormat(DATE_FORMAT)); //居中 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //设置该cell日期的显示格式 cell.setCellStyle(cellStyle); } /** * 设置单元格整数數值格式 * @param index 列号 * @param value 单元格填充值 */ public static void setIntCell(int index, int value) { HSSFCell cell = row.createCell(index); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(value); } /** * 设置单元格浮点数值格式 * @param index 列号 * @param value 单元格填充值 */ public static void setNumberCell(int index, double value) { HSSFCell cell = row.createCell(index); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(value); //建立新的cell样式 HSSFCellStyle cellStyle = workbook.createCellStyle(); HSSFDataFormat format = workbook.createDataFormat(); //设置cell样式为定制的浮点数格式 cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT)); //设置该cell浮点数的显示格式 cell.setCellStyle(cellStyle); } /** * 设置单元格百分比格式 * @param index 列号 * @param value 单元格填充值 */ public static void setPercentCell(int index, double value) { HSSFCell cell = row.createCell(index); cell.setCellValue(value); //建立新的cell样式 HSSFCellStyle cellStyle = workbook.createCellStyle(); HSSFDataFormat format = workbook.createDataFormat(); cellStyle.setDataFormat(format.getFormat(PRECENT_FORMAT)); cell.setCellStyle(cellStyle); } public static void main(String[] args) { System.out.println(" 开始导出Excel文件 "); createRow(0); setStringCell(0, " 编号 "); setStringCell(1, " 名称 "); setStringCell(2, " 日期 "); setStringCell(3, " 金额 "); createRow(1); setIntCell(0, 1); setStringCell(1, " 工商银行 "); setDateCell(2, Calendar.getInstance()); setNumberCell(3, 111123.99); createRow(2); setIntCell(0, 2); setStringCell(1, " 招商银行 "); setDateCell(2, Calendar.getInstance()); setNumberCell(3, 222456.88); try { String filePath = "C:/lizhiyong.xls"; exportXLS(filePath); System.out.println(" 导出Excel文件[成功] "); } catch (IOException e1) { System.out.println(" 导出Excel文件[失败] "); e1.printStackTrace(); } } /** * 生成一个Excel文件POI * @param inputFile 输入模板文件路径 * @param outputFile 输入文件存放于服务器路径 * @param dataList 待导出数据 * @throws Exception */ @SuppressWarnings("rawtypes") public static File exportExcelFile(String channelCode, String filePath, List titleList, List dataList, String fileName) throws Exception { File file = new File(filePath); if (!file.exists()) { file.mkdir(); System.out.println("文件夹已创建"); } if (ChannelCodeEnums.PINGAN.getChannelCode().equals(channelCode)) { //设置列宽 sheet.setColumnWidth(0, 5000); sheet.setColumnWidth(1, 4000); sheet.setColumnWidth(2, 8000); } //定义文件名格式并创建 File excelFile = File.createTempFile(fileName, ".xls", new File(filePath)); //添加头信息 int row = 0; for (Iterator iterator = titleList.iterator(); iterator.hasNext();) { LinkedHashMap titleMap = (LinkedHashMap) iterator.next(); //新增一行 createRow(row); int cell = 0; for (Iterator titleIterator = titleMap.entrySet().iterator(); titleIterator.hasNext();) { java.util.Map.Entry titleEntry = (java.util.Map.Entry) titleIterator.next(); //向列中添加值 setStringCell(cell, (String) titleEntry.getValue()); cell++; } row++; } //下面开始添加单元格信息 int rows = titleList.size(); for (Iterator iterator = dataList.iterator(); iterator.hasNext();) { LinkedHashMap dataMap = (LinkedHashMap) iterator.next(); //新增一行 createRow(rows); int cells = 0; for (Iterator dataIterator = dataMap.entrySet().iterator(); dataIterator.hasNext();) { java.util.Map.Entry dataEntry = (java.util.Map.Entry) dataIterator.next(); if (ChannelCodeEnums.PINGAN.getChannelCode().equals(channelCode)) { if ("refChannelOrderNo".equals(dataEntry.getKey())) { //向列中添加值 setStringCell(cells, (String) dataEntry.getValue()); } else if ("amount".equals(dataEntry.getKey())) { //向列中添加浮点型数值 setNumberCell(cells, Double.parseDouble((String) dataEntry.getValue())); } else { //向列中添加值 setStringCell(cells, (String) dataEntry.getValue()); } } else { //向列中添加值 setStringCell(cells, (String) dataEntry.getValue()); } cells++; } rows++; } exportXLS(excelFile); return excelFile; } }
下面是调用:
String fileName = "平安银行(PINGAN)退款数据"; List titleList = new ArrayList(); LinkedHashMap titleMap = new LinkedHashMap(); titleMap.put("title1", "订单号"); titleMap.put("title2", "退款金额"); titleMap.put("title3", "退款原因"); titleList.add(0, titleMap); File file; try { file = POIExcelUtils.exportExcelFile(channelCode, filePath, titleList, exportData, fileName); //下载文件 downLoadFile(response, filePath, file); } catch (Exception e) { log.error("下载失败", e); }
/** * 下载文件 * @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; } } } } } }
相关推荐
本篇文章将详细解析一个使用Apache POI创建Excel文件的例子,并深入探讨代码中的关键概念和技术要点。 #### 二、核心代码解析 ##### 1. 导入必要的类 ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook;...
#### 使用Apache POI创建Excel文件 首先,我们需要了解Apache POI的基本使用方法,特别是针对Excel文件的操作。 1. **创建Excel工作簿**: - 使用`HSSFWorkbook`或`XSSFWorkbook`类来创建一个新的Excel工作簿对象...
总结起来,Apache POI为Java开发者提供了一种强大且灵活的方式来处理Excel文件,无论是通过Servlet从服务器生成文件,还是在本地通过main方法创建文件。理解如何使用POI库可以帮助你更好地集成Excel功能到你的Java...
在这个“POI读写excel文件+poi简单文档”中,我们将深入探讨如何利用Apache POI进行Excel文件的读写操作。 首先,我们需要了解POI的主要组件:HSSF(Horrible Spreadsheet Format)用于处理旧版的BIFF格式(.xls)...
对于Excel文件,POI提供了HSSF(Horrible SpreadSheet Format)和XSSF(XML SpreadSheet Format)两个组件,分别用于处理旧版的BIFF格式(.xls)和较新的XML格式(.xlsx)。 二、HSSF概述 HSSF是POI库中的一个子...
#### 三、使用 POI 创建和读取 Excel 文件 为了使用 POI 操作 Excel 文件,首先需要准备以下环境: 1. **JDK 版本**:至少需要 JDK 1.4 或更高版本。 2. **POI 库**:下载 POI 库,可以从 Apache 官方网站获取:...
通过运行提供的示例代码,你可以看到如何使用POI创建、读取和修改Excel文件。这些示例可能涵盖基本操作到高级特性的各种场景,如读取工作表数据、写入数据、处理公式、设置单元格样式等。 六、poi-3.6版本 "poi-3.6...
通过这个“java的poi生成excel图表demo”,我们可以学习如何利用POI创建动态的、数据驱动的Excel曲线图,进一步提升数据的可视性和理解性。这个压缩包中的“EexcelChart”可能是示例代码、测试数据或生成的Excel文件...
在Android开发中,Apache POI 是一个非常实用的库,它允许程序员创建、修改和显示Microsoft Office格式的文件,如Word文档(.doc)和Excel工作簿(.xlsx或.xls)。这个工具对于需要在Android应用中处理这些文档的...
使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...
在创建Excel文件时,你需要根据目标文件格式选择合适的API。 1. **引入依赖** 在项目中添加Apache POI库依赖。如果你使用的是Maven,可以在pom.xml文件中加入以下依赖: ```xml <groupId>org.apache.poi ...
描述中还提到"亲测as上可以读取到2010excel内容",这表明这些库兼容较新的Excel文件格式(.xlsx),这是由Microsoft Office 2007及更高版本引入的。 附带的`ExcelUtil.java`源码文件,通常是一个工具类,封装了使用...
标题提到的"poi解析excel文件"是利用Apache POI 3.8版本进行Excel数据的读取和解析。 在Apache POI 3.8中,主要涉及以下核心概念: 1. **HSSF(Horrible Spreadsheet Format)**:这是Apache POI中处理旧版Excel...
在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...
使用POI创建Excel文件,首先要创建Workbook对象,对应Excel中的工作簿。对于.xls文件,我们可以使用HSSFWorkbook,而对于.xlsx文件,我们需要使用XSSFWorkbook。 3. 添加工作表 Workbook对象可以包含多个Sheet,每...
在这个场景中,"POI到处excel文件"意味着我们使用Apache POI库来创建、读取和修改Excel文档。以下是对这个主题的详细说明: 1. **Apache POI简介**: Apache POI 是一个开源项目,它允许开发者使用Java处理...
在Java环境中,Apache POI 提供了一套API,使得开发者能够创建、修改和读取Excel文件。这个压缩包包含了Apache POI库的多个版本及其依赖库,如ooxml-schemas、xmlbeans等,用于支持对Excel文件的OOXML(Office Open ...
在Java中,如果你需要生成或操作Excel文件,尤其是.xlsx格式(这是Excel 2007及以上版本使用的Open XML格式),那么Apache POI库就是首选工具。下面将详细介绍如何使用Java POI库来生成Excel(xlsx)文件。 首先,...
Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java POI Java POI 是一个开源的 Java ...
1.根据模板创建Excel文件 2.获取及更新Excel文件内容 3.创建、复制Sheet 4.设置Sheet名称 ... 具体请参见Excel接口中对方法的描述。 注:更新文件内容后,必须执行save()才能生效 压缩包中包含POI的jar文件、POI...