作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一列数据,从 Google Sheets
输出为 CSV
,也从 LibreOffice
输出为 CSV
也是如此。我尝试使用 OpenCSV
编码这两个文件,但只获得一小部分可用数据。
如何读取该文件?我在这个 CSV
文件中确实没有看到任何逗号...但它只是一列数据。
文件:
thufir@dur:~/jaxb$
thufir@dur:~/jaxb$ head input.csv
Field 1
Foo # 16
bar
baz
fdkfdl
fdsfdsfsdfgh
thufir@dur:~/jaxb$
输出:
thufir@dur:~/NetBeansProjects/BaseXFromJAXB$
thufir@dur:~/NetBeansProjects/BaseXFromJAXB$ gradle run
> Task :run
Jan 10, 2019 3:36:08 PM net.bounceme.dur.basexfromjaxb.csv.ReaderForCVS printMap
INFO: Foo # 16
Jan 10, 2019 3:36:08 PM net.bounceme.dur.basexfromjaxb.csv.ReaderForCVS printMap
INFO: Field 1
Jan 10, 2019 3:36:08 PM net.bounceme.dur.basexfromjaxb.csv.ReaderForCVS printMap
INFO: Foo # 16
BUILD SUCCESSFUL in 1s
3 actionable tasks: 1 executed, 2 up-to-date
thufir@dur:~/NetBeansProjects/BaseXFromJAXB$
代码:
package net.bounceme.dur.basexfromjaxb.csv;
import com.opencsv.CSVReaderHeaderAware;
import java.io.File;
import java.io.FileReader;
import java.net.URI;
import java.util.Collection;
import java.util.Map;
import java.util.logging.Logger;
public class ReaderForCVS {
private static final Logger LOG = Logger.getLogger(ReaderForCVS.class.getName());
private Map<String, String> values;
public ReaderForCVS() {
}
public void unmarshal(URI inputURI) throws Exception {
FileReader f = new FileReader(new File(inputURI));
values = new CSVReaderHeaderAware(f).readMap();
}
public void printMap() {
Collection<String> stringValues = values.values();
for (String s : stringValues) {
LOG.info(s);
}
for (Map.Entry<String, String> item : values.entrySet()) {
String key = item.getKey();
String value = item.getValue();
LOG.info(key);
LOG.info(value);
}
}
}
坦率地说,我无法判断库是否以一种奇怪的方式读取文件,或者文件是否以某种方式被破坏,或者是什么。我将从网站上查找 CSV
,但不确定它所建立的内容。我不认为该库无法正确解析,但我也看不到此数据的问题。
将电子表格中的数据导出为 CSV
的方法只有这么多,我已经尝试了几种。文件的内容并不重要,但这种结构:没有内容的行,只有一列,特殊字符,就是我正在处理的。
阅读 file as text给出所需的输出...
最佳答案
看起来它的工作原理与其他 CSVReader 类似 OpenCSV Guide Reading 。这是我使用的一些示例代码,它似乎有效:
CSVReaderHeaderAware csvReaderHeaderAware= new CSVReaderHeaderAware(new StringReader(DAOConstants.IND_DATA));
while (((values = (Map<String, String>) csvReaderHeaderAware.readMap())) != null)
{
for (Map.Entry<String,String> entry : values.entrySet())
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
关于java - 遍历 OpenCSV 生成的 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54138568/
我是一名优秀的程序员,十分优秀!