Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CSV文件生成_Java_Spring_Csv - Fatal编程技术网

Java CSV文件生成

Java CSV文件生成,java,spring,csv,Java,Spring,Csv,大概是这样的: Id,Name,Age 10,Harkirat,20 11,Sachin,30 12,Vikas,40 Id,Name,Age 10,Harkirat,20 11,Sachin,30 12,Vikas,40 public void downloadCSV(HttpServletResponse响应)引发IOException{ FileWriter FileWriter=newfilewriter(“students.csv”,true); //使用超级CSV API从模型数据

大概是这样的:

Id,Name,Age
10,Harkirat,20
11,Sachin,30
12,Vikas,40
Id,Name,Age
10,Harkirat,20
11,Sachin,30
12,Vikas,40
public void downloadCSV(HttpServletResponse响应)引发IOException{
FileWriter FileWriter=newfilewriter(“students.csv”,true);
//使用超级CSV API从模型数据生成CSV数据
ICsvBeanWriter csvWriter=新的CsvBeanWriter(文件写入程序,
CSVP(参考。标准优先);
字符串[]头={“Id”,“Name”,“Age”};
csvWriter.writeHeader(标头);
List sList=getStudents();
writeToCSV(sList、csvWriter);
icbw.close();
fileWriter.close();
}
私人学生名单
{
学生s2=新生(11,“Sachin”,30);
学生s3=新生(12,“维卡斯”,40);
学生s4=新生(10,“哈基拉特”,20);
返回数组.asList(s4,s2,s3);
}
私有void writeToCSV(列表标准、ICsvBeanWriter icbw)引发IOException{
适用于(学生姓名:std){
icbw.write(aStudent,header);
}
}
类似这样的内容:

Id,Name,Age
10,Harkirat,20
11,Sachin,30
12,Vikas,40
Id,Name,Age
10,Harkirat,20
11,Sachin,30
12,Vikas,40
public void downloadCSV(HttpServletResponse响应)引发IOException{
FileWriter FileWriter=newfilewriter(“students.csv”,true);
//使用超级CSV API从模型数据生成CSV数据
ICsvBeanWriter csvWriter=新的CsvBeanWriter(文件写入程序,
CSVP(参考。标准优先);
字符串[]头={“Id”,“Name”,“Age”};
csvWriter.writeHeader(标头);
List sList=getStudents();
writeToCSV(sList、csvWriter);
icbw.close();
fileWriter.close();
}
私人学生名单
{
学生s2=新生(11,“Sachin”,30);
学生s3=新生(12,“维卡斯”,40);
学生s4=新生(10,“哈基拉特”,20);
返回数组.asList(s4,s2,s3);
}
私有void writeToCSV(列表标准、ICsvBeanWriter icbw)引发IOException{
适用于(学生姓名:std){
icbw.write(aStudent,header);
}
}

您只需添加一个控制是否写入标题的标志即可

 public void downloadCSV(HttpServletResponse response) throws IOException {
    FileWriter fileWriter = new FileWriter("students.csv",true);

    // uses the Super CSV API to generate CSV data from the model data
    ICsvBeanWriter csvWriter = new CsvBeanWriter(fileWriter,
            CsvPreference.STANDARD_PREFERENCE);

    String[] header = {"Id", "Name", "Age"};
    csvWriter.writeHeader(header);

    List<Student> sList = getStudents();
    writeToCSV(sList, csvWriter);

    icbw.close();
    fileWriter.close();
}

private List<Student> getStudents()
{
    Student s2 = new Student(11, "Sachin", 30);
    Student s3 = new Student(12, "Vikas", 40);
    Student s4 = new Student(10, "Harkirat", 20);

    return Arrays.asList(s4,s2,s3);
}


private void writeToCSV(List<Student> std, ICsvBeanWriter icbw) throws IOException {
    for (Student aStudent : std) {
        icbw.write(aStudent, header);
    }
}
公共类csvFileDownload{
@请求映射(value=“/downloadcv”)
public void downloadCSV(HttpServletResponse响应)引发IOException{
学生s2=新生(11,“Sachin”,30);
学生s3=新生(12,“维卡斯”,40);
学生s4=新生(10,“哈基拉特”,20);
列表std=数组asList(s4、s2、s3);
FileWriter FileWriter=newfilewriter(“students.csv”,true);
writeToCSV(标准,fileWriter,true);
writeToCSV(std、fileWriter、false);
fileWriter.close();
}
私有void writeToCSV(列表std、Writer Writer、boolean writeHeader)引发IOException{
//使用超级CSV API从模型数据生成CSV数据
ICsvBeanWriter csvWriter=新的CsvBeanWriter(writer,CsvPreference.STANDARD_首选项);
字符串[]头={“Id”,“Name”,“Age”};
if(writeHeader)csvWriter.writeHeader(header);
适用于(学生姓名:std){
csvWriter.write(aStudent,header);
}
csvWriter.close();
}
}

您只需添加一个控制是否写入标题的标志即可

 public void downloadCSV(HttpServletResponse response) throws IOException {
    FileWriter fileWriter = new FileWriter("students.csv",true);

    // uses the Super CSV API to generate CSV data from the model data
    ICsvBeanWriter csvWriter = new CsvBeanWriter(fileWriter,
            CsvPreference.STANDARD_PREFERENCE);

    String[] header = {"Id", "Name", "Age"};
    csvWriter.writeHeader(header);

    List<Student> sList = getStudents();
    writeToCSV(sList, csvWriter);

    icbw.close();
    fileWriter.close();
}

private List<Student> getStudents()
{
    Student s2 = new Student(11, "Sachin", 30);
    Student s3 = new Student(12, "Vikas", 40);
    Student s4 = new Student(10, "Harkirat", 20);

    return Arrays.asList(s4,s2,s3);
}


private void writeToCSV(List<Student> std, ICsvBeanWriter icbw) throws IOException {
    for (Student aStudent : std) {
        icbw.write(aStudent, header);
    }
}
公共类csvFileDownload{
@请求映射(value=“/downloadcv”)
public void downloadCSV(HttpServletResponse响应)引发IOException{
学生s2=新生(11,“Sachin”,30);
学生s3=新生(12,“维卡斯”,40);
学生s4=新生(10,“哈基拉特”,20);
列表std=数组asList(s4、s2、s3);
FileWriter FileWriter=newfilewriter(“students.csv”,true);
writeToCSV(标准,fileWriter,true);
writeToCSV(std、fileWriter、false);
fileWriter.close();
}
私有void writeToCSV(列表std、Writer Writer、boolean writeHeader)引发IOException{
//使用超级CSV API从模型数据生成CSV数据
ICsvBeanWriter csvWriter=新的CsvBeanWriter(writer,CsvPreference.STANDARD_首选项);
字符串[]头={“Id”,“Name”,“Age”};
if(writeHeader)csvWriter.writeHeader(header);
适用于(学生姓名:std){
csvWriter.write(aStudent,header);
}
csvWriter.close();
}
}


您不是连续两次调用writeToCSV吗?那肯定不是你想做的。我调用它两次,以便在CSV中附加数据,但使用getting header一次,因为您在其中调用two-time方法header,所以它“打印two-timeYes,我正在调用该方法两次,但我希望它只显示一次标头。为调用一次的标头创建单独的方法,这很好。您不是连续调用writeToCSV两次吗?那肯定不是你想做的。我调用它两次,以便在CSV中附加数据,但使用getting header一次,因为您在其中调用two-time方法header,所以它“打印two-timeYes,我调用了两次该方法,但我希望它只显示一次头。为调用一次的头创建单独的方法,这很好,不会将任何内容写入csv文件。我没有测试代码,我只是为您的代码提供了一个备用结构。我已经更新了我发现的两个错误。一个是writeToCSV后缺少分号,这可能是它无法工作的原因。是的,我也修复了这个问题。但它不会生成错误,也不会向文件写入任何内容。我没有运行此操作所需的所有类,您是否尝试过通过它运行调试器以查看它在做什么?这也是一个建议,可能有更简单的方法来执行此操作,尤其是当您已经有部分工作的代码时。这个例子试图说明的是,通过不同的分组,您可以得到更清晰的代码,并希望得到更清晰的结果。如果它不起作用,则从至少正在写入文件的代码开始,然后一次进行一次更改。例如,首先将生成的学生数据移动到函数中。不向csv文件写入任何内容。我没有测试代码,我只是为您提供了一个备用结构