1. RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb);
  2. RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb);
  3. RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb);
  4. RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb);
上面是加边框的核心代码,为单元格的上,下左,右四边加边框!我测试在单个合并单元格的时候,是没有什么问题的!但是当我用下面代码的时候会出现有的边框没有

  1. Row row=sheet.createRow((short)0);
  2. ImageUtil.createCell("排序", 0, sctext, row);
  3. CellRangeAddress CellRangeAddress1 = new CellRangeAddress(0,2,0,0);
  4. sheet.addMergedRegion(CellRangeAddress1);
  5. RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb);
  6. RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb);
  7. RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb);
  8. RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb);
  9. ImageUtil.createCell("项目名称", 1, sctext, row);
  10. CellRangeAddress CellRangeAddress2 = new CellRangeAddress(0,2,1,1);
  11. sheet.addMergedRegion(CellRangeAddress2);
  12. ImageUtil.createCell("姓名", 2, sctext, row);
  13. CellRangeAddress CellRangeAddress3 = new CellRangeAddress(0,2,2,2);
  14. sheet.addMergedRegion(CellRangeAddress3);
  15. ImageUtil.createCell("各指标完成情况总数据", 3, sctext, row);
  16. CellRangeAddress CellRangeAddress4 = new CellRangeAddress(0,0,3,8);
  17. sheet.addMergedRegion(new CellRangeAddress(0,0,3,8));
  18. ImageUtil.createCell("各指标完成率", 9, sctext, row);
  19. CellRangeAddress CellRangeAddress5 = new CellRangeAddress(0,0,9,14);
  20. sheet.addMergedRegion(CellRangeAddress5);
  21. Row row2=sheet.createRow((short)1);
  22. ImageUtil.createCell("覆盖面", 3, sctext, row2);
  23. CellRangeAddress CellRangeAddress6 = new CellRangeAddress(1,1,3,4);
  24. sheet.addMergedRegion(CellRangeAddress6);
  25. ImageUtil.createCell("频次", 5, sctext, row2);
  26. CellRangeAddress CellRangeAddress7 = new CellRangeAddress(1,1,5,6);
  27. sheet.addMergedRegion(CellRangeAddress7);

结果如下图:

最后是顺序问题导致的.其原因是因为在编辑单元格的时候,后者覆盖了前者的style.

解决办法:

封装了一个方法:

  1. public void setBorder(CellRangeAddress cellRangeAddress, Sheet sheet,
  2. Workbook wb) throws Exception {
  3. RegionUtil.setBorderLeft(1, cellRangeAddress, sheet, wb);
  4. RegionUtil.setBorderBottom(1, cellRangeAddress, sheet, wb);
  5. RegionUtil.setBorderRight(1, cellRangeAddress, sheet, wb);
  6. RegionUtil.setBorderTop(1, cellRangeAddress, sheet, wb);
  7. }

然后将调用该方法的步骤放到最后,记得是最后,就是全部单元格合并之后,否则会覆盖的,如下:

  1. super.setBorder(CellRangeAddress1, sheet, book);
  2. super.setBorder(CellRangeAddress2, sheet, book);
  3. super.setBorder(CellRangeAddress3, sheet, book);
  4. super.setBorder(CellRangeAddress4, sheet, book);
  5. super.setBorder(CellRangeAddress5, sheet, book);
  6. super.setBorder(CellRangeAddress6, sheet, book);
  7. super.setBorder(CellRangeAddress7, sheet, book);
  8. super.setBorder(CellRangeAddress8, sheet, book);
  9. super.setBorder(CellRangeAddress9, sheet, book);
  10. super.setBorder(CellRangeAddress10, sheet, book);
  11. super.setBorder(CellRangeAddress11, sheet, book);
  12. super.setBorder(CellRangeAddress12, sheet, book);
  13. super.setBorder(CellRangeAddress13, sheet, book);
  14. super.setBorder(CellRangeAddress14, sheet, book);
  15. super.setBorder(CellRangeAddress15, sheet, book);
  16. super.setBorder(CellRangeAddress16, sheet, book);

 

