java导入excel,指定部分列导入
时间: 2023-08-06 13:14:32 浏览: 85
可以使用 Apache POI 库来实现 Java 导入 Excel 并指定部分列导入的功能。
首先,需要引入以下 Maven 依赖:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
```
然后,可以使用以下代码来读取 Excel 文件并指定要读取的列:
```java
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelReader {
public static void main(String[] args) {
String fileName = "data.xlsx";
int[] columnsToRead = {0, 2, 4}; // 要读取的列的索引
try (FileInputStream inputStream = new FileInputStream(fileName)) {
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
List<List<String>> data = new ArrayList<>();
// 遍历每个工作表
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
// 获取当前工作表
var sheet = workbook.getSheetAt(i);
// 遍历每一行
for (Row row : sheet) {
List<String> rowData = new ArrayList<>();
// 遍历要读取的列
for (int j : columnsToRead) {
Cell cell = row.getCell(j);
String cellValue = "";
// 判断单元格类型并读取值
if (cell != null) {
switch (cell.getCellType()) {
case STRING:
cellValue = cell.getStringCellValue();
break;
case NUMERIC:
cellValue = String.valueOf(cell.getNumericCellValue());
break;
case BOOLEAN:
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case FORMULA:
cellValue = String.valueOf(cell.getCellFormula());
break;
default:
break;
}
}
rowData.add(cellValue);
}
data.add(rowData);
}
}
// 打印读取的数据
for (List<String> rowData : data) {
System.out.println(rowData);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,`fileName` 变量指定要读取的 Excel 文件名,`columnsToRead` 数组指定要读取的列的索引。
代码首先创建一个 `XSSFWorkbook` 对象来读取 Excel 文件,然后遍历每个工作表和每一行,并在内部循环中遍历要读取的列。对于每个单元格,根据其类型读取相应的值并将其添加到一个列表中。最后,将所有行的列表添加到一个列表中,并打印出来。
需要注意的是,上面的代码只适用于 XLSX 格式的 Excel 文件,如果要读取 XLS 格式的文件,需要使用 `HSSFWorkbook` 对象。另外,上面的代码没有进行错误处理,实际使用中需要根据需要进行修改。
阅读全文