请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

brmxj
金牌服务用户   /  发表于:2021-11-29 13:00  /   查看:2978  /  回复:10
1金币
本帖最后由 Lynn.Dou 于 2022-1-6 12:12 编辑

GcExcel 设置最右边单元格的边框后,右侧自动错误的新增了一列,但是实际不需要这列,请问如何处理这个问题?只是设置边框颜色,为啥会触发行列的新增,这是GcExcel的Bug吗?

设置边框前:
QQ图片20211129125507.png
设置边框后:
QQ图片20211129125659.png

示例ssjson文件如下:设置边框颜色前: tysbb_330000_V1.ssjson (41.05 KB, 下载次数: 109)

最佳答案

查看完整内容

你好,出现这个问题是因为右边框也属于L8的一部分,因此右侧会多出一列。如果把下面的代码删除,那么不会多出右边的一列。 另外,如果想要保留右侧边框且不多一列,可以用下面的代码,关键代码是序列化的option。

10 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-29 13:00:25
来自 2#
你好,出现这个问题是因为右边框也属于L8的一部分,因此右侧会多出一列。如果把下面的代码删除,那么不会多出右边的一列。
  1. cell.getBorders().get(BordersIndex.EdgeRight).setColor(Color.GetRed());
复制代码



另外,如果想要保留右侧边框且不多一列,可以用下面的代码,关键代码是序列化的option。
  1.       workbook.open("tysbb_330000_V1.ssjson");
  2.         IWorksheet worksheet = workbook.getActiveSheet();
  3.         IRange cell = worksheet.getRange("K8");
  4.         cell.getBorders().get(BordersIndex.EdgeRight).setColor(Color.GetRed());
  5.         cell.getBorders().get(BordersIndex.EdgeBottom).setColor(Color.GetRed());

  6.         SerializationOptions options = new SerializationOptions();
  7.         options.setIgnoreRangeOutOfRowColumnCount(true);

  8.         FileOutputStream outputStream = new FileOutputStream(new File("2.ssjson"));
  9.         workbook.toJson(outputStream,options);
  10.         outputStream.flush();
  11.         outputStream.close();
复制代码

image.png439559935.png
回复 使用道具 举报
brmxj
金牌服务用户   /  发表于:2021-12-1 09:31:22
3#
Derrick.Jiao 发表于 2021-11-29 13:44
你好,出现这个问题是因为右边框也属于L8的一部分,因此右侧会多出一列。如果把下面的代码删除,那么不会多 ...

按这种方法改动后,有效
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-1 09:41:50
4#
brmxj 发表于 2021-12-1 09:31
按这种方法改动后,有效

那这边就结贴了哈,有新问题欢迎开新帖交流~
回复 使用道具 举报
李生智
金牌服务用户   /  发表于:2021-12-1 10:15:52
5#
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-1 10:21:44
6#
回复 使用道具 举报
brmxj
金牌服务用户   /  发表于:2021-12-1 20:48:23
7#

这个问题没有解决,使用这个属性后,导致新增的行也被删除了
回复 使用道具 举报
brmxj
金牌服务用户   /  发表于:2021-12-1 20:49:59
8#
Derrick.Jiao 发表于 2021-12-1 09:41
那这边就结贴了哈,有新问题欢迎开新帖交流~

这个问题没有解决,使用这个属性后,导致新增的行也被删除了,我们想要的效果是只删除因设置边框多出来的列,不是行
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-2 09:11:55
9#
brmxj 发表于 2021-12-1 20:49
这个问题没有解决,使用这个属性后,导致新增的行也被删除了,我们想要的效果是只删除因设置边框多出来的 ...

如果像这种情况就需要指定一下行数例如
  1. Workbook workbook = new Workbook();
  2.         workbook.open("tysbb_330000_V1.ssjson");
  3.         IWorksheet worksheet = workbook.getActiveSheet();
  4.         IRange cell = worksheet.getRange("K8");
  5.         cell.getBorders().get(BordersIndex.EdgeRight).setColor(Color.GetRed());
  6.         cell.getBorders().get(BordersIndex.EdgeBottom).setColor(Color.GetRed());
  7.         worksheet.getRange("9:9").insert();
  8.         worksheet.setRowCount(9);

  9.         SerializationOptions options = new SerializationOptions();
  10.         options.setIgnoreRangeOutOfRowColumnCount(true);

  11.         FileOutputStream outputStream = new FileOutputStream(new File("2.ssjson"));
  12.         workbook.toJson(outputStream,options);
  13.         outputStream.flush();
  14.         outputStream.close();
复制代码
image.png218737487.png
回复 使用道具 举报
brmxj
金牌服务用户   /  发表于:2021-12-2 10:13:14
10#
Derrick.Jiao 发表于 2021-12-2 09:11
如果像这种情况就需要指定一下行数例如

试了一下,解决了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部