找回密码
 立即注册

QQ登录

只需一步,快速开始

注册会员

11

主题

20

帖子

67

积分

注册会员

积分
67

注册会员   /  发表于:2022-6-1 17:17  /   查看:2218  /  回复:4
1金币
当条件格式中含有自定义公式的时候,因excel中不存在此公式,若直接导出的话,那么会导致条件格式所添加的样式丢失,为了保证导出的时候样式不丢失,有没有什么比较好的方案(能接受将此条件格式移除掉),经过分析后有以下几种格式可能会含有自定义公式:
switch (ruleType) {
  case spreadNS.ConditionalFormatting.RuleType.twoScaleRule: // 双色刻度规则
    console.log('双色刻度规则');
    break;
  case spreadNS.ConditionalFormatting.RuleType.threeScaleRule: // 三色刻度规则
    console.log('三色刻度规则');
    break;
  case spreadNS.ConditionalFormatting.RuleType.dataBarRule: // 数据条规则
    console.log('数据条规则');
    break;
  case spreadNS.ConditionalFormatting.RuleType.iconSetRule: // 图标集规则
    console.log('图标集规则');
    break;
  case spreadNS.ConditionalFormatting.RuleType.cellValueRule: // 单元格值规则(getExpected)
    console.log('单元格值规则');
    break;
  case spreadNS.ConditionalFormatting.RuleType.formulaRule: // 公式规则(getExpected)
    console.log('公式规则');
    break;
  default:
    break;
}
以上代码中的数据条规则和图标集规则无法获取样式,请问有没有什么办法进行处理?最好能提供一个以上所有条件格式类型中含有自定义公式导出时处理的的一个demo,谢谢

最佳答案

查看完整内容

您可以在导出excel文件前,复制一个新的spread。 然后在新的spread中,使用evaluateFormula方法获取该自定义公式的计算结果。 再将条件格式中的 自定义公式 替换为 计算结果, 最后对新spread进行导出。 示例如下: 设置自定义公式 =FACTORIAL(1) , 其计算结果为 2(即内部逻辑为 return 参数+1 ) 条件格式公式为: 在导出新spread前,将 FACTORIAL(1) 修改为 2。

4 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-1 17:17:08
来自 3#
本帖最后由 Lynn.Dou 于 2022-8-1 09:46 编辑

您可以在导出excel文件前,复制一个新的spread。
然后在新的spread中,使用evaluateFormula方法获取该自定义公式的计算结果。
再将条件格式中的 自定义公式 替换为 计算结果,
最后对新spread进行导出。

示例如下:
设置自定义公式 =FACTORIAL(1) , 其计算结果为 2(即内部逻辑为 return 参数+1 )
条件格式公式为:
image.png421432494.png
在导出新spread前,将 FACTORIAL(1) 修改为 2。
image.png183842162.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-1 18:29:50
2#
您好,
需要调研下是否有相应的解决方案,这需要一定的时间,待有结果会在贴中回复您。
回复 使用道具 举报

注册会员   /  发表于:2022-6-2 17:59:25
4#
是一个办法,非常感谢!
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-6-2 18:36:19
5#
您客气了,那本帖就先结贴了,有问题欢迎另开新帖交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部