我有498个文本文件来自网站上表单的WebScraping结果,我想使用java将它全部转换为Excel标准(.xls)格式。
我必须每月使用相同数量的文件进行此转换,在基于手动的转换中每个文件花费不少于10秒,总结1h23m的乐观情况带来的不便,因此加载方法每个文件都是禁止用手或机器人击中“save_as”。
答案 0 :(得分:2)
您可以使用apache poi项目在java中生成xls文件。
答案 1 :(得分:2)
Excel可以将它们作为csv文件加载,只需指定字段分隔符为Tab
。
答案 2 :(得分:1)
我会在你想要的所有文件上循环一个数组。您可以将.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文件所在的目录即可。