将CSV文件转换为XLSX格式的Java实现

引言

在现代数据处理和分析中,CSV(Comma-Separated Values)和XLSX(Excel Spreadsheet)格式被广泛使用。CSV文件因其简单易读、多平台兼容性而受到青睐,而XLSX文件则因其强大的格式化和数据处理能力而在办公环境中更常见。本文将探讨如何使用Java将CSV文件转换为XLSX格式,并提供详细的代码示例。

1. 技术准备

在开始之前,请确保您已安装以下软件和库:

  • JDK 8或更高版本
  • Maven(一个构建工具,便于依赖管理)
  • Apache POI库(用于处理Excel文件)

您可以在项目的pom.xml文件中添加Apache POI的依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>

2. CSV文件读取

我们首先实现一个简单的方法来读取CSV文件。我们将使用Java内置的BufferedReader类来逐行读取CSV文件内容。以下是具体的示例代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class CsvReader {

    public List<String[]> readCsv(String filePath) {
        List<String[]> data = new ArrayList<>();
        String line;
        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            while ((line = br.readLine()) != null) {
                // 使用逗号分割每一行
                String[] values = line.split(",");
                data.add(values);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return data;
    }
}

3. 将数据写入XLSX文件

接下来,我们将使用Apache POI库将读取的CSV数据写入到XLSX文件中。这是使用POI库写入XLSX文件的基本示例代码:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public class XlsxWriter {

    public void writeXlsx(String filePath, List<String[]> data) {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Data");

        for (int i = 0; i < data.size(); i++) {
            Row row = sheet.createRow(i);
            String[] values = data.get(i);
            for (int j = 0; j < values.length; j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue(values[j]);
            }
        }
        
        // 将数据写入XLSX文件
        try (FileOutputStream fileOut = new FileOutputStream(filePath)) {
            workbook.write(fileOut);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

4. 综合实现

现在,我们可以将CSV读取和XLSX写入过程组合到一个完整的程序中。以下是综合这些功能的示例代码:

public class CsvToXlsxConverter {

    public static void main(String[] args) {
        CsvReader csvReader = new CsvReader();
        XlsxWriter xlsxWriter = new XlsxWriter();

        String inputCsv = "input.csv";  // 输入CSV文件路径
        String outputXlsx = "output.xlsx"; // 输出XLSX文件路径
        
        List<String[]> data = csvReader.readCsv(inputCsv);
        xlsxWriter.writeXlsx(outputXlsx, data);
        
        System.out.println("CSV文件已成功转换为XLSX格式!");
    }
}

5. 可视化展示数据

在完成数据转换后,我们可能希望对数据进行可视化展示。使用Mermaid语法,我们可以非常简单地创建饼状图以及旅行图。以下是一个示例。

饼状图展示

pie
    title 数据分布
    "A类": 30
    "B类": 20
    "C类": 50

旅行图展示

journey
    title 用户旅程图
    section 访问网页
      拜访主页: 5: 用户
      进入产品页: 4: 用户
    section 购买过程
      添加商品到购物车: 3: 用户
      付款: 2: 用户

结论

通过上述示例,我们展示了如何使用Java将CSV文件转换为XLSX格式。掌握这种技术不仅能帮助您更好地管理和分析数据,还能提升您的编程技能。借助Apache POI库,您可以轻松地处理Excel文档,进一步扩展项目的功能。如果您有其他需求,例如数据过滤、格式化或图表绘制等,Apache POI也可以做到。这为Java开发者提供了强大的工具来满足现代数据处理的多种需求。现在,您可以开始实现自己的CSV到XLSX转换器,提高工作效率!