python - Plotly:如何在 Excel 中嵌入完全交互式的 Plotly 图形?

标签 python excel vba plotly plotly-python

我正在尝试将交互式绘图(或 Bokeh )图嵌入到 excel 中。
为此,我尝试了以下三件事:

  • 将 Microsoft Web 浏览器用户表单嵌入到 excel 中,如下:

  • How do I embed a browser in an Excel VBA form?


    这有效,并且可以加载在线和离线 html
  • 创建一个有 plotly 的 html

  • '''
    import plotly
    import plotly.graph_objects as go
    
    
    x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
    y = [i**2 for i in x]
    
    fig = go.Figure()
    
    fig.add_trace(go.Scatter(x=x, y=x, mode='markers', name="y=x", marker=dict(color='royalblue', size=8)))
    fig.add_trace(go.Scatter(x=x, y=y, name="y=x^2", line=dict(width=3)))
    
    plotly.offline.plot(fig, filename='C:/Users/.../pythonProject/test1.html')
    
  • 使用 .Navigate 在 excel 中重新指向 webbrowser 对象到本地plotly.html。横幅弹出

  • “....限制此文件显示可以访问您计算机的事件内容”
    点击横幅,我遇到了这个错误:
    enter image description here
    可以在浏览器中打开相同的 HTML。
    有没有办法在excel中显示交互式绘图?

    最佳答案

    最后,经过 Microsoft QnA 的讨论,我设法将交互式绘图带到了 Excel 中。和 Web Browser Control & Specifying the IE Version
    要将 Microsoft 网页插入 excel,您必须在注册表编辑器中更改兼容性标志
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Common\COM 兼容性{8856F961-340A-11D0-A96B-00C04FD705A2}
    更改双字 0 而不是 400
    现在您可以将 Web 浏览器对象插入到 excel 中,逐步详细信息为 here
    通过添加使用 X-UA 兼容 HTML 元标记的标记手动编辑从 plotly 生成的 HTML 文件
    最初从 plotly 生成的 HTML 文件看起来像这样

    <html>
    <head><meta charset="utf-8" /></head>
    <body>
    
    修改后的 HTML 与浏览器兼容性
    <html>
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    </head>
    <body>
    
    在此之后,我可以在 excel 中查看交互式绘图,也可以进行与 Web 浏览器相同的交互
    Output
    使用的宏:
    Sub Button4_Click()
    ActiveSheet.WebBrowser1.Navigate "file:///C:/Users/vignesh.rajendran/Desktop/test5.html"
    End Sub
    

    关于python - Plotly:如何在 Excel 中嵌入完全交互式的 Plotly 图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65272408/

    相关文章:

    python - 是否可以防止 python 脚本修改/删除文件?

    c# - 如何转义公式中的双引号

    vba - 用于删除电话号码前导 1(如果存在)的 Excel 公式

    Python xlrd 对 Excel 电子表格的迭代遗漏了单元格值

    带有节点 : __str__ method 的 Python 无序列表

    python - matplotlib:在轴上绘制一个框

    vba - 使用 VBA-Macros 抓取源代码

    vba - Word.Range.TextVisibleOnScreen?

    vba - 差不多好了!如何按整数隐藏行?

    VBA宏溢出