如何使用Java基于CSV文件创buildExcel文件?

我有一个要求是基于使用Java的CSV文件创build一个XLS文件。

请告诉我哪个API最好创buildexcel文件。

谢谢

我build议你使用Apache POI框架 (特别是HSSF / XSSF API )来写出XLS文件。

为了阅读一个CSV文件,我build议你使用OpenCSV,因为它会照顾到你逃脱的字符等。

把来自这里的POI例子和来自这里的OpenCSV例子放在一起给你:

import java.io.*; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import au.com.bytecode.opencsv.CSVReader; class Test { public static void main(String[] args) throws IOException { Workbook wb = new HSSFWorkbook(); CreationHelper helper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("new sheet"); CSVReader reader = new CSVReader(new FileReader("data.csv")); String[] line; int r = 0; while ((line = reader.readNext()) != null) { Row row = sheet.createRow((short) r++); for (int i = 0; i < line.length; i++) row.createCell(i) .setCellValue(helper.createRichTextString(line[i])); } // Write the output to a file FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); } } 

在这里输入图像说明在这里输入图像说明

Apache POI是一个可以处理各种Microsoft Office文档的库,包括MS Excel。 您可以使用简单的java代码读取csv文件的内容,并使用该库创build并保存MS Excel文档。

有很多检查

http://jexcelapi.sourceforge.net/

你会得到很多的select。 只是谷歌。

您可以尝试Aspose.Cells for Java 。 您可以使用此组件打开CSV文件并使用Java 将其另存为XLS文件 。 它还可以帮助您使用不同的Excel文件版本。

披露:我在Aspose担任开发者传道人。

使用Groovy,我会这样做:

 // groovy to generate large csv file def GROOVY_HOME = new File( System.getenv('GROOVY_HOME') ) if ( !GROOVY_HOME.canRead() ) { println( "Missing environment variable GROOVY_HOME: '${GROOVY_HOME}'" ) System.exit(0) } File file = new File("csv.csv") if ( file.exists() ) { assert file.delete() assert file.createNewFile() } boolean append = true FileWriter fileWriter = new FileWriter(file, append) BufferedWriter buffWriter = new BufferedWriter(fileWriter) buffWriter.write "sdiType=ReferenceValue,,,\n" buffWriter.write "ListName,ListStartDate,Value,ValueStartDate\n" println( "Writing to file 'csv.csv'" ) def y = 5000 while ( y-- > 0 ) { buffWriter.write "test" + y + ",1/1/2001,2008,1/1/2001\n" } buffWriter.flush() buffWriter.close()