如何使用Java创建基于CSV文件的Excel文件?

如何使用Java创建基于CSV文件的Excel文件?,java,excel,csv,Java,Excel,Csv,我需要使用Java在CSV文件的基础上创建XLS文件 请支持我哪种API最适合创建excel文件 谢谢我建议您使用(特别是)来写出XLS文件 对于阅读CSV文件,我建议您使用,因为它将为您处理转义字符等 将中的POI示例和中的OpenCSV示例放在一起,可以得出以下结论: import java.io.*; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import

我需要使用Java在CSV文件的基础上创建XLS文件

请支持我哪种API最适合创建excel文件

谢谢

我建议您使用(特别是)来写出XLS文件

对于阅读CSV文件,我建议您使用,因为它将为您处理转义字符等

将中的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();
    }
}
import java.io.*;
导入org.apache.poi.hssf.usermodel.HSSFWorkbook;
导入org.apache.poi.ss.usermodel.*;
导入au.com.bytecode.opencsv.CSVReader;
课堂测试{
公共静态void main(字符串[]args)引发IOException{
工作簿wb=新的HSSF工作簿();
CreationHelper=wb.getCreationHelper();
工作表=wb.createSheet(“新工作表”);
CSVReader reader=新的CSVReader(新的文件阅读器(“data.csv”);
字符串[]行;
int r=0;
而((line=reader.readNext())!=null){
Row-Row=sheet.createRow((短)r++);
对于(int i=0;i
有很多支票

你会有很多选择。只有谷歌

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

您可以尝试。您可以使用该组件来访问和使用Java。它还可以帮助您使用不同的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()

当你的csv超过10万行时,这将是非常慢的方法