複数のExcelファイルからデータを読み取り、データをテーブルに保存するプログラムを作成しています。私はこのプログラムを作成することができ、ユーザーがファイルのフル パスを指定すると正常に動作します。私が今やろうとしているのは、ユーザーがすべての Excel ファイルがある場所のディレクトリを指定し、すべての .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();
}
}
このコードの後、テーブルを作成し、その後にデータを入力しています。