簡體   English   中英

如何使用列名稱遍歷Excel工作表中的當前行?

[英]How to iterate over current row in an excel sheet using column name?

我需要解析一個Excel工作表並從每一行中檢索值以將其存儲在數據庫中。 目前,我正在根據每個單元格所保存的值的類型進行此操作。 在當前情況下可以,因為我只需要處理2列。 但是我有一個新的要求來解析一個包含超過12列的Excel工作表。 在這種情況下怎么辦? 如果我使用帶有表頭的結構化表,是否可以基於列迭代每一行?

我當前的代碼如下。

        File file = new File(UPLOAD_LOCATION + fileUpload.getFile().getOriginalFilename());
        FileInputStream excelFile = new FileInputStream(file);

        Workbook workbook = new XSSFWorkbook(excelFile);
        Sheet datatypeSheet = workbook.getSheetAt(0);
        Iterator<Row> iterator = datatypeSheet.iterator();
        while (iterator.hasNext()) {
            Row currentRow = iterator.next();
            Iterator<Cell> cellIterator = currentRow.iterator();

            while (cellIterator.hasNext()) {

                Cell currentCell = cellIterator.next();
                // getCellTypeEnum shown as deprecated for version 3.15
                // getCellTypeEnum ill be renamed to getCellType starting
                // from version 4.0
                if (currentCell.getCellTypeEnum() == CellType.STRING) {
                    System.out.print(currentCell.getStringCellValue() + "--");
                } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) {
                    System.out.print(currentCell.getNumericCellValue() + "--");
                }

            }

我正在使用以下外部apache API導入:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

有什么辦法可以傳遞列標題的名稱嗎?

請幫忙。

提前致謝。

根據評論

    InputStream excelFile = new FileInputStream(file);
    Workbook workbook = new XSSFWorkbook(excelFile);
    ArrayList colsList=new ArrayList();
    colsList.add("Col1");
    colsList.add("Col2");
    colsList.add("Col3");
    colsList.add("Col4");
    Sheet datatypeSheet = workbook.getSheetAt(0);
    int numOfRows=datatypeSheet.getLastRowNum();
    for(int rowNum=0;rowNum<numOfRows;rowNum++){
    Row row=datatypeSheet.getRow(rowNum);
    int numOfCellPerRow=row.getLastCellNum();
    for(int cellNum=0;cellNum<numOfCellPerRow;cellNum++){
    if(colsList.contains(row.getCell(rowNum).getStringCellValue())){
    Cell cell=row.getCell(cellNum)
    System.out.println("Cell No:"+cellNum+" value is: 
    "+cell.getStringCellValue())
    }
   }
     System.out.println("This is a new Row");
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM