`
aa860326
  • 浏览: 95733 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用POI对Office Excel 97-2003 版本以及2007版进行基本的读取操作

    博客分类:
  • J2EE
阅读更多

使用POI对excel不同的版本进行读操作,参见以下代码:

 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

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;

/**
 * 读取Excel普通数据格式
 * @author Jack
 * 自动识别Office版本
 * =>支持Office 97-2003版本
 * =>支持Office 2007以上版本
 */
public class ExcelFactory {
	
	private final static MyLog _log = MyLog.getLog(ExcelFactory.class);
	
	private String _filepath;			// 文件路径(仅限-xls|-xlsx格式)
	private Workbook _workbook;			// Excel工作薄(HSSF*|XSSF*父类)
	private Sheet _sheet;				// Excel工作表
	private Row _row;					// Excel行
	private Cell _cell;					// Excel单元格
	private int _rows;					// Excel已使用的总行数(索引+1)
	private int _columns;				// Excel列数->从配置文件统计出来
	private int _begin;					// Excel开始行->从配置文件中获取
	private boolean isXLS;				// 判断是否是{-xls}
	private final static String XLSX = ".xlsx";
	
	public ExcelFactory(String filepath, int columns, int begin) throws FileNotFoundException, IOException {
		_filepath = filepath;
		_columns = columns;
		_begin = begin;
		isXLS();
		get();
	}
	
	private void isXLS() {
		if (-1 < _filepath.indexOf(XLSX)) {
			isXLS = true;
			return ;
		}
		isXLS = false;
	}
	
	private Workbook get() throws FileNotFoundException, IOException {
		if (null == _workbook){
			_workbook = isXLS?new XSSFWorkbook(_filepath):new HSSFWorkbook(new FileInputStream(_filepath));
		}
		return _workbook;
	}
	
	public void Read(int index) {
		_sheet = _workbook.getSheetAt(index);
		_rows = _sheet.getLastRowNum();
		for (int y = _begin; y <= _rows; y ++) {
			_row = _sheet.getRow(y);
			if (null == _row){
				continue;
			}
			
			for (int x = 0; x < _columns; x ++){
				_cell = _row.getCell(x);
				if (null == _cell){
					continue;
				}
				String cellValue = getValue(_cell);
				System.out.print((null == cellValue || 0 == cellValue.length())?"#":cellValue);
				System.out.print(" ");
			}
			System.out.println();
		}
	}
	
	public String getValue(Cell cell){
		switch (cell.getCellType()){
			case Cell.CELL_TYPE_BLANK:
				return "";
			case Cell.CELL_TYPE_BOOLEAN:
				return String.valueOf(cell.getBooleanCellValue());
			case Cell.CELL_TYPE_ERROR:
				break;
			case Cell.CELL_TYPE_FORMULA:
				return cell.getCellFormula();
			case Cell.CELL_TYPE_NUMERIC:
				return NumberToTextConverter.toText(cell.getNumericCellValue());
			case Cell.CELL_TYPE_STRING:
				return cell.getStringCellValue();
			default :
				return cell.getStringCellValue();
		}
		return cell.getStringCellValue();
	}
	
	public static void main(String[] args) throws Exception {
//		String filepath = "D:/excel/原始订单-liandong110221.xls";
//		ExcelFactory factory = new ExcelFactory(filepath, 17, 1);
//		factory.Read(0);
		
		String filepath = "D:/excel/test.xlsx";
		ExcelFactory factory = new ExcelFactory(filepath, 13, 0);
		factory.Read(0);
	}
}

 

分享到:
评论
1 楼 padangel 2012-05-28  
狠不错,给我一些启发了

相关推荐

    poi-ooxml-schemas-3.7-20101029.jar

    Java POI读取Office excel (2003,2007)及相关jar包 其中必要的poi-ooxml-schemas-3.7-20101029.jar

    poi-ooxml-3.7-20101029.jar

    Java POI读取Office excel (2003,2007)及相关jar包 其中的poi-ooxml-3.7-20101029.jar

    Java POI读取Office excel (2003,2007)jar包集合

    Java POI读取Office excel (2003,2007)及相关jar包。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    poi-contrib-3.6-20091214.jar

    Java POI读取Office excel (2003,2007)及相关jar包 其中相关的poi-contrib-3.6-20091214.jar

    poi-scratchpad-3.5-beta1.jar

    Java POI读取Office excel (2003,2007)及相关jar包 其中相关的poi-scratchpad-3.5-beta1.jar

    poi-ooxml-3.7.jar 包下载

    poi-ooxml-3.7.jar包下载,最新可用支持office各种文档,Java POI读取Office excel (2003,2007)及相关jar包 其中的poi-ooxml-3.7.jar

    使用POI筛选字段导出Excel,以及条件查询和指定数据导出

    使用POI筛选字段导出Excel,以及条件查询和指定数据导出

    poi导出excel的使用

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2...

    poi-3.17-20170915最新版本

    简而言之,你可以使用 Java 读取和写入 MS Excel 文件,也可以读取和写入 MS Word 和 MS PowerPoint 文件。 该版本值得注意的更新内容: - Various modules: add sanity checks and fix infinite loops / OOMs ...

    POI操作WORD 官方测试案例 DEMO.zip

    Apache POI 提供 Java 操作 Excel 解决方案(适用于 Excel97-2008)。 2 Apache POI的组件 Apache POI包含用于MS-Office的所有OLE2复合文档的类和方法。 此API的组件列表如下: POIFS:此组件是所有其他POI元素的...

    POI操作Excel常用方法总结.docx

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取...

    (实例)java poi完美解决excel2003和2007、2010之间兼容问题

    一个读取excel2003、2007、2010的类

    NPOI 2.0 库(alpha版本)

    这是一套开源的库文件,无需安装Office软件即可读取或保存Office97-2003,Office2007格式的文件,生成Excel报表文件速度快。 NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够...

    NPOI读取excel控件(.net)

    POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。目前POI的稳定版本中仅支持Excel文件格式xls,其他的都属于不稳定版本(放在...

    poi3.9 jar包下载

    Apache官网对poi的解释: Apache POI项目的任务是根据Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)创建和维护Java API,以处理各种文件格式。 简而言之,您可以使用Java读取和写入MS Excel...

    Apache POI库jar文件

    这些API可以帮助开发人员处理不同类型的Office文档,例如HSSF可以处理Excel 97-2003格式的电子表格,XSSF可以处理Excel 2007及以上版本的电子表格。 支持多种数据类型:Apache POI库支持多种数据类型,包括字符串...

    POI读取excel,利用Freemarker建立word模板(带图片),生成word文档,再合并成一个word文档(源码)

    Java语言利用POI读取excel文档,利用Freemarker建立word模板(带图片),excel每一行数据生成单个word文档,再利用POI合并成一个word文档(源码); 博客地址:...

    java操作EXCEL,jar包,含实例教程,poi-3.17

    Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。 POIFS (较差混淆技术实现文件系统) : 此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。 HSSF (可怕的电子...

    poi读写office文件样例程序

    poi读写office文件的源代码程序,包括需要的jar,读取excel、word、ppt文件的样例程序

Global site tag (gtag.js) - Google Analytics