我正在制作一个程序,用于从多个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