使用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);
}
}
分享到:
相关推荐
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。这个压缩包包含了POI项目的几个核心组件的jar文件,包括基础的`poi`库,以及支持Open XML格式(OOXML)的`poi-...
NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。...NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。
这篇博客“通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)”正是介绍了如何使用Apache POI库来处理不同版本的Excel文件。 Apache POI 提供了两个主要的API来处理Excel文件:HSSF(Horrible Spreadsheet ...
通过使用Apache POI,开发者可以在Java应用程序中实现与Excel的深度交互,比如创建复杂的表格、图表,执行公式计算,以及读取和修改现有文件。标签中的"poi excel 表格"明确指出,这里的重点是处理Excel文件,这在...
HSSF是用于读写旧的BIFF格式(Excel 97-2007),而XSSF则是用于处理新的OOXML格式(Excel 2007及以后版本)。 2. poi-ooxml-3.9.jar:这个库提供了对Office Open XML (OOXML) 格式的额外支持。OOXML是微软推出的一...
这个“POI操作EXCEL,支持office2003,2007,2010,2013(详)”的主题涵盖了一系列知识点,旨在帮助开发者熟练地使用Apache POI处理不同版本的Excel文件。 首先,我们来看Excel的两种主要文件格式:`.xls`(Excel 97-...
在这个5.2.1版本中,POI提供了对Excel电子表格的强大支持,包括读取数据、修改内容、创建新工作簿以及处理复杂的公式和样式。 `poi-ooxml-lite-5.2.1.jar`:这个轻量级的JAR文件包含了处理OOXML(Office Open XML)...
Java中的Apache POI库是用于处理Microsoft Office格式文件的强大工具,特别是Excel(.xls和.xlsx)文件。在Java编程环境中,POI库提供了一种高效且灵活的方式来读取、写入和修改Excel文档。在提供的压缩包中,我们有...
Apache POI是一个流行的Java库,用于处理Microsoft Office格式的文件,如Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)。而"poi-ooxml-schemas-3.17.zip"是Apache POI项目的一个组件,包含了Open XML(OOXML...
标题中的"poi-ooxml-schemas-3.8,poi-3.8,poi-ooxml jar包合集"指的是Apache POI项目中用于处理Microsoft Office格式文件的Java库,特别是针对Excel(XLS和XLSX)文档的处理。Apache POI是一个流行的开源库,允许...
本示例将详细介绍如何使用Apache POI解析Office Excel 2003和2007,以及Word 2003和2007的文件。 首先,我们来看Excel的解析。Excel 2003使用的是.BOOK文件格式(HSSFWorkbook),而2007及以上版本使用的是.XLSX...
在Java中,使用POI库可以实现对Excel文件的读取、写入以及修改等操作,这对于数据分析、报表生成、自动化测试等场景非常实用。在你提到的资源中,"javaYdmxx80.zip"很可能包含了进行这些操作所需的jar文件,这些文件...
在Android上使用这些库进行Excel读取时,开发者需要注意以下几点: 1. **兼容性**: 考虑到Android设备的多样性,需要确保选择的库能兼容广泛的Android版本。 2. **内存管理**: 因为Android设备的内存有限,处理大型...
这个项目为 Java 开发者提供了强大的 API,使得在没有安装 Microsoft Office 的情况下,也能进行读取、写入以及操作这些文件。下面将详细阐述 POI 库在处理不同 Office 文件中的应用和关键知识点。 1. **处理 Word ...
HSSF和HWPF分别用于处理老版本的BIFF格式(Excel 97-2007)和Word 97-2007格式,而XSSF和XWPF则用于处理Office Open XML(OOXML)格式的新版Excel和Word文件。 2. `poi-ooxml-3.16.jar`:这个库提供了对OOXML格式的...
- **poi-3.8-beta2-20110408.jar**: 主要包含处理Excel 97-2003格式(`.xls`)的核心类。 - **poi-excelant-3.8-beta2-20110408.jar**: 提供了一些额外的工具类来帮助处理Excel文档。 - **poi-ooxml-3.8-beta2-...
Apache POI是一个开源项目,主要用于处理Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。在本例中,我们关注的是与处理PowerPoint文件相关的部分,即"poi-...
"poi3.9读写excel兼容03和07版本"这个标题指的是使用Apache POI 3.9版本的API,能够兼容两种不同格式的Excel文件:.xls(Excel 2003及更早版本)和.xlsx(Excel 2007及更高版本)。 在描述中提到的"完美修订版本...
总的来说,Apache POI 3.9版本为Java开发者提供了强大的处理Excel文件的能力,无论是读取旧版的.xls文件,还是编写现代的.xlsx文件,都能游刃有余。在实际项目中,我们可以利用它进行数据的读取、分析、转换和报告...
标题中的"poi-bin-5.2.2-230220312.jar"是Apache POI项目的一个特定版本的二进制发行版,主要用于处理Microsoft Office格式的文件,特别是Excel工作簿。Apache POI是Java领域中广泛使用的库,它允许开发者通过Java...