Java读取本地Excel文件(.xlsx与.xls)
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
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.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* 读取本地Excel文件(.xlsx与.xls)
* XSSFWorkbook支持.xlsx
* HSSFWorkbook支持.xlt与.xls
* 需导入依赖
* <dependency>
* <groupId>org.apache.poi</groupId>
* <artifactId>poi</artifactId>
* <version>4.0.1</version>
* </dependency>
*
* <dependency>
* <groupId>org.apache.poi</groupId>
* <artifactId>poi-ooxml</artifactId>
* <version>4.0.1</version>
* </dependency>
*/
public static void readExcel(String filePath) {
try {
/*
*简单判断后缀名,如需通过文件流判断文件类型,
* 请调用getFileTypeByStream方法
* Excel( xls) 文件头:504B03
* Excel( xlsx) 文件头:D0CF11
* */
boolean xls = filePath.endsWith(".xls");
boolean xlsx = filePath.endsWith(".xlsx");
Workbook book;
Sheet sheet = null;
InputStream inputStream = new FileInputStream(new File(filePath));
if (xls) {
// 解析excel
POIFSFileSystem pSystem = new POIFSFileSystem(inputStream);
// 获取整个excel
book = new HSSFWorkbook(pSystem);
//获取第一个表单sheet
sheet = book.getSheetAt(0);
}
if (xlsx) {
// 直接通过流获取整个excel
book = new XSSFWorkbook(inputStream);
// 获取第一个表单sheet
sheet = book.getSheetAt(0);
}
if (sheet != null) {
// 获取第一行
int firstRow = sheet.getFirstRowNum();
// 获取最后一行
int lastRow = sheet.getLastRowNum();
// 循环行数依次获取列数
for (int i = firstRow; i < lastRow + 1; i++) {
// 获取第 i 行
Row row = sheet.getRow(i);
if (row != null) {
// 获取此行的第一列
int firstCell = 0;
/*
*获取此行的存在数据的第一列
* int firstCell = row.getFirstCellNum();
* */
// 获取此行的存在数据的最后一列
int lastCell = row.getLastCellNum();
// 创建集合,保存每一行的每一列
List<String> list = new ArrayList<>();
for (int j = firstCell; j < lastCell; j++) {
// 获取第 j 列
Cell cell = row.getCell(j);
if (cell != null) {
list.add(cell.toString());
} else {
list.add("");
}
}
System.out.println(list);
}
}
}
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
更多方法访问Java工具网utils.net.cn
每个方法单独使用,不互相依赖,持续更新!