【发布时间】:2020-09-23 06:45:45
【问题描述】:
我是使用 Java 处理 CSV 的菜鸟。
如何在 Java 中读取/写入多个标头 CSV。例如:
多次连接后的数据(例如来自表)。
-------------------------------------------------------------
|student_id | name | year | subject_id | marks| total_marks |
-------------------------------------------------------------
|STD01 | ABC |2001 | SUB01 | 80 | 155 |
|STD01 | ABC |2001 | SUB02 | 75 | 155 |
|STD02 | XYZ |2001 | SUB01 | 85 | 85 |
-------------------------------------------------------------
上述数据将在 CSV 中以以下格式表示 - 它们在第一列中有所不同,将它们标识为 ALL 或 IND
ALL, STUDENT_ID, NAME, YEAR, TOTAL_MARKS
IND, STUDRNT_ID, NAME, YEAR, SUBJECT_ID, MARKS
ALL, STD01, ABC, 2001, 155
IND, STD01, ABC, 2001, SUB01, 80
IND, STD01, ABC, 2001, SUB02, 75
ALL, STD02, XYZ, 2001, 85
IND, STD02, XYZ, 2001, SUB01, 85
将它们导出为连接表意味着我在每一行中都有不需要的 ALL 列。
非常感谢任何线索或有用的工具建议!
【问题讨论】:
-
嗨杰克,你为什么想要一个多行标题?您如何在 CSV 中知道哪一行对应于哪个标题行?你有这样的逻辑吗?为什么不简单地将其导出为多重连接结果中的视图/表?
-
@lucniner 如果您可以看到第一列带有条目 ALL/IND(总计/个人),这会区分数据行以匹配标题行。如果我们只是将其导出为视图/表,那么每一行都会有总聚合,这是不需要的。因此,各个行在单独/聚合行中重新排列
-
嗨@Jake,啊,我明白你的意思了-也许看看any of these tools这可能对你有帮助-我曾经使用过apache commons csv来解决类似的问题
-
嗨@lucniner,感谢您的建议。但它也使用单个标头处理。我找不到任何处理多个标题的资源!
-
嗨@Jake,那么您可能需要通过遍历文件的每一行并相应地处理它们来编写自己的自定义解决方案。
标签: csv export-to-csv opencsv supercsv rfc4180