Java CSV转换Excel工具类

在日常的开发工作中,我们经常需要处理CSV(逗号分隔值)格式的数据。而CSV格式的数据在Excel中不太容易查看和操作,因此我们需要将CSV数据转换为Excel格式。本文将介绍如何使用Java编写一个CSV转换Excel的工具类,并提供代码示例供参考。

CSV文件格式

CSV文件是一种简单的文本文件格式,用逗号(或其他字符)将不同的字段分隔开。每一行代表一条记录,每个字段代表记录中的一个属性。以下是一个简单的CSV文件示例:

Name,Age,Gender
John,25,Male
Mary,30,Female

需求分析

我们需要实现一个工具类,该类能够读取CSV文件,并将其内容转换为Excel文件。具体需求如下:

  1. 工具类需要提供一个方法,用于将指定的CSV文件转换为Excel文件。
  2. 转换后的Excel文件应包含与CSV文件相同的字段和记录。
  3. 工具类需要处理CSV文件中的特殊字符,如逗号、引号等。

解决方案

为了实现上述需求,我们可以使用第三方库Apache POI来处理Excel文件,以及OpenCSV来处理CSV文件。下面是一个使用Java编写的CSV转换Excel的工具类示例:

import com.opencsv.CSVReader;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileReader;
import java.io.FileOutputStream;
import java.io.IOException;

public class CsvToExcelConverter {

    public static void convert(String csvFilePath, String excelFilePath) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        CSVReader csvReader = new CSVReader(new FileReader(csvFilePath));
        String[] record;
        int rowIndex = 0;
        while ((record = csvReader.readNext()) != null) {
            Row row = sheet.createRow(rowIndex++);
            for (int i = 0; i < record.length; i++) {
                Cell cell = row.createCell(i);
                cell.setCellValue(record[i]);
            }
        }

        FileOutputStream fileOut = new FileOutputStream(excelFilePath);
        workbook.write(fileOut);
        workbook.close();
        fileOut.close();
    }

    public static void main(String[] args) {
        try {
            convert("input.csv", "output.xlsx");
            System.out.println("Conversion completed successfully.");
        } catch (IOException e) {
            System.out.println("Error occurred during conversion: " + e.getMessage());
        }
    }
}

上述代码中,我们使用了Apache POI库来处理Excel文件,以及OpenCSV库来处理CSV文件。在convert方法中,我们首先创建一个新的Workbook对象和一个新的Sheet对象。然后,我们使用CSVReader读取CSV文件的内容,并将其逐行转换为Excel文件的记录。最后,我们将转换后的Excel文件保存到指定路径。

main方法中,我们调用convert方法将input.csv转换为output.xlsx

序列图

以下是一个使用Mermaid语法绘制的序列图,展示了CSV转换Excel的过程:

sequenceDiagram
    participant User
    participant CsvToExcelConverter
    participant CSVFile
    participant ExcelFile

    User->>CsvToExcelConverter: convert("input.csv", "output.xlsx")
    CsvToExcelConverter->>CSVFile: Read CSV file
    CsvToExcelConverter->>ExcelFile: Create new Excel file
    loop for each record
        CsvToExcelConverter->>CSVFile: Read next record
        CsvToExcelConverter->>ExcelFile: Write record to Excel file
    end
    CsvToExcelConverter->>ExcelFile: Save Excel file
    CsvToExcelConverter->>User: Conversion completed successfully.

总结

本文介绍了如何使用Java编写一个CSV转换Excel的工具类。我们使用了Apache POI库来处理Excel文件,以及OpenCSV库来处理CSV文件。通过将CSV文件转换为Excel文件,我们可以更方便地查看和操作数据。希望本文能对你在日常的开发工作中有所帮助。