У меня будет массив, перебирающий все нужные вам файлы.Вы можете прочитать в файле .csv как стандартный текстовый файл, сохраняя каждую строку в массиве, а затем циклически повторяя, что вы можете создать лист Excel.
Теперь я никогда не создавал книгу Excel с нуля, но яотредактировал их.Я написал следующее.Это будет циклически перебирать все файлы в каталоге и сканировать их. Он просто поместит данные из каждого файла один за другим на первый лист.Было бы неплохо использовать итераторы, но я позволю вам это сделать.:)
public void convertCSV(File dir) throws IOException {
// Gets the CSV files.
File[] csvFiles = dir.listFiles();
// Sets up the Workbook and gets the 1st (0) sheet.
File excelFile = new File("H:\\yourOutput.xls");
InputStream input = new FileInputStream(excelFile);
HSSFWorkbook workbook = new HSSFWorkbook(input);
HSSFSheet sheet = workbook.getSheetAt(0);
int rowNo = 0;
int columnNo = 0;
// Loop through the files.
for(File file : csvFiles) {
Scanner scanner = new Scanner(file);
while(scanner.hasNextLine()) {
String line = scanner.nextLine();
// Gets the row and if it doesn't exist it will create it.
Row tempRow = sheet.getRow(rowNo);
if(tempRow == null)
tempRow = sheet.createRow(rowNo);
Scanner lineScanner = new Scanner(line);
lineScanner.useDelimiter("\t");
// While there is more text to get it will loop.
while(lineScanner.hasNext()) {
// Gets the cell in that row and if it is null then it will be created.
Cell tempCell = tempRow.getCell(columnNo, Row.CREATE_NULL_AS_BLANK);
String output = lineScanner.next();
// Write the output to that cell.
tempCell.setCellValue(new HSSFRichTextString(output));
columnNo++;
}
// Resets the column count for the new row.
columnNo = 0;
rowNo++;
}
}
// Writes the file and closes everything.
FileOutputStream out = new FileOutputStream(excelFile);
workbook.write(out);
input.close();
out.close();
}
Протестировано и работает с наличием табуляции в качестве разделителя.Вам просто нужно указать каталог, в котором находятся ваши CSV-файлы.