2013-05-27 28 views
0

我正在製作一個程序,用於從多個Excel文件讀取數據並將數據存儲在表格中。當用戶給出文件的完整路徑時,我已經設法制作這個程序並且工作正常。我現在要做的是用戶會給所有excel文件所在的目錄,自動查找所有的.xls文件,併爲每個文件執行其餘的程序(讀取數據,創建表格並插入數據在裏面)。查找特定目錄中的所有.xls文件後,程序如何繼續?

爲用戶給出的路徑和打印所有.xls文件中的代碼是:

String dirpath = ""; 
Scanner scanner1 = new Scanner(System.in); 
while (true) { 
    System.out.println("Please give the directory:"); 
    dirpath = scanner1.nextLine(); 
    File fl = new File(dirpath); 
    if (fl.canRead()) break; 
    System.out.println("Error:Directory does not exists"); 
} 
try{ 
    String files; 
    File folder = new File(dirpath); 
    File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.length; i++) { 
     if (listOfFiles[i].isFile()) { 
      files = listOfFiles[i].getName(); 
       if (files.endsWith(".xls") || files.endsWith(".XLS")) { 
        System.out.println(files); 
       } 
     } 
    } 
}catch (Exception e){ 
    System.out.println(); 
} 

如何我會得到這些文件,繼續在其他程序中的每一個? 我在做下一個在下面的代碼說明:

List sheetData = new ArrayList(); 
FileInputStream fis = null; 
try { 
    fis = new FileInputStream(strfullPath); 
    HSSFWorkbook workbook = new HSSFWorkbook(fis); 
    HSSFSheet sheet = workbook.getSheetAt(0); 

    Iterator rows = sheet.rowIterator(); 
    while (rows.hasNext()) { 
     HSSFRow row = (HSSFRow) rows.next(); 
     Iterator cells = row.cellIterator(); 

     List data = new ArrayList(); 
     while (cells.hasNext()) { 
      HSSFCell cell = (HSSFCell) cells.next(); 
      data.add(cell); 
     } 
     sheetData.add(data); 
    }  
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    if (fis != null) { 
     fis.close(); 
    } 
} 

此代碼後,我創建了表之後,我用數據填充它。

+0

你的意思是你的第二個函數的調用替換System.out的?不完全清楚你想要什麼。 –

+0

將第二部分寫入以filepath作爲參數的單獨函數中。然後在firt部分,而不是打印,調用函數,說'writeToTables(file.getPath())'.. –

+0

我的意思是在這裏:fis = new FileInputStream(strfullPath);在給出文件的完整路徑的情況下,將它找到的每個文件都保存到剩下的程序中。 – dedmar

回答

0

裹代碼到一個方法和代替

System.out.println(files);

調用此方法,並傳遞listOfFiles[i]

0

您可以將XLS文件添加到文件列表中,然後針對xls文件處理代碼進行迭代。

//Delcare 
List<File> xlsFiles = new ArrayList<File>(); 


//Add the below code in the if loop 
xlsFiles.add(listOfFiles[i]) 

for(File xlsFile : xlsFiles){ 

List sheetData = new ArrayList(); 
FileInputStream fis = null; 
try { 
    fis = new FileInputStream(xlsFile); 
} 

問候, Dinesh.R

相關問題