java读取前端传来的excel文件流,然后将读出来的数据放到集合里面
时间: 2024-02-11 22:08:25 浏览: 144
可以使用 Apache POI 库来读取 Excel 文件流,并将读出来的数据放到集合中。以下是一个简单的 Java 代码示例:
```java
import org.apache.poi.ss.usermodel.*;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ExcelReader {
public List<List<String>> readExcel(InputStream inputStream) throws Exception {
List<List<String>> rows = new ArrayList<>();
// 创建工作簿对象
Workbook workbook = WorkbookFactory.create(inputStream);
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 获取第一行
Row headerRow = sheet.getRow(0);
int numColumns = headerRow.getLastCellNum();
// 迭代行
Iterator<Row> rowIterator = sheet.rowIterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
List<String> rowData = new ArrayList<>();
// 迭代单元格
for (int i = 0; i < numColumns; i++) {
Cell cell = row.getCell(i, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL);
String cellValue = "";
if (cell != null) {
int cellType = cell.getCellType();
if (cellType == CellType.NUMERIC.getCode()) {
// 处理数字类型的单元格
cellValue = Double.toString(cell.getNumericCellValue());
} else if (cellType == CellType.STRING.getCode()) {
// 处理字符串类型的单元格
cellValue = cell.getStringCellValue();
} else if (cellType == CellType.BOOLEAN.getCode()) {
// 处理布尔类型的单元格
cellValue = Boolean.toString(cell.getBooleanCellValue());
}
}
rowData.add(cellValue);
}
rows.add(rowData);
}
return rows;
}
}
```
你可以将上述代码中的 `InputStream` 参数替换为你从前端传来的 Excel 文件流,然后调用 `readExcel` 方法即可将读出来的数据放到一个 `List<List<String>>` 集合中,其中每个内部列表代表着一行数据,而内部列表中的每个元素则代表着该行数据的一个单元格的值。
阅读全文