我是java的初学者,我尝试使用apache.poi库在csv文件中写入数据。但是csvPrinter
无法在csv文件中写入数据。
URL dir = getClass().getClassLoader().getResource("csv/input.csv");
File file = new File(dir.getFile());
FileWriter fileWriter = new FileWriter(file);
CSVPrinter csvPrinter = new CSVPrinter(fileWriter, csvFileFormat);
CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(",");
csvPrinter.print(data);
修改
这是代码。
FileWriter fileWriter = null;
CSVPrinter csvPrinter = null;
CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(",");
Logger logger = LoggerFactory.getLogger(this.getClass());
{
try{
URL dir = getClass().getClassLoader().getResource("csv/input.csv");
File file = new File(dir.getFile());
fileWriter = new FileWriter(file);
csvPrinter = new CSVPrinter(fileWriter, csvFileFormat);
}catch(Exception e){
System.out.println(e.getMessage());
}
}
@Override
public void write(List<? extends String[]> messages) throws Exception {
String[] data = messages.iterator().next();
csvPrinter.print(data);
for (String singleData : data) {
System.out.println(singleData);
}
// csvwriter.close();
}
答案 0 :(得分:0)
你必须要poi吗?如果不试试这个。
public static void main(String[] args) {
// TODO code application logic here\\
Random random = new Random();
StringBuilder stringbuilder = new StringBuilder();
//make random data file
for(int i = 1; i <= 100; i++)
{
stringbuilder.append(random.nextInt(10000) + 1).append(",");//append data and comma
if(i % 10 == 0)
{
stringbuilder.append("\r\n");//add new line at end of one line of data
}
}
//creat the file that the data will be written to
File file = new File("results.csv");
//write the string data to file
try(FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw))
{
bw.write(stringbuilder.toString());
}
catch (IOException ex)
{
System.out.println("Something went wrong!");
}
//open the file with your default program
try
{
Desktop.getDesktop().open(file);
}
catch (IOException ex) {
Logger.getLogger(Writecvsfile.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Can't open file!");
}
}