java - 有没有什么方法可以通过在java中使用 "|"作为分隔符来按列写入csv

标签 java arraylist opencsv

我有List<ArrayList<String>>对象,我想用java将它们逐列写入csv文件。

List<ArrayList<String>> contains 

[[fileName, abc.sldprt, pqr.sldprt, jku.sldprt, cmx.sldprt, abc.sldprt],
[cadName, abc.sldprt, pqr.sldprt, jku.sldprt, cmx.sldprt, abc.sldprt],
[number, abc.sldprt, pqr.sldprt, jku.sldprt, cmx.sldprt, abc.sldprt],
[folder_Id, 098123, 098124, 094123, 0981290, 09812354],
[Directory_Path, 098123, 098124, 094123, 0981290, 09812354],
[wC_State, Working, WIP, Released, Development, Working],
[legacy_Path, C:\WC, C:\WC, C:\WC, C:\WC, C:\WC],
[reverified, Empty, Empty, Empty, Yes, Empty],
[createdBy, 12132019, 12092019, 12072019, 12132018, 12132019],
[originDate, 12132019, 12092019, 12072019, 12132018, 12132019],
[iteration, 2, 8, 13, 19, 3],
[shouldImport, True, True, True, True, True],
[Mymap, True, True, True, True, True],
[YourMap, True, True, True, True, True]]

到目前为止我已经尝试过下面的代码

String csv = "C:\\Users\\Output.csv";
        CSVWriter writer = null;
        try {
            writer = new CSVWriter(new FileWriter(csv),'|',CSVWriter.NO_QUOTE_CHARACTER,
                    CSVWriter.DEFAULT_ESCAPE_CHARACTER,
                    CSVWriter.DEFAULT_LINE_END);
            for(ArrayList<String> each: databaseColListHeaderChange){
                writer.writeNext(each.toArray(new String[each.size()]));
            }
            writer.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

我正在 csv 文件中按行获取数据。 有没有办法将 ArrayList 按列写入 csv 文件中

现在我得到以下格式的 csv 文件

fileName|abc.sldprt|pqr.sldprt|jku.sldprt|cmx.sldprt|abc.sldprt
cadName|abc.sldprt|pqr.sldprt|jku.sldprt|cmx.sldprt|abc.sldprt
number|abc.sldprt|pqr.sldprt|jku.sldprt|cmx.sldprt|abc.sldprt
folder_Id|098123|098124|094123|0981290|09812354
Directory_Path|098123|098124|094123|0981290|09812354
wC_State|Working|WIP|Released|Development|Working
legacy_Path|C:\WC|C:\WC|C:\WC|C:\WC|C:\WC
reverified|Empty|Empty|Empty|Yes|Empty
createdBy|12132019|12092019|12072019|12132018|12132019
originDate|12132019|12092019|12072019|12132018|12132019
iteration|2|8|13|19|3
shouldImport|True|True|True|True|True
Mymap|True|True|True|True|True
YourMap|True|True|True|True|True

我需要以下格式的数据

fileName|cadName|number|folder_Id|Directory_Path
abc.sldprt|abc.sldprt|abc.sldprt|098123|098123
pqr.sldprt|pqr.sldprt|pqr.sldprt|098124|098124
jku.sldprt|jku.sldprt|jku.sldprt|094123|094123
cmx.sldprt|cmx.sldprt|cmx.sldprt|0981290|0981290
abc.sldprt|abc.sldprt|abc.sldprt|09812354|09812354
...so on all the list

请问有什么建议或帮助吗?

最佳答案

您需要将数据标准化为映射,其中键将是您的第一个 arrayList 条目,值将是列表的其余部分。

{
 fileName=[abc.sldprt, pqr.sldprt, jku.sldprt, cmx.sldprt, abc.sldprt],
 cadName=[abc.sldprt, pqr.sldprt, jku.sldprt, cmx.sldprt, abc.sldprt],
...
}

然后使用 map 键作为标题

关于java - 有没有什么方法可以通过在java中使用 "|"作为分隔符来按列写入csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814036/

相关文章:

ASP.Net Core - 获取帖子表单的所有数据

java - 如何读取csv文件中的指定行

java - Android,引用其他库

java - 在unix中运行java控制台程序

java - 如何以多线程方式调用返回List元素的方法

c# - 如何最有效地测试两个数组是否包含 C# 中的等效项

java - 如何为每个 Windows Azure 虚拟机操作系统设置一些唯一标识符

java - Jersey:返回 204 状态而不是 500

java - 删除 CSV 中的空白行

java - 是否可以从 csv 文件重新创建结果集?