---
title: Java使用JavaCSV把CSV流转成Apache POI的EXCEL格式
date: 2018-08-13 14:19:14
description: Java使用JavaCSV把CSV流转成Apache POI的EXCEL格式,可用于文件格式互转和一些其他处理
categories: [技术总结]
tags: [Java, JavaCSV, Apache, POI, Excel]
---
## 需求
> 由于Apache POI不支持CSV格式的文件读取,所以需要在Java程序中手动转一下格式
### Maven依赖
Apache POI:
```xml
3.9
3.9
org.apache.poi
poi
${poi.version}
org.apache.poi
poi-ooxml
${poi-ooxml.version}
```
JavaCSV:
```xml
net.sourceforge.javacsv
javacsv
2.0
```
### 转换方法
```java
/**
* csv格式的流转成xls格式的workbook
*/
public static Workbook getWorkbookByCsv(InputStream inputStream) throws IOException {
ArrayList dataList = new ArrayList<>();
// 文件的编码,这里设为GB2312
CsvReader reader = new CsvReader(inputStream, ',', Charset.forName("GB2312"));
while (reader.readRecord()) {
dataList.add(reader.getValues());
}
reader.close();
HSSFWorkbook result = new HSSFWorkbook();
HSSFSheet sheet = result.createSheet("new sheet");
for (int rowNum = 0; rowNum < dataList.size(); rowNum++) {
String[] data = dataList.get(rowNum);
HSSFRow row = sheet.createRow(rowNum);
for (int columnNum = 0; columnNum < data.length; columnNum++) {
HSSFCell cell = row.createCell(columnNum);
cell.setCellValue(data[columnNum]);
}
}
return result;
}
```
- **注意:** 不同的CSV文件编码不同,如果乱码可以改上边的编码