如何使用Apache POI高效导入CSV数据?如果我有一个非常大的CSV文件,我想存储在我的Excel电子表格中,那么我不认为逐个单元格是最好的导入方式......?
答案 0 :(得分:16)
Apache POI从未设计为调用CSV文件。虽然可以在Excel中打开CSV文件,但Excel有自己的读取器可以自动导入。这假设您的CSV具有.csv而不是.txt后缀。如果它具有.txt后缀,请将其另存为.csv。您只需右键单击CSV并使用Excel打开即可。在Presto中,CSV已导入Excel。
我假设您要将txt文件中的数据解析为Excel文件。如果是这种情况,我建议您使用图书馆li SuperCSV,而不是试图让POI做一些从未设计过的事情。当它解析数据时,它会将它全部加载到您选择的Bean,Map或List中,然后您可以以您选择的格式将其写回.csv文件或使用JDBC-ODBC Bridge或Apache POI来编写它直接进入和.XLS格式。添加一个额外的步骤,但您可以完全控制数据。
SuperCSV带有Apache2许可证,因此它应该适合您选择使用它。
或者只是在java中使用.split()函数并将CSV解析为数组并使用POI将数组加载到.xls中。
答案 1 :(得分:1)
向Excel电子表格添加信息的最有效方法是使用数组。这段代码:
Sheets(1).Range("A1").Resize(uBound(myArray),uBound(myArray,2)).Value = myArray
从二维数组中填充工作表范围,其中下限为1.
在您的情况下,我会首先将CSV文件读入数组,然后使用上述语法将其放在工作表上。
斯坦·斯科特答案 2 :(得分:0)
将apache commons-csv用于CSV文件。使用以下依赖项
更新您的pom.xml<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
你可以从 - click here
找到有用的好的exaples答案 3 :(得分:0)
我们根据文件扩展名编写Java代码。在这里,我们正在处理.csv扩展名,这是用于处理它的Apache POI代码。我们将内容拆分并存储在Array中,然后在一行中使用它。
CSVParser parser = new CSVParser(new FileReader("D:/your_file.csv"), CSVFormat.DEFAULT);
List<CSVRecord> list = parser.getRecords();
for (CSVRecord record : list) {
String[] arr = new String[record.size()];
int i = 0;
for (String str : rec) {
arr[i++] = str;
}
}
parser.close();
相关的Maven依赖关系:
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.2</version>
</dependency>