Java循环通过文件将csv转换为xls
嗨有没有人知道如何循环下面的脚本在目录中的文件? 我已经尝试过,但我不知道如何将一个variables设置为以下行:
CSVReader reader = new CSVReader(new FileReader(file));
它必须是一个string,popup语法错误。
import java.io.*; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import au.com.bytecode.opencsv.CSVReader; class Test { public static void main(String[] args) throws IOException { Workbook wb = new HSSFWorkbook(); CreationHelper helper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("new sheet"); CSVReader reader = new CSVReader(new FileReader("data.csv")); String[] line; int r = 0; while ((line = reader.readNext()) != null) { Row row = sheet.createRow((short) r++); for (int i = 0; i < line.length; i++) row.createCell(i) .setCellValue(helper.createRichTextString(line[i])); } // Write the output to a file FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); } }
嗨,我不知道我是否正确理解你的问题。 但我会build议尝试这样的事情:您可以使用path和文件类循环通过一个目录。 然后你可以使用你的代码来编辑文件
import java.io.*; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import au.com.bytecode.opencsv.CSVReader; class Test { public static void main(String[] args) throws IOException { // here you enter the path to your directory. // for example: Path workDir = Paths.get("c:\\workspace\\csv-files") Path workDir = Paths.get("path/to/dir"); // the if checks whether the directory truly exists if (!Files.notExists(workDir )) { // this part stores all files withn the directory in a list try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(workDir )) { for (Path path : directoryStream) { Workbook wb = new HSSFWorkbook(); CreationHelper helper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("new sheet"); // here you insert the name of the file (stored in the Path object) into your method CSVReader reader = new CSVReader(new FileReader(path.toString())); String[] line; int r = 0; while ((line = reader.readNext()) != null) { Row row = sheet.createRow((short) r++); for (int i = 0; i < line.length; i++) row.createCell(i) .setCellValue(helper.createRichTextString(line[i])); } // Write the output to a file FileOutputStream fileOut = new FileOutputStream(path.getName().replaceAll("csv", "xls")); wb.write(fileOut); fileOut.close(); } } catch (IOException e) { System.out.println(e.getMessage()); } else { System.out.println("directory " + workDir.toString() + " does not exist" ) } } }