想知道如何将csv文件加载到java中并打印出结果。到目前为止,我无法打印出整个csv表。工作表包含空格,看起来像这样:标题:
Sales num, Account num, Date, Delivery, Codes
Sales 1, 2345 , May17, Oct318, 3345
4435
2234
Sales 2, 3345, May 18, Oct318, 4456
每次销售都有多个代码,但所有其他信息(帐号,数据,交付)只有一个。在代码之后第二次销售,因此在销售1和销售2之间有很多空白区域。
我找到了这个代码,但它只打印前两个单词。
public static void main(String[] args) throws IOException{
try {
ArrayList < String > ar = new ArrayList < String > ();
File csvFile = new File("C:\\Users\\AZ0000\\Documents\\Book1.csv\\");
BufferedReader br = new BufferedReader(new FileReader(csvFile));
String line = "";
StringTokenizer st = null;
int lineNumber = 0;
int tokenNumber = 0;
while ((line = br.readLine()) != null) {
String[] arr = line.split(",");
for (int i = 0; i < arr.length; i++) {
//System.out.println(arr[0]+" " + arr[1] + arr); // h
}
lineNumber++;
//use comma as token separator
}
} catch (IOException ex) {
ex.printStackTrace();
}
我最终需要从csv中取出数据并将其导入文本文件中的某些行。
答案 0 :(得分:1)
不确定为什么空格会成为一个问题,但请看一下jSefa。
它允许您将对象序列化为CSV。
@CsvDataType()
public class Person {
@CsvField(pos = 1)
String name;
@CsvField(pos = 2, format = "dd.MM.yyyy")
Date birthDate;
}
答案 1 :(得分:1)
您应该使用正确的解析器,因为它更可靠。
univocity-parsers默认删除任何不需要的空格,比使用line.split(",");
更快,并且会处理字段中的引号,行结尾和分隔符等内容。
试试这段代码:
CsvParserSettings settings = new CsvParserSettings();
settings.detectFormatAutomatically();
CsvParser parser = new CsvParser(settings);
List<String[]> allRows = parser.parseAll(new File("C:\\Users\\AZ0000\\Documents\\Book1.csv"));
希望它有所帮助。
免责声明:我是这个图书馆的作者。它是开源和免费的(Apache 2.0许可证)
答案 2 :(得分:0)
如果格式看起来像你的pase,那么它根本就不是csv ... 正确的格式应该像
Sales num, Account num, Date, Delivery, Codes
Sales 1, 2345 , May17, Oct318, 3345
Sales 1, 2345 , May17, Oct318, 4435
Sales 1, 2345 , May17, Oct318, 2234
Sales 2, 3345, May 18, Oct318, 4456
或使用其他分隔符在一列中分割多个值,例如
Sales num, Account num, Date, Delivery, Codes
Sales 1, 2345 , May17, Oct318, 3345;4435;2234
Sales 2, 3345, May 18, Oct318, 4456
从我的观点来看,最好的方法是使文件像
Sales num,Account num,Date,Delivery,Codes
Sales 1,2345,May 17,Oct318,3345;4435;2234
Sales 2,3345,May 18,Oct318,4456
然后只需阅读行,按逗号,
拆分,最后一列按;
拆分