[Java] POI使用方法记录

1 篇文章 0 订阅

合并单元格操作

//创建合并单元格  ---begin
          CellRangeAddress region = new CellRangeAddress(0, 0, 1, 3);// 下标从0开始 起始行号,终止行号, 起始列号,终止列号
          CellRangeAddress region2 = new CellRangeAddress(1, 2, 0, 0);// 起始行号,终止行号, 起始列号,终止列号
          CellRangeAddress region3 = new CellRangeAddress(1, 1, 1, 3);// 起始行号,终止行号, 起始列号,终止列号
          //在sheet里增加合并单元格  
          createSheet.addMergedRegion(region);
          createSheet.addMergedRegion(region2);
          createSheet.addMergedRegion(region3);

冻结窗格操作

// 设置上面四行冻结
         createSheet.createFreezePane( 0, 4, 1, 4); 
// 前两个参数是你要用来拆分的列数和行数。
//后两个参数是下面窗口的可见象限,
//其中第三个参数是右边区域可见的左边列数,第四个参数是下面区域可见的首行

poi使用大全

https://blog.csdn.net/qq_21137441/article/details/79226171

文本强制换行 

//前提:要设置自动换行
style.setWrapText(true);
//使用"\r\n"换行
cell.setCellValue("test1\r\n test2");

单元格合并后添加边框不完整问题

原因是有的单元格可能是null,null的单元格无法添加框线

解决办法:把为null的单元格都赋空值,再添加框线即可

HSSFClientAnchor 参数说明 

https://www.cnblogs.com/1175429393wljblog/p/9809868.html 

POI添加文本框操作

https://www.jianshu.com/p/d42b7a0ba501

关于TextBox的更详细介绍

https://blog.csdn.net/lipinganq/article/details/72718078

 POI颜色对照表 

https://blog.csdn.net/for_china2012/article/details/29844661

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java POI和MultivaluedMap实现表格数据的比对,可以按照以下步骤进行: 1. 使用POI读取两个Excel表格,将数据分别存储在两个List中。 2. 使用MultivaluedMap将List中的数据以键值对的形式存储,其中键为表格中的主键,值为该行数据的Map。 3. 遍历第一个List中的数据,逐条比对其在第二个List中是否存在相同主键的数据,如果存在,则比对其它字段是否相同。 4. 如果存在不同的字段,则将其记录下来,并将其添加到新的List中。 以下是示例代码: ``` // 读取Excel表格 Workbook workbook1 = WorkbookFactory.create(new File("first.xlsx")); Workbook workbook2 = WorkbookFactory.create(new File("second.xlsx")); // 读取表格中的数据 List<Map<String, Object>> list1 = new ArrayList<>(); List<Map<String, Object>> list2 = new ArrayList<>(); Sheet sheet1 = workbook1.getSheetAt(0); Sheet sheet2 = workbook2.getSheetAt(0); for (Row row : sheet1) { Map<String, Object> map = new HashMap<>(); map.put("id", row.getCell(0)); map.put("name", row.getCell(1)); map.put("age", row.getCell(2)); list1.add(map); } for (Row row : sheet2) { Map<String, Object> map = new HashMap<>(); map.put("id", row.getCell(0)); map.put("name", row.getCell(1)); map.put("age", row.getCell(2)); list2.add(map); } // 将数据存储到MultivaluedMap中 MultivaluedMap<String, Map<String, Object>> map1 = new ArrayListValuedHashMap<>(); MultivaluedMap<String, Map<String, Object>> map2 = new ArrayListValuedHashMap<>(); for (Map<String, Object> map : list1) { map1.put(map.get("id"), map); } for (Map<String, Object> map : list2) { map2.put(map.get("id"), map); } // 比对数据 List<Map<String, Object>> diffList = new ArrayList<>(); for (Map.Entry<String, List<Map<String, Object>>> entry : map1.entrySet()) { String key = entry.getKey(); List<Map<String, Object>> value1 = entry.getValue(); List<Map<String, Object>> value2 = map2.get(key); if (value2 != null) { for (Map<String, Object> map1 : value1) { for (Map<String, Object> map2 : value2) { if (!map1.equals(map2)) { Map<String, Object> diffMap = new HashMap<>(); diffMap.put("id", key); diffMap.put("fieldName", "name"); diffMap.put("value1", map1.get("name")); diffMap.put("value2", map2.get("name")); diffList.add(diffMap); } } } } } // 输出结果 for (Map<String, Object> map : diffList) { System.out.println(map); } ``` 注意:以上代码仅为示例,实际应用中还需要进行数据类型转换、异常处理等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值