我有一个xlxs解析器.在代码中.我不能改变我的方法


public ResponseEntity<Object> importPcpXlsx(MultipartFile xlsx) {
try {
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(xlsx.getInputStream());
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
Row row;
Cell cell;
int i = 1;

List<String> number = new ArrayList<>();
while (true) {
if (xssfSheet.getRow(i) != null) {
row = xssfSheet.getRow(i);
cell = row.getCell(0);

if (cell.getSheet()
.getRow(0)
.getCell(0)
.getRichStringCellValue()
.getString()
.equals("Number".trim())) {

number.add(cell.getStringCellValue().trim());

log.info("number: " + i + ".  № " + cell.getStringCellValue());
}
} else {
i = 1;
break;
}
i++;
}

List<String> kpgz = new ArrayList<>();
while (true) {
if (xssfSheet.getRow(i) != null) {

row = xssfSheet.getRow(i);
cell = row.getCell(1);

if (cell.getSheet()
.getRow(0)
.getCell(1)
.getRichStringCellValue()
.getString()
.equals("kpgz".trim())) {

kpgz.add(cell.getStringCellValue().trim());

log.info("kpgz: " + i + ". " + cell.getStringCellValue());
}
} else {
i = 1;
break;
}
i++;
}

我遍历每一栏并阅读每一栏下的所有行。但如果我有一些列不在xlxs文件中呢。也就是说,我需要一个不必严格指定列的选项。请预测。在代码中,我按列读取,因为列有不同的类型,应该以不同的方式处理。我需要这样做,这样我就不会在列号代码中指定列的数量,就像我所做的那样cell = row.getCell(0);或row.getCell(1)或row.getCell(2)

依次读取列并绑定它们的类型,然后检查这些列下的数据

类型检查示例如下:解析超大Excel 2007文件的最佳语言

如果你可以确定列,这不是一个问题。如果没有,你应该考虑改变api。

最新更新