我正在製作一個程序,用於從多個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();
}
}
此代碼後,我創建了表之後,我用數據填充它。
你的意思是你的第二個函數的調用替換System.out的?不完全清楚你想要什麼。 –
將第二部分寫入以filepath作爲參數的單獨函數中。然後在firt部分,而不是打印,調用函數,說'writeToTables(file.getPath())'.. –
我的意思是在這裏:fis = new FileInputStream(strfullPath);在給出文件的完整路徑的情況下,將它找到的每個文件都保存到剩下的程序中。 – dedmar