📜  在java中将excel转换为csv(1)

📅  最后修改于: 2023-12-03 15:23:24.346000             🧑  作者: Mango

在Java中将Excel转换为CSV

在Java中将Excel文件转换为CSV格式文件的处理,目的往往是实现不同平台间数据格式的转换。本文将介绍如何使用Apache POI库来读取Excel文件,并将Excel文件中的数据转换为CSV格式文件。

什么是CSV文件?

CSV(Comma-Separated Values) 文件是一种常见的、简单、类似于Excel表格的文件格式。CSV文件中的每一行代表一条记录,每条记录中的各个字段之间可以用逗号(,)或其他指定的分隔符隔开,以实现各个系统之间的数据交互。

如下示例是一个CSV文件的样式:

Name, Gender, Age
Tom, Male, 25
Lucy, Female, 28
如何使用Apache POI库

Apache POI 是一个用于读写Microsoft Office格式文档的开源Java库。在本文中,我们需要使用poi-ooxml库,该库提供了读取Microsoft Office格式文件(xlsx,docx,pptx)的解析器。

添加maven依赖

首先,在Maven中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.0</version>
</dependency>
读取Excel文件

使用Apache POI的方式就是首先实例化工作薄Workbook,然后获取工作表Sheet,最后读取单元格的数据。

try (FileInputStream inputStream = new FileInputStream(new File("path/to/excel/file"))) {
    Workbook workbook = new XSSFWorkbook(inputStream);
    Sheet sheet = workbook.getSheetAt(0);
    for (Row row : sheet) {
        for (Cell cell : row) {
            String value = cell.getStringCellValue();
            // Do something with the value
        }
    }
}
将数据写入CSV文件

CSV格式文件中的数据需要被格式化,并且字段之间需要添加指定的分隔符。我们可以使用Java中的StringBuilder类来辅助生成CSV格式的字符串,然后将其写入到文件中。

try (FileOutputStream outputStream = new FileOutputStream(new File("path/to/csv/file"));
     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream))) {
    Workbook workbook = new XSSFWorkbook(new File("path/to/excel/file"));
    Sheet sheet = workbook.getSheetAt(0);
    for (Row row : sheet) {
        StringBuilder sb = new StringBuilder();
        for (Cell cell : row) {
            String value = cell.getStringCellValue();
            sb.append(value).append(",");
        }
        sb.deleteCharAt(sb.length() - 1);
        writer.write(sb.toString());
        writer.newLine();
    }
}
完整代码
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;

public class ExcelToCsv {

    public static void main(String[] args) throws IOException {
        try (FileInputStream inputStream = new FileInputStream(new File("path/to/excel/file"));
             FileOutputStream outputStream = new FileOutputStream(new File("path/to/csv/file"));
             BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream))) {
            Workbook workbook = new XSSFWorkbook(inputStream);
            Sheet sheet = workbook.getSheetAt(0);
            for (Row row : sheet) {
                StringBuilder sb = new StringBuilder();
                for (Cell cell : row) {
                    String value = cell.getStringCellValue();
                    sb.append(value).append(",");
                }
                sb.deleteCharAt(sb.length() - 1);
                writer.write(sb.toString());
                writer.newLine();
            }
        }
    }
}
总结

本文介绍了如何使用Apache POI库来读取Excel文件,并将数据转换为CSV格式文件。

具体来说,我们需要首先添加maven依赖,然后使用XSSFWorkbook解析器读取Excel数据,将其格式化为CSV格式字符串并写入到文件中。

如果您遇到了Excel文件的编码问题,请使用InputStreamReader指定编码格式来读取文件。