找回密码
 立即注册

QQ登录

只需一步,快速开始

no_map

注册会员

8

主题

20

帖子

80

积分

注册会员

积分
80
no_map
注册会员   /  发表于:2019-6-28 10:38  /   查看:3366  /  回复:3
本帖最后由 no_map 于 2019-7-1 08:52 编辑

#### 代码逻辑

这是一个vue-spread的项目

excel导入使用的不是spread.js的方法,

导入拿到数据后,

使用setDataSource进行数据绑定,

然后使用代码getRange  getCell 来设置单元行,单元列 的样式

然后设置defaultStyle 设置全部框线和字体

这里可以发现spread中显示的都符合预期

但是使用spread.js的导出之后发现

导出的excel设置的defaultStyle 和 getRange getCell设置的样式发生了类似冲突的情况


prodemo.rar (357.51 KB, 下载次数: 224)

3 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-6-28 16:41:20
沙发
您好,注意到您代码中在defaultStyle中设置了边框和字体,

getRange设置的是背景色、缩进和锁定单元格,

这些内容实际上是不冲突的,也就是说,可以同时生效。

您说的发生了类似冲突的情况是什么?

能否截图指明一下?
回复 使用道具 举报
no_map
注册会员   /  发表于:2019-7-1 08:53:47
板凳
KevinChen 发表于 2019-6-28 16:41
您好,注意到您代码中在defaultStyle中设置了边框和字体,

getRange设置的是背景色、缩进和锁定单元格, ...

你好,我已经重新编辑了,加上了截图
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-7-1 14:25:04
地板
您好,给您解释一下这里的原理,

在SpreadJS中,样式以优先级分为4层,单元格 > 行 > 列 > 表单,

举例说明一下:

当您在表单的defaultStyle中设置了背景色green和字体“黑体”、第一行行样式中设置了背景色red+边框+自动换行、A1单元格中又设置了背景色blue和粗边框,

那么最后A1单元格会显示背景色blue + 黑体 + 粗边框 + 自动换行,这时要获取A1单元格实际渲染的样式,可以用sheet.getActualStyle(0,0)来获取。

这里的优先级是Style类中,当优先级较高的属性值为null或undefined等无效值时,自动向下一级样式寻找对应的属性,直到找到有效属性为止。

——————————————————————————————————

而Excel中没有多级样式的概念,只有单元格样式一种,因此在导入Excel文档后,

一般都是通过getRange的方式对单元格进行样式修改。

getRange后调用的方法,可以直接修改单元格级别的样式。

另外,样式还有一个影响因素就是 namedStyle,而这个样式表就因文档不同而异,

根据您的截图和代码,我们无法定位到具体的问题所在,

需要您提供您导入的文档来具体分析。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部