如何使用Apache POI高效地导入CSV数据?如果我有一个非常大的CSV文件想要存储在我的Excel电子表格中,那么我不认为逐个单元格导入是最好的方法...?
发布于 2009-07-06 16:42:48
Apache POI从未设计为调用CSV文件。虽然可以在Excel中打开CSV文件,但Excel有自己的阅读器来执行自动导入。这是假设您的CSV具有.csv而不是.txt后缀。如果它有.txt后缀,将其另存为.csv.,然后您所要做的就是右键单击CSV并使用Excel打开。快,CSV已导入Excel。
我假设您想要将txt文件中的数据解析为Excel文件。如果是这样的话,我建议你使用像SuperCSV这样的库,而不是试图让POI去做一些它从来没有设计过的事情。它会在解析数据时将其全部加载到您选择的Bean、Map或List中,然后您可以将其以您选择的格式写回.csv文件,或者使用JDBC-ODBC Bridge或Apache POI将其直接写入.XLS格式。添加额外的步骤,但之后您可以完全控制数据。
SuperCSV带有Apache2许可证,因此它适用于您选择使用它做的任何事情。
或者使用Java语言中的split函数,将CSV解析成数组,然后使用POI将数组加载到.xls中。
发布于 2018-03-15 19:05:08
对CSV文件使用apache commons-csv。使用以下依赖项更新pom.xml
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>您可以在- click here中找到有用的示例
发布于 2018-07-27 14:07:58
我们根据文件扩展名编写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>https://stackoverflow.com/questions/721859
复制相似问题