2013-05-27 30 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

相关问题