You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Java程序控制台输出内容写入Excel文件

实现方案

我们可以用Apache POI库完成Excel写入操作,以下是具体实现步骤:

第一步:引入依赖

如果使用Maven管理项目,在pom.xml中加入以下依赖:

<dependencies>
    <!-- 操作xls格式Excel -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <!-- 操作xlsx格式Excel -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
</dependencies>

第二步:修改原有代码

替换原有控制台输出逻辑为Excel写入逻辑,完整代码如下:

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class WriteDiffToExcel {
    public static void main(String[] args) throws Exception {
        // 原有的读取两个Excel的逻辑不变
        readDocSourceFile objDocSourceExcel = new readDocSourceFile();
        HashMap<String, List<String>> docSource = objDocSourceExcel.getDocSource();
        Set<String> keys = docSource.keySet();
        Iterator<String> itr = keys.iterator();

        readMetadataFile objMetaSourceExcel = new readMetadataFile();
        HashMap<String, List<String>> metaSource = objMetaSourceExcel.getMetaSource();  

        // 新增:创建Excel工作簿和工作表
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("差异数据");
        // 行号计数器,从0开始
        int rowNum = 0;

        while (itr.hasNext()) 
        {
            String key = itr.next();

            if (metaSource.containsKey(key)) 
            {
                List<String> docSourceData = docSource.get(key);
                List<String> metaData = metaSource.get(key);
                // 计算差集:来源文件有、元数据文件没有的内容
                docSourceData.removeAll(metaData);

                // 新增:创建当前行,第一个单元格放文档ID
                Row row = sheet.createRow(rowNum++);
                row.createCell(0).setCellValue(key);
                // 后续单元格依次放差集内容
                for (int m = 0; m < docSourceData.size(); m++) {
                    row.createCell(m+1).setCellValue(docSourceData.get(m));
                }
            }
        } // end while loop

        // 写出到文件
        FileOutputStream fileOut = new FileOutputStream("输出结果.xlsx");
        workbook.write(fileOut);
        // 关闭资源
        workbook.close();
        fileOut.close();
    }
}

相关说明

  • 输出的Excel文件默认保存在项目根目录下,名称为输出结果.xlsx,你可以自行修改文件路径和名称
  • 代码默认生成xlsx格式的Excel,如果需要生成xls格式,把XSSFWorkbook替换为HSSFWorkbook即可
  • 每个文档ID对应一行,行首是文档ID,后续单元格依次存放对应差异内容,完全符合要求的格式

内容的提问来源于stack exchange,提问作者archita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:27:02