簡體   English   中英

如何使用JXL逐張讀取Excel文件

[英]How to read an excel file, sheet by sheet using jxl

我正在開發一種實用程序,可以將Excel文件從一種格式轉換為另一種格式。 建議我使用jxl庫來滿足以下要求。
逐頁閱讀文件並執行以下操作

獲取工作表名稱,使其成為地圖的鍵,然后獲取其列標題並使其具有值。

這將導致以下

   Map<String, List<String>> result = result<key=sheetName, value=list of column headers> 

對給定文件中的所有工作表執行此操作

我以以下方式做到了

公共Map>函數(字符串filePath)拋出IOException,BiffException {

       Map<String, List<String>> map = new HashMap<String, List<String>>(); 
    Workbook workBook=Workbook.getWorkbook(new File (filePath));
      String [] sheetNames = workBook.getSheetNames();
      Sheet sheet=null;
      List<String > fields = new ArrayList<String>();
      for (int sheetNumber =0; sheetNumber < sheetNames.length; sheetNumber++){
         sheet=workBook.getSheet(sheetNames[sheetNumber]);
         for (int columns=0;columns < sheet.getColumns();columns++){
             fields.add(sheet.getCell(columns, 0).getContents());


         }
         map.put(sheetNames[sheetNumber],fields);

      }
      return map;
}

我這樣做是希望獲得期望的結果,但是它的作用是針對每個鍵將所有工作表的列標題存儲為值。 即如果文件中有兩張名為

  1. 工作表1
  2. 工作表2

以下是他們的列標題

表格1-> ID,名稱
sheet2->類別,價格

然后地圖會像

result<sheet1,<id, name, caegory, price>>
result<sheet2,<id, name, caegory, price>>

無法弄清楚我在做什么錯? 請幫忙,因為我的項目有很多后端計算,而且我不想在這個事情上花費很多時間。

任何幫助將不勝感激

我在這里發布后解決了這個問題,但是忘了在這里給出解決方案。
上面代碼中的問題是列表聲明的位置。
應該在for聲明它,以便在每次循環迭代后刷新(清空)並一次僅存儲一張紙的數據。
正確的代碼如下。

      Map<String, List<String>> map = new HashMap<String, List<String>>(); 
      Workbook workBook=Workbook.getWorkbook(new File (filePath));
      String [] sheetNames = workBook.getSheetNames();
      Sheet sheet=null;
      for (int sheetNumber =0; sheetNumber < sheetNames.length; sheetNumber++){
         List<String > fields = new ArrayList<String>();
         sheet=workBook.getSheet(sheetNames[sheetNumber]);
         for (int columns=0;columns < sheet.getColumns();columns++){
             fields.add(sheet.getCell(columns, 0).getContents());                 
         }
         map.put(sheetNames[sheetNumber],fields); 
      }
      return map;
}

希望對別人有幫助

public String ExcelValueGetFn(String FilePath, int column, int row) throws BiffException, IOException  {
    Workbook workbook = null;
    final String EXCEL_FILE_LOCATION = FilePath;
    workbook = Workbook.getWorkbook(new File(EXCEL_FILE_LOCATION));

    Sheet sheet = workbook.getSheet(0);
    Cell cell1 = sheet.getCell(column, row);
    System.out.print(cell1.getContents() + ":");

    String textToSendFromExcel = cell1.getContents();
    return textToSendFromExcel;
}

暫無
暫無

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

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