Java操作Excel:读取.xls和.xlsx文件的特定列
"这篇Java代码示例展示了如何获取Excel文件中的特定列,支持.xls和.xlsx两种格式。" 在Java编程中,Apache POI库被广泛用于处理Microsoft Office文档,包括Excel。以下代码片段展示了如何使用Apache POI读取并打印Excel文件中的一列数据。 首先,我们导入了必要的POI库类,包括`XSSFWorkbook`、`XSSFSheet`、`XSSFRow`和`XSSFCell`,这些类分别用于操作.xlsx格式的工作簿、工作表、行和单元格。 ```java import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; ``` 接着,我们在`main`方法中定义了Excel文件的路径,并创建了一个`FileInputStream`对象来读取文件。然后,我们通过`XSSFWorkbook`实例化一个工作簿对象,处理的是.xlsx格式的文件: ```java String path = "C:\\Users\\admin\\Desktop\\测试.xlsx"; InputStream iStream = new FileInputStream(path); XSSFWorkbook workbook = new XSSFWorkbook(iStream); ``` 为了处理.xls格式的文件,可以使用`HSSFWorkbook`,这部分在注释中给出,这里不再详细展开。 接下来,我们需要遍历工作簿中的每一张工作表: ```java for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) { XSSFSheet sheet = workbook.getSheetAt(numSheet); // ... } ``` 对于每个工作表,我们循环读取每一行,并获取该行的所有单元格: ```java for (int runNum = 0; runNum < sheet.getLastRowNum(); runNum++) { XSSFRow row = sheet.getRow(runNum); int minColIx = row.getFirstCellNum(); int maxColIx = row.getLastCellNum(); // 遍历该行,获取每个cell元素 for (int colIx = minColIx; colIx < maxColIx; colIx++) { XSSFCell cell = row.getCell(colIx); System.out.println(cell.getStringCellValue()); } } ``` 在这里,`getFirstCellNum()`和`getLastCellNum()`方法用于获取行中的第一个和最后一个单元格索引,然后我们遍历这些索引,获取并打印每个单元格的值。`getStringCellValue()`方法用于获取单元格的字符串值。 这个代码片段展示了基本的Excel数据读取操作,但实际应用中可能需要根据具体需求进行扩展,例如处理空单元格、数字、日期等不同类型的值,或者根据特定条件过滤和处理数据。同时,为了防止内存溢出,大文件操作时通常会使用`SXSSFWorkbook`来实现流式处理。
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public static void main(String[] args) throws IOException {
String path="C:\\Users\\admin\\Desktop\\测试.xlsx";
InputStream iStream=new FileInputStream(path);
//获取整个excel .xls
/*HSSFWorkbook workbook=new HSSFWorkbook(iStream);
//循环每一页,并处理当前页
for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {
HSSFSheet sheet=workbook.getSheetAt(numSheet);
if (sheet==null) {
continue;
}
//处理当前页循环读取每一行
for (int runNum = 0; runNum <sheet.getLastRowNum();runNum++) {
HSSFRow row=sheet.getRow(runNum);
int minColIx=row.getFirstCellNum();
int maxColIx=row.getLastCellNum();
//遍历该行,获取每个cell元素
for (int colIx = minColIx; colIx <maxColIx; colIx++) {
HSSFCell cell=row.getCell(colIx);
System.out.println(cell.getStringCellValue());
}
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 18
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展