使用Apache POI导入CSV数据

时间:2009-04-06 14:59:51

标签: java excel csv apache-poi

如何使用Apache POI高效导入CSV数据?如果我有一个非常大的CSV文件,我想存储在我的Excel电子表格中,那么我不认为逐个单元格是最好的导入方式......?

4 个答案:

答案 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>