java - 逐列写入 CSV 文件

标签 java csv

我一直在寻找这个问题的答案,但没有找到。有没有人有解决此类问题的方法。我有一组文本变量,我必须使用 Java 将其写入 .CSV 文件。我目前正在做一个需要 Java 的 JavaScript 项目。这是我现在拥有的一个功能,可以很好地完成工作并将文本逐行写入 .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);
   }
}

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

first0,second0,third0
first1,second1,third1
first2,second2,third2
.
.
.
first9,second9,third9

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

所以现在我需要java

最佳答案

您可能要考虑使用 Super CSV写入 CSV 文件。除了处理转义嵌入的双引号和逗号外,它还提供了 writing implementations 的范围。从数组/列表、映射甚至 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) {
            }
        }

    }

}

输出:

first0,second0,third0
first1,second1,third1
first2,second2,third2

关于java - 逐列写入 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12557052/

相关文章:

csv - 删除多列

python - Scrapy:FEED_FORMAT设置无效?

r - 如何使用 R 将 csv 转换为 xls?

使用 pandas read_csv 方法的 Python 多级索引

java - 使 Gson 使用枚举字符串值而不是常量名称

Java将整数转换为字符串并计算

java - JDBC 问题 : not being able to correctly bind variables and values (shortened)

Python 读取 csv 以听写引号丢失

java - 如何在JAVA邮件API中从特定字符串位置读取邮件并获取数据

java - 关于从 HTML 中的复选框值更新 MySql 数据库的建议