使用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);
}
}
分享到:
相关推荐
Java POI读取Office excel (2003,2007)及相关jar包 其中必要的poi-ooxml-schemas-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-scratchpad-3.5-beta1.jar
poi-ooxml-3.7.jar包下载,最新可用支持office各种文档,Java POI读取Office excel (2003,2007)及相关jar包 其中的poi-ooxml-3.7.jar
使用POI筛选字段导出Excel,以及条件查询和指定数据导出
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2...
简而言之,你可以使用 Java 读取和写入 MS Excel 文件,也可以读取和写入 MS Word 和 MS PowerPoint 文件。 该版本值得注意的更新内容: - Various modules: add sanity checks and fix infinite loops / OOMs ...
Apache POI 提供 Java 操作 Excel 解决方案(适用于 Excel97-2008)。 2 Apache POI的组件 Apache POI包含用于MS-Office的所有OLE2复合文档的类和方法。 此API的组件列表如下: POIFS:此组件是所有其他POI元素的...
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取...
一个读取excel2003、2007、2010的类
这是一套开源的库文件,无需安装Office软件即可读取或保存Office97-2003,Office2007格式的文件,生成Excel报表文件速度快。 NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够...
POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。目前POI的稳定版本中仅支持Excel文件格式xls,其他的都属于不稳定版本(放在...
Apache官网对poi的解释: Apache POI项目的任务是根据Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)创建和维护Java API,以处理各种文件格式。 简而言之,您可以使用Java读取和写入MS Excel...
这些API可以帮助开发人员处理不同类型的Office文档,例如HSSF可以处理Excel 97-2003格式的电子表格,XSSF可以处理Excel 2007及以上版本的电子表格。 支持多种数据类型:Apache POI库支持多种数据类型,包括字符串...
Java语言利用POI读取excel文档,利用Freemarker建立word模板(带图片),excel每一行数据生成单个word文档,再利用POI合并成一个word文档(源码); 博客地址:...
Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。 POIFS (较差混淆技术实现文件系统) : 此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。 HSSF (可怕的电子...
poi读写office文件的源代码程序,包括需要的jar,读取excel、word、ppt文件的样例程序