逐列写入 CSV 文件

mac*_*pts 5 java csv

我正在寻找这个问题的答案,但没有找到。有没有人有解决此类问题的方法。我有一组文本变量,必须使用 Java 将它们写入 .CSV 文件中。我目前正在做一个使用 JavaScript 的项目,需要 Java。这是我现在拥有的一个函数,可以很好地完成工作并将文本逐行写入 .CSV。

function writeFile(filename, data)
{
   try
   { 

      //write the data

      out = new java.io.BufferedWriter(new java.io.FileWriter(filename, true));
      out.newLine();
      out.write(data);
      out.close();
      out=null;
   }
   catch(e)   //catch and report any errors
   {
      alert(""+e);
   }
}
Run Code Online (Sandbox Code Playgroud)

但现在我必须像下面的例子一样一篇一篇地写出部分文本。

first0,second0,third0
first1,second1,third1
first2,second2,third2
.
.
.
first9,second9,third9
Run Code Online (Sandbox Code Playgroud)

所以算法是这样的。该函数用逗号写入first0,然后转到下一行写入first1,转到下一行写入first2,依此类推,直到first9。该部分完成后,脚本将转到文件开头并在逗号后面写入 secondary0,转到下一行并在逗号后面写入 secondary1,依此类推。你明白了。

所以现在我需要java

Jam*_*ett 4

您可能需要考虑使用Super CSV来写入 CSV 文件。除了处理转义嵌入的双引号和逗号之外,它还提供了一系列编写实现从数组/列表、映射甚至 POJO 写入的

如果您想保持简单,可以将 CSV 文件组装在二维数组中。这允许先按列组装它,然后在准备好后将整个内容写入 CSV。

package example;

import java.io.FileWriter;
import java.io.IOException;

import org.supercsv.io.CsvListWriter;
import org.supercsv.io.ICsvListWriter;
import org.supercsv.prefs.CsvPreference;

public class ColumnFirst {

    public static void main(String[] args) {

        // you can assemble this 2D array however you want
        final String[][] csvMatrix = new String[3][3];
        csvMatrix[0][0] = "first0";
        csvMatrix[0][1] = "second0";
        csvMatrix[0][2] = "third0";
        csvMatrix[1][0] = "first1";
        csvMatrix[1][1] = "second1";
        csvMatrix[1][2] = "third1";
        csvMatrix[2][0] = "first2";
        csvMatrix[2][1] = "second2";
        csvMatrix[2][2] = "third2";

        writeCsv(csvMatrix);

    }

    private static void writeCsv(String[][] csvMatrix) {

        ICsvListWriter csvWriter = null;
        try {
            csvWriter = new CsvListWriter(new FileWriter("out.csv"), 
                CsvPreference.STANDARD_PREFERENCE);

            for (int i = 0; i < csvMatrix.length; i++) {
                csvWriter.write(csvMatrix[i]);
            }

        } catch (IOException e) {
            e.printStackTrace(); // TODO handle exception properly
        } finally {
            try {
                csvWriter.close();
            } catch (IOException e) {
            }
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

输出:

first0,second0,third0
first1,second1,third1
first2,second2,third2
Run Code Online (Sandbox Code Playgroud)