POI Excel表格合并,边框设置的更多相关文章

  1. Python将多个excel表格合并为一个表格

    Python将多个excel表格合并为一个表格 生活中经常会碰到多个excel表格汇总成一个表格的情况,比如你发放了一份表格让班级所有同学填写,而你负责将大家的结果合并成一个.诸如此类的问题有很多.除 ...

  2. asp.net数据导出到excel表格,并设置表格样式

    1.首先在项目中添加引用

  3. CSS开发技巧(二):表格合并边框后的单元格宽度计算

    前言: 分离边框模型和合并边框模型是表格的两种模型,它通过以下属性确定: border-collapse:separate(默认值) | collapse | inherit 当采用分离边框模型时,表 ...

  4. phpStudy6——php导出可以设置样式的excel表格

    前言: 一般的后台管理页面肯定少不了excel表格导出的功劳,尤其是那些电商平台的订单导入导出,用户列表的导入导出等,那么本文就介绍php是如何导出excel表格的. php导出excel方法有很多, ...

  5. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  6. 复杂的POI导出Excel表格(多行表头、合并单元格)

    poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...

  7. NPOI_winfrom导出Excel表格(一)(合并单元格、规定范围加外边框、存储路径弹框选择)

    1.导出 private void btn_print_Click(object sender, EventArgs e) { DataTable dtNew = new DataTable(); d ...

  8. 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法

    本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...

  9. Python快速设置Excel表格边框

    import xlwings as xw #打开存好的excel app = xw.App() #设置应用 wb = xw.Book("E:/Data/小蜜蜂超市销售报表.xlsx" ...

随机推荐

  1. 如何区分prometheus中Histogram和Summary类型的metrics?

    要理解它们的区别,关键还是告业务应用. 但如何在学习时,如何区分呢? 有以下几个维度: histogram有bucket,summary在quatile. summary分位数是客户端计算上报,his ...

  2. C++ 编程错误记录

    C3646 未知重写说明符 两个头文件相互引用造成的问题

  3. 2018年东北农业大学春季校赛 C-wyh的商机

    一天,你们wyh学长和你们zhl学长玩一个游戏,这个游戏规则是这样的 给你n个城市,保证这n个城市之间都只有一条道路可以到达. 有一件物品,在所有城市中都是一样的,但是由于各个城市的经济发展不同,导致 ...

  4. 【LeetCode】74. Search a 2D Matrix

    Difficulty:medium  More:[目录]LeetCode Java实现 Description Write an efficient algorithm that searches f ...

  5. Django 2.1版本与Django 1.8.3的一些区别(转)

    Django 2.1版本与Django 1.8.3的一些区别     我在刚开始学习的时候使用的Django版本是1.8.3的,后来在安装其它软件的时候,可能需要2.1的版本,自动帮我更新了Djang ...

  6. CF1010D Mars rover [位运算,DP]

    题目传送门 Mars Rover 格式难调,题面就不放了. 分析: 今天考试的时候考了这道题目的加强版,所以来做. 其实也并不难,我们建立好树形结构以后先把初始权值全部求出,然后就得到了根节点的初始值 ...

  7. com.jcraft.jsch.JSchException: Auth fail

    背景 服务器信息: 服务器A:10.102.110.1 服务器B:10.102.110.2 需要从服务器A通过Sftp传输文件到服务器B. 应用项目中有一个功能,要通个关Sftp进行日志文件的传输,在 ...

  8. Pwn入坑指南

    栈溢出原理 参考我之前发的一篇 Windows栈溢出原理 还有 brant 师傅的<0day安全笔记> Pwn常用工具 gdb:Linux下程序调试 PEDA:针对gdb的python漏洞 ...

  9. SQL语句之 数据约束

    SQL语句之 数据约束 什么是数据约束 数据约束用来限制用户对数据的非法的修改操作. 1.约束字段的默认值 如果插入记录时,没有给某个字段赋值,那么我们可以设置它的默认值 关键字:default CR ...

  10. Python学习——Python基本数据类型(一)

    python3 基本数据类型 Python3 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. Python3 中有6个标准的数据类型:Number(数字);字符串(St ...