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

QQ登录

只需一步,快速开始

NanChengQing

初级会员

26

主题

92

帖子

276

积分

初级会员

积分
276

[已处理] GCExcel样式问题

NanChengQing
初级会员   /  发表于:2023-4-25 18:03  /   查看:1288  /  回复:6
50金币
如sheet1中A1单元格在Excel中设置了样式,包含(字体,背景色,行高,列宽,数字格式等),需要获取单元格的格式,然后将格式应用到其他格式上。使用“copy_worksheet.getstyle”方法获取到样式,再将样式set的方法无效


最佳答案

查看完整内容

了解了,GCExce的样式设置和spreadjs不同,更接近于excel,也就是说单元格如果不专门设置名称样式的话,是没有对应的style的。你只能获取到已经设置了的背景色。边框等等 你range.getStyle();拿到的style仍然是默认的Normal样式。并不是这个单元格真实的样式 正确的做法是新建一个名称style,然后将各项具体的样式属性设置为和(5,0)相同的内容,然后再给其他单元格添加,比如要拿5,0单元格的背景和前景色

6 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-4-25 18:03:10
来自 5#
了解了,GCExce的样式设置和spreadjs不同,更接近于excel,也就是说单元格如果不专门设置名称样式的话,是没有对应的style的。你只能获取到已经设置了的背景色。边框等等

你range.getStyle();拿到的style仍然是默认的Normal样式。并不是这个单元格真实的样式

正确的做法是新建一个名称style,然后将各项具体的样式属性设置为和(5,0)相同的内容,然后再给其他单元格添加,比如要拿5,0单元格的背景和前景色

  1.                 IStyle mystyle = workbook.getStyles().add("MyStyle");
  2.                 mystyle.getInterior().setColor(iWorksheet.getRange(5,0).getInterior().getColor());
  3.                 mystyle.getFont().setColor(iWorksheet.getRange(5,0).getFont().getColor());

  4.                 for (int i = 7; i < 10000; i++) {
  5.                     iWorksheet.getRange(i,0).getEntireRow().insert();
  6.                     iWorksheet.getRange(i,0).setStyle(mystyle);
  7.                 }
复制代码
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-4-26 18:33:59
2#
首先copy_worksheet.getstyle是你自己写的方法,GcExcel没有这样命名的源生方法。
那么至于你这个方法里是如何写的我们并不清楚。建议您debug一下这个方法内部的代码,看看是哪些地方出现了问题。
或者您可以考虑提供一个能够重现问题的demo,我们也可以帮您看一下。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-4-26 18:34:36
3#
请将你获取和设置的完整代码发上来。不然没法判断你是不是写的代码有问题
回复 使用道具 举报
NanChengQing
初级会员   /  发表于:2023-4-26 18:52:01
4#
Richard.Ma 发表于 2023-4-26 18:34
请将你获取和设置的完整代码发上来。不然没法判断你是不是写的代码有问题

        IWorksheets worksheets = workbook.getWorksheets();
        IWorksheet iWorksheet = worksheets.get(0);

        IRange range = iWorksheet.getRange(5, 0);

        IStyle style = range.getStyle();

        for (int i = 7; i < 10000; i++) {
            iWorksheet.getRange(i,0).getEntireRow().insert();
            iWorksheet.getRange(i,0).setStyle(style);
        }
回复 使用道具 举报
NanChengQing
初级会员   /  发表于:2023-4-27 15:04:46
6#
Richard.Ma 发表于 2023-4-27 13:48
了解了,GCExce的样式设置和spreadjs不同,更接近于excel,也就是说单元格如果不专门设置名称样式的话,是 ...

iWorksheet.getRange(5,0).toJson();这个方式导出的JSON里面存在style,请问在toJSON的情况下能获取到里面的style吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-4-27 18:23:56
7#
通过这种方式是可以获取到的,但是toJson拿到的是一个json字符串,你需要自己来解析其中的style节点中的内容,然后做相关设置
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部