您知道如何使用下面的脚本循环浏览目录中的文件吗?我已经尝试过但我不知道如何将变量赋值给以下行:
CSVReader reader = new CSVReader(new FileReader(file));
它必须是一个弹出语法错误的字符串。
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();
}
}
答案 0 :(得分:3)
您好我不知道我是否正确理解您的问题。 但我建议尝试这样的事情: 您可以使用Path和Files类遍历目录。 然后,您可以使用代码编辑文件
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" )
}
}
}