我正在尝试将SQL结果集解析为CSV,到目前为止我成功了。但是当我试图解析像
这样的东西时<span style="color: rgb(0,0,0); font-family: 'Times New Roman'; </span> this, it sees that as a header column and puts that in there.
我的预期结果是:
Name; |Notes;|Version;|Status
Name1;|<span style="color: rgb(0,0,0); font-family: 'Times New Roman'; </span>;| 1;| Active |
但不是那样,我得到了这个
Name;|Notes;|Version;|Status
Name1;|<span style="color: rgb(0,0,0);| font-family: 'Times New Roman';| </span>;| 1;| Active|
当我在MySQL上尝试这个查询时,它的表很好地显示了它,但是当我将它转换为CSV文件并在excel中打开它时,由于Notes区域中的分号,这是灾难性的。知道如何解决这个问题吗?
修改
我的问题在于Excel,它是如何看待我的数据并解析它错误的,因为一列包含分号,它将该列分成更多。有没有办法让我做一些事情,比如将它存储在引号或其他内容中?
编辑2:
public void writeWithOpenCsv (String filename, List<String[]> rows) throuws IO Exception{
try (CSVWriter writer = new CSVWriter(new FileWriter(filename))){
writer.writeAll(rows);
}
}
答案 0 :(得分:0)
问题不在于代码,而在于excel和CSV的格式。
我了解到有办法解决这个问题。 如果您的列内容包含您的解析分隔符,例如&#39;;&#39;或&#39;,&#39;你可以使用引号(&#34;)来解决这个问题。
例如:
名称;数字//这些是标题
沙美; 14; 3; 2
当excel打开它时就像
一样Name | Numbers | |
Samed | 14 | 3 | 2
所以,像mysql一样,大多数东西都不能导入它,因为它超出了标题范围。
当你引用时,它没有看引号字符和Samed;&#34; 14; 3; 2;&#34;数据将如下所示:
名称;编号
沙美;&#34; 14; 3; 2&#34;
Name | Numbers |
Samed | 14;3;2 |
但是如果您的数据是代码并包含引号(&#34;)字符(我的),您可以通过输入
更改您的分隔符月= $
名称$编号
沙美$ 14#34; 3; 2
它将给出结果
Name | Numbers |
Samed | 14";3;2 |
请记住,在mysql导入向导中,它不会显示类似&#34; $&#34;用作分隔符。
为此你可以使用sql查询:
LOAD DATA LOCAL INFILE 'C:\test.csv'
INTO TABLE test.testColumns
TERMINATED BY '$'
LINES TERMINATED BY '\n'
它会正常工作