`
Franciswmf
  • 浏览: 797279 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

poi 导入导出

 
阅读更多
参考:
--POI各Jar包的作用
http://blog.csdn.net/szwangdf/article/details/39053859
https://www.cnblogs.com/wangqc/p/poi.html
https://www.cnblogs.com/zhangchengbing/p/6340036.html

--导入导出原理或代码参考
http://blog.csdn.net/houxuehan/article/details/50960259
http://blog.csdn.net/u013871100/article/details/52901996
http://wanghongxu.iteye.com/blog/1879893
http://yl-fighting.iteye.com/blog/1726285
https://www.cnblogs.com/stono/p/6713158.html
http://blog.csdn.net/johnstrive/article/details/8393541
https://www.cnblogs.com/zhuixun/p/6600331.html
http://blog.csdn.net/aqsunkai/article/details/52270198
--POI 通用导出Excel(.xls,.xlsx)
http://blog.csdn.net/houxuehan/article/details/50960259
--java, poi 取消科学计数法
http://blog.csdn.net/this_super/article/details/6766139
--POI读取excel单元格,获取单元格各类型值,返回字符串类型
https://www.cnblogs.com/zy2009/p/6759933.html
--POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
http://blog.csdn.net/frist_huangsuli/article/details/7701446
--用SpringMvc实现Excel导出功能
https://www.cnblogs.com/liangblog/p/5831003.html


demo
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.NumberToTextConverter;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * poi导入导出excel文件工具类
 */
public class PoiUtils {
	/**
	 * 1、需要导入的jar poi组件--文件格式--需要引入的jar HSSF Excel XLS poi HSSF是POI工程对Excel
	 * 97(-2007)文件操作的纯Java实现 XSSF Excel XLSX poi-ooxml XSSF是POI工程对Excel 2007
	 * OOXML (.xlsx)文件操作的纯Java实现 Common SS Excel XLS and XLSX poi-ooxml
	 * 2、需要考虑的问题 excel文件格式:xls和xlsx excel文件的行数量:少数量、多数量
	 */
	private static final Log logger = LogFactory.getLog(PoiUtils.class);
	
	public static void main(String[] args) {
	File file=new File("D:\\测试数据222.xlsx");
	FileInputStream fileInputStream=null;
	try {
		fileInputStream=new FileInputStream(file);
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	}
	readExcelFileDta2List(fileInputStream, ".xlsx", 1);
		
	}

	
	/**
	 * 以字符串的形式获取单元格的值
	 * @param cell
	 * @return
	 */
	private static String getCellStringValue(Cell cell) {
		/**
		 * CellType 类型 值 CELL_TYPE_NUMERIC 数值型 0 CELL_TYPE_STRING 字符串型 1
		 * CELL_TYPE_FORMULA 公式型 2 CELL_TYPE_BLANK 空值 3 CELL_TYPE_BOOLEAN 布尔型 4
		 * CELL_TYPE_ERROR 错误 5
		 */
		if (null == cell) {
			return "";
		}
		String result = "";
		switch (cell.getCellType()) {
		case Cell.CELL_TYPE_STRING:// String类型
			result = cell.getStringCellValue();
			break;
		case Cell.CELL_TYPE_NUMERIC:// 数字类型
			result = NumberToTextConverter.toText(cell.getNumericCellValue()); 
			break;
		case Cell.CELL_TYPE_BOOLEAN:// 布尔值
			result = String.valueOf(cell.getBooleanCellValue());
			break;
		case Cell.CELL_TYPE_FORMULA:// 公式
			result = cell.getCellFormula();
			break;
		case Cell.CELL_TYPE_BLANK:// 空格
			result = "";
			break;
		default: // 其它 CELL_TYPE_ERROR
			result = "";
			break;
		}
		return result;
	}

	/**
	 * 解析导入数据的文件流
	 * 
	 * @param inputStream
	 * @param suffix 如".xls"或".xlsx"
	 * @param startRowIndex
	 * @return
	 */
	public static List<String[]> readExcelFileDta2List(InputStream inputStream, String suffix, int startRowIndex) {
		Workbook workbook = null;
		if (ExcelCommonEnum.SUFFIX_XLS.getValue().equals(suffix)) {
			// excel文件名的后缀是“.xls”
			try {
				// HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现
				workbook = new HSSFWorkbook(inputStream);
			} catch (IOException e) {
				e.printStackTrace();
			}
		} else if (ExcelCommonEnum.SUFFIX_XLSX.getValue().equals(suffix)) {
			// excel文件名的后缀是“.xlsx”
			try {
				// XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现
				workbook = new XSSFWorkbook(inputStream);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		Sheet sheet = workbook.getSheetAt(0);
		if (sheet == null) {
			return null;
		}
		ArrayList<String[]> list = new ArrayList<String[]>();
		int lastRowNum = sheet.getLastRowNum(); // 最大行数
		Row titleRow = sheet.getRow(0);//标题行,用于定义String[]长度
		for (int rowNum = startRowIndex; rowNum <= lastRowNum; rowNum++) {
			if (null != sheet.getRow(rowNum)) {
				Row row = sheet.getRow(rowNum);// 取第rowNum行为当前遍历行
				short firstCellNum = row.getFirstCellNum();// 0
				short lastCellNum = row.getLastCellNum();// 当前行的最大列数
				if (firstCellNum != lastCellNum) {
					// 如果列数不为0,即sheet不为空
					String[] values = new String[titleRow.getLastCellNum()];// 定义一个以当前行最大列数为长度的字符串数组
					for (int cellNum = firstCellNum; cellNum < titleRow.getLastCellNum(); cellNum++) {
						Cell cell = row.getCell(cellNum);
						if (null == cell) {
							values[cellNum] = ExcelCommonEnum.NULL.getValue();
						} else {
							String cellValue=getCellStringValue(cell);// 获取单元格的值
							values[cellNum] = StringUtils.isNotBlank(cellValue)?cellValue.trim():ExcelCommonEnum.NULL.getValue();
						}
					}
					list.add(values);
				}
			}
		}
		return list;
	}
}

分享到:
评论

相关推荐

    Java poi导入导出EXCEL工具类(兼容各版本)

    概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...

    poi导入导出及spring

    ### POI导入导出及Spring框架综合应用 #### 一、Apache POI简介与核心功能 Apache POI是Apache软件基金会的Jakarta项目中的一个子项目,它为Java程序员提供了一组API,使得他们能够使用Java来操作Microsoft Office...

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

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

    基于ssm框架的poi导入导出

    本主题聚焦于"基于SSM框架的POI导入导出",这是一项在业务系统中常用的技术,用于处理大量数据的导入与导出,如Excel表格。 首先,我们需要理解SSM框架的构成: 1. **Spring**:Spring是核心容器,提供依赖注入...

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

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

    poi导入导出excel功能

    在Java开发中,Apache POI库是一个非常重要的工具,它允许...通过导入导出功能,可以实现数据的交换、分析和展示。这个基于Maven的案例为初学者提供了一个良好的起点,通过实践可以进一步理解和掌握POI的使用方法。

    POI导入导出合集

    这个“POI导入导出合集”很可能包含了有关如何使用Apache POI库在Java程序中读取、创建和修改这些文件的示例代码或教程。 Apache POI 提供了一组API,使得开发者可以方便地在Java应用中操作Microsoft Office文档。...

    POI 导入导出Excel表格模板

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

    POI导入导出 源代码(java)

    标题中的“POI导入导出 源代码(java)”指的是使用Apache POI库进行Excel数据的导入和导出操作的Java源代码。Apache POI是一个流行的开源项目,它允许开发者使用Java来处理Microsoft Office格式的文件,尤其是Excel...

    POI 导入导出示例

    【标题】"POI 导入导出示例"是一个关于Apache POI库的实际应用教程,主要涉及如何使用Java处理Microsoft Office格式的文件,如Excel。Apache POI是开源项目,它允许开发者创建、修改和显示MS Office文件,包括XLS和...

    excelpoi导入导出功能

    本项目提供的"excelpoi导入导出功能"就是基于Apache POI实现的,它支持使用注解进行数据处理,这为开发人员提供了更加灵活和便捷的方式。 Apache POI的核心组件包括SXSSF(Streaming Usermodel API)和HSSF/XSSF...

    poi 导入导出Excel相关jar包

    总结一下,Apache POI是Java处理Excel文件的标准库,它提供了全面的API来实现Excel的导入和导出。通过理解并熟练使用POI,开发者可以轻松地在应用程序中实现Excel数据的读取、写入和编辑功能。结合dim4j库,还能进行...

    java_poi实现excel导入导出

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

    SpringMvc 使用poi导入导出Excel

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

    java poi导入导出

    在这个场景中,"java poi导入导出"主要指的是使用Java POI库来实现对Excel文件的数据导入和导出功能。在Java应用中,这是一项常用的技术,尤其在数据处理、报表生成或数据分析等领域。 首先,让我们详细了解一下...

    poi导入导出Excel源码

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

    poi导入导出

    本项目中的"poi导入导出"指的是利用Apache POI库进行数据的导入与导出操作。 一、Apache POI基础 Apache POI提供了HSSF(Horizontally-Structured Stream Format)用于处理老版本的Excel(.xls)文件,以及XSSF...

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

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

    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库在Java中用于处理Microsoft Office文档,特别是Excel文件的导入和导出功能。Apache POI是一个开源项目,它允许开发者使用Java来创建、修改和显示Microsoft Office...

Global site tag (gtag.js) - Google Analytics