如何将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
相关产品推荐
相关产品推荐

