没有指定标题映射,logging值不能被名称访问(Apache Commons CSV)
当我试图读取一个csv时,我得到了这个错误信息:
Exception in thread "main" java.lang.IllegalStateException: No header mapping was specified, the record values can't be accessed by name at org.apache.commons.csv.CSVRecord.get(CSVRecord.java:99) at mockdata.MockData.main(MockData.java:33)
Java结果:1
我正在使用Apache Commons CSV库1.1。 试图用Googlesearch错误信息,我得到的唯一东西是在像grepcode这样的网站上列出的代码。
这是我的代码:
package mockdata; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVRecord; public class MockData { /** * @param args the command line arguments */ public static void main(String[] args) throws FileNotFoundException, IOException { Reader in = new InputStreamReader(MockData.class.getClassLoader() .getResourceAsStream("MOCK_DATA.csv"), "UTF-8"); Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in); for (CSVRecord record : records) { String lastName = record.get("last_name"); String firstName = record.get("first_name"); System.out.println("firstName: " + firstName + " lastName: " + lastName); } } }
CSV的内容:
first_name,last_name,address1,city,state,zip,country,phone,email Robin,Lee,668 Kinsman Road,Hagerstown,TX,94913,United States,5-(078)623-0713,rlee0@e-recht24.de Bobby,Moreno,68 Dorton Avenue,Reno,AZ,79934,United States,5-(080)410-6743,bmoreno1@ihg.com Eugene,Alexander,3 Bunker Hill Court,Newark,MS,30066,United States,5-(822)147-6867,ealexander2@gmpg.org Katherine,Crawford,3557 Caliangt Avenue,New Orleans,OR,23289,United States,2-(686)178-7222,kcrawford3@symantec.com
它位于我的src文件夹中。
调用withHeader()为默认的Excel CSV格式对我有用:
CSVFormat.EXCEL.withHeader().parse(in);
文档中的示例不是很清楚,但您可以在这里find它: 安全引用列:如果源包含头logging,则可以使用withHeader(String …)简化代码并安全地引用列参数:CSVFormat.EXCEL.withHeader();