--- 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文件编码不同,如果乱码可以改上边的编码