`
钟大小姐
  • 浏览: 24925 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

apache POI 导入导出excel

阅读更多

 

本帖最后由 zhongweiwei 于 2012-7-16 16:41 编辑

Apache POI 是用 Java编写的免费开源的跨平台的 Java API Apache POI提供 API Java程式对 Microsoft Office格式档案读和写的功能。


  • HSSF 提供读写 Microsoft ExcelXLS格式档案的功能。
  • XSSF 提供读写 Microsoft ExcelOOXML XLSX格式档案的功能。
  • HWPF 提供读写 Microsoft WordDOC格式档案的功能。
  • HSLF 提供读写 MicrosoftPowerPoint格式档案的功能。
  • HDGF 提供读 Microsoft Visio格式档案的功能。
  • HPBF 提供读 MicrosoftPublisher格式档案的功能。
  • HSMF 提供读 Microsoft Outlook格式档案的功能。


版本

稳定版

最新的稳定版是 Version 3.5-final (2009-09-28)

源码文件: http://archive.apache.org/dist/poi/release/src/poi-src-3.5-FINAL-20090928.zip

二进制开发包: http://archive.apache.org/dist/poi/release/bin/poi-bin-3.5-FINAL-20090928.zip


最新版

最新的版是 Version 3.8 (2011-3-26)还在不断的完善

二进制开发包: http://www.fayea.com/apache-mirror/poi/release/bin/poi-bin-3.8-20120326.zip

源码文件: http://mirror.bit.edu.cn/apache/poi/release/src/poi-src-3.8-20120326.zip



以下以一个小例子示范 POI 读取 excel

(此程序所用的POI版本是3.8版本,此实例重在突出POI的使用方法,对于代码格式、规范性、可拓展性暂未考虑,小女子初次发技术贴,有不足的地方欢迎大家提出)

读取 excel2003文件主要过程(代码块a):


public static void main(String[] args) throws Exception {
String file = "C:\\Users\\LONMID\\Desktop\\POI\\pirate.xls";
FileInputStream fis = new FileInputStream(file);
// 构建一个excel2003工作簿
Workbook wb = new HSSFWorkbook(fis);
List<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
int totalColumn = 0;
if(wb != null){
Sheet sheet = wb.getSheetAt(0);
int totalRows = sheet.getPhysicalNumberOfRows();
if (totalRows >= 1 && sheet.getRow(0) != null) {
totalColumn = sheet.getRow(0).getPhysicalNumberOfCells();
}
for (int r = 0; r < totalRows; r++) {
Row row = sheet.getRow(r);
if (row == null) {
continue;
}
ArrayList<String> rowList = new ArrayList<String>();
for (int c = 0; c < totalColumn; c++) {
Cell cell = row.getCell(c);
// 可根据数据类型设置数据的显示格式
rowList.add(cell.toString());
}
result.add(rowList);
}
}
// 打印到控制台
for (ArrayList<String> arrayList : result) {
for (String string : arrayList) {
System.out.print(string +"\t");
}
System.out.println();
}

读取的excel文件:

读取的excel文件.png

控制台输出:

读取结果1.png


设置数据类型格式:

将代码块a 23行改成 rowList.add(getCellValue(cell));

getCellValue(Cell cell)方法如下(代码块b):


private static String getCellValue(Cell cell) {
String cellValue = "";
if (cell == null) {
return cellValue;
}
// 处理数字型 可自行设置格式
if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
cellValue = NumberFormat.getInstance().format(cell.getNumericCellValue())+ ".00";
}
// 处理布尔型
else if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) {
cellValue = cell.getBooleanCellValue() ? "是" : "否";
}
// 处理其他数据类型
else {
cellValue = cell.toString();
}
return cellValue;
}
再运行代码块a,输出: 读取结果2.png
如此可设置数据的表现格式

读取 excel2007:

将代码块a 02行的文件换成2007版本的excel文件: String file = "C:\\Users\\LONMID\\Desktop\\POI\\pirate.xlsx";

2007版本的excel文件如图:

读取2007文件.png

将代码块a 05行代码改成: Workbook wb = new XSSFWorkbook(fis);

再次运行代码块a,输出结果:

读取2007结果1.png


导出 excel文件 :

控制器代码(控制器url:" /data.do")代码块c:


@RequestMapping(params = "action=export2003")
public void write2003(HttpServletResponse response){
OutputStream out = null;
try {
out = response.getOutputStream();
String fileName = "pirate"+new Date().getTime() + ".xls";// 生成的excel文件
String tempFile = "C:\\Users\\LONMID\\Desktop\\POI\\temp.xls";// 模版文件
Workbook wb = new HSSFWorkbook(new FileInputStream(tempFile));
List<ArrayList<String>> data = createData();// 生成数据
if(wb!=null&&data != null){
Sheet sheet = wb.getSheetAt(0);
for (int i = 0; i < data.size(); i++) {
ArrayList<String> list = data.get(i);
Row row = sheet.createRow(i+1);
for (int j = 0; j < list.size(); j++) {
row.createCell(j).setCellValue(list.get(j));
}
}
}
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
response.setContentType("application/msexcel;charset=UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
wb.write(out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
jsp文件代码片段: <a href="${contextPath}/data.do?action=export2003">点击导出至Excel2003文件</a>

模板文件: tempFile.png

导出文件截图:

 

设置单元格格式:

 /**
         * 设置单元格格式
	 */
	private static CellStyle setStyle(HSSFWorkbook wb){
		// 创建字体
		HSSFFont font = wb.createFont();
		// 设置字体为红色
		font.setColor(HSSFFont.COLOR_RED); 
		// 设置字体为粗体
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); 
		// 创建单元格格式
		HSSFCellStyle cellStyle= wb.createCellStyle();
		// 设置字体
		cellStyle.setFont(font); 
		// 设置水平居中
		cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
		// 设置垂直靠下
		cellStyle.setVerticalAlignment(CellStyle.VERTICAL_BOTTOM);
		// 设置左边框为双线
		cellStyle.setBorderLeft(CellStyle.BORDER_DOUBLE);
		// 设置背景色为蓝色
		cellStyle.setFillBackgroundColor(new HSSFColor.BLUE().getIndex());
		// 设置前景色为黄色
		cellStyle.setFillForegroundColor(new HSSFColor.YELLOW().getIndex());
		return cellStyle;
	}
分享到:
评论
2 楼 贝塔ZQ 2017-01-04  
补充楼上,可以查查pageoffice插件哦
1 楼 贝塔ZQ 2017-01-04  
poi读取excel文件,区分xls格式和xlsx格式,比较麻烦。可以试试用插件实现,支持03,07,10,13,16版本的office的,集成起来也方便的。

相关推荐

    Apache POI导入和导出Excel文件.

    Apache POI导入和导出Excel文件

    SSM框架利用poi导入导出Excel文件 demo

    在本示例"SSM框架利用poi导入导出Excel文件 demo"中,我们将探讨如何在SSM项目中使用Apache POI库来实现Excel文件的导入与导出功能。 Apache POI是一个流行的开源库,它允许开发者在Java应用程序中创建、修改和显示...

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...

    poi导入导出Excel表格的所以jar包

    标题提到的"poi导入导出Excel表格的所以jar包"指的是使用Apache POI库进行Excel操作所需的依赖库。 1. **poi-3.8-20120326.jar**: 这是Apache POI的主要核心库,包含了处理Excel文件的核心类和方法。例如,你可以...

    poi导入导出excel功能

    导出Excel功能则涉及创建新的Excel文件并填充数据。同样,我们需要创建`Workbook`,然后添加`Sheet`,接着在`Sheet`上创建`Row`和`Cell`。例如,以下代码展示了如何创建一个简单的Excel表格: ```java import org....

    poi 导入导出Excel相关jar包

    导出Excel的过程则相反。首先,你需要创建一个新的Workbook对象,然后创建Sheet和Row,填充Cell数据。最后,使用Workbook的write方法将数据写入到OutputStream中,可以是文件流或内存流,从而生成Excel文件。 除了...

    POI 导入导出Excel表

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel。...通过学习和理解这个"ImportExcel"实例,你可以掌握如何在实际项目中导入和导出Excel数据,提升数据处理能力。

    poi导入导出Excel源码

    标题“poi导入导出Excel源码”和描述涉及到的核心知识点是利用Apache POI进行Excel文件的导入与导出操作。 首先,让我们详细了解Apache POI库。Apache POI是Apache软件基金会的一个开源项目,其主要目标是创建Java ...

    Apache poi 导出excel实例

    这篇博客文章“Apache POI 导出excel实例”将深入探讨如何使用Apache POI库来生成Excel文件,这对于在Java环境中处理大量数据并需要导出为Excel格式的应用非常有用。 首先,我们需要导入Apache POI库到我们的项目中...

    poi导入导出Excel通用工具类 兼容xls,xlsx

    总结,"poi导入导出Excel通用工具类 兼容xls,xlsx"这个工具实现了利用Apache POI库处理Excel文件的功能,涵盖了从旧版的.xls到新版的.xlsx格式,提供了方便的导入和导出接口,使得在Java开发中处理Excel数据变得...

    POI实现Excel导入导出并附带加载进度条

    总之,这个项目是一个完整的Java解决方案,用于处理Excel文件的导入导出,同时具备用户友好的进度条显示。它利用了Apache POI的强大功能,结合maven的依赖管理,以及可能的GUI组件,提供了高效且直观的数据操作体验...

    Java基于POI的导入导出excel功能,附带测试功能,项目基于Maven,导入即可用,带测试Main方法提供例子

    Java基于POI的导入导出excel功能,附带测试功能,项目基于Maven,导入即可用,带测试Main方法提供例子。 用于导入导出Excel的Util包,基于Java的POI。可将List导出成Excel,或读取Excel成List、Map,Object&gt;,很方便...

    POI 导入导出Excel表格模板

    综上所述,Apache POI 提供了强大的功能,使 Java 开发者能够轻松地进行 Excel 文件的导入导出以及模板处理。通过合理的工具类设计和最佳实践,我们可以高效地利用 POI 处理日常工作中与 Excel 相关的任务。

    Springboot+Poi实现Excel的导入导出

    本项目结合了Spring Boot、MyBatis、Apache POI和MySQL,实现了Excel数据的导入导出功能,这对于数据处理和分析尤其有用。下面我们将深入探讨这些技术及其在项目中的应用。 首先,Spring Boot以其“约定优于配置”...

    poi导入导出Excel

    标题中的“poi导入导出Excel”指的是Apache POI库在Java中用于处理Microsoft Office文档,特别是Excel文件的导入和导出功能。Apache POI是一个开源项目,它允许开发者使用Java来创建、修改和显示Microsoft Office...

    poi导入导出excel所需jar

    标题"poi导入导出excel所需jar"和描述"java 使用poi导入导出excel所需的最新jar包"都指向了使用Apache POI进行Excel操作的关键依赖——POI相关的JAR文件。 Apache POI项目始于2001年,旨在为开源社区提供一个API,...

    POI导入导出excel

    标题"POI导入导出excel"指的是使用Apache POI库来处理Microsoft Excel文件,包括读取(导入)和写入(导出)数据。Apache POI是一个开源项目,允许Java开发者创建、修改和显示Microsoft Office格式的文件,其中Excel...

    使用ITEXT导出PDF、WORD,APACHE POI导出EXCEL报表文件

    本文将深入探讨如何使用ITEXT库导出PDF和Word,以及利用Apache POI库导出Excel报表文件。 首先,让我们来了解ITEXT库。ITEXT是一个开源Java库,专门用于创建和修改PDF文档。使用ITEXT,你可以方便地生成包含文本、...

    SpringMvc 使用poi导入导出Excel

    本篇文章将详细介绍如何在Spring MVC项目中使用Apache POI库来实现Excel的导入和导出。 Apache POI是Apache软件基金会的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Excel。在Java中,POI提供了API...

    SpringBoot +Mybatis +POI导入、导出Excel文件

    对于导入导出,主要关注HSSFWorkbook(老版本的Excel)和XSSFWorkbook(新版本的Excel)对象。 3. **Excel文件导入** - 创建一个Controller,接收文件上传请求,通常使用MultipartFile类型的参数。 - 使用POI读取...

Global site tag (gtag.js) - Google Analytics