You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并Jupyter Lab多份Sheet导出的HTML并保留LaTex渲染方法

解决Jupyter Lab多Sheet合并导出为单HTML的方法

这里的"Sheet"默认指多个独立的.ipynb笔记本文件,以下两种方法可实现合并导出并保持单个导出时的格式:

方法一:先合并笔记本再导出HTML

这种方式先将多个笔记本合并为单个.ipynb文件,再导出为HTML,格式与单笔记本导出完全一致:

  1. 安装nbmerge工具:
    pip install nbmerge
    
  2. 合并指定的笔记本文件:
    nbmerge notebook1.ipynb notebook2.ipynb notebook3.ipynb > merged_notebook.ipynb
    
  3. 将合并后的笔记本导出为HTML:
    jupyter nbconvert --to html merged_notebook.ipynb
    
    生成的merged_notebook.html就是包含所有内容的单文件,样式与单独导出完全一致,且文本可直接复制。

方法二:先转HTML片段再合并

适合需要灵活调整各笔记本内容分隔方式的场景:

  1. 将每个笔记本转为无完整HTML结构的内容片段:
    jupyter nbconvert --to html --template basic notebook1.ipynb
    jupyter nbconvert --to html --template basic notebook2.ipynb
    
    此时生成的notebook1.html、notebook2.html仅包含页面内容部分,无重复的<head>和样式定义。
  2. 用Python脚本拼接为完整HTML:
    复制以下代码保存为merge_html.py,修改html_files列表为你的片段文件名,运行即可生成最终HTML:
    import os
    
    # 待合并的HTML片段文件列表
    html_files = ["notebook1.html", "notebook2.html"]
    output_file = "merged_result.html"
    
    # 从单笔记本导出的完整HTML中复制<head>部分,确保样式一致
    head_content = """
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Merged Notebooks</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css">
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@9.12.0/styles/github.min.css">
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/notebook@5.7.8/style/style.min.css">
        <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/highlight.js@9.12.0/lib/highlight.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/highlight.js@9.12.0/lib/languages/python.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/notebook@5.7.8/static/components/requirejs/require.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/notebook@5.7.8/static/notebook/js/main.min.js"></script>
        <script>
            $(document).ready(function() {
                $('div.highlight pre').each(function(i, block) {
                    hljs.highlightBlock(block);
                });
            });
        </script>
    </head>
    <body>
    """
    
    # 读取所有片段内容,添加分割线区分不同笔记本
    body_content = ""
    for file in html_files:
        with open(file, 'r', encoding='utf-8') as f:
            body_content += f.read() + "\n<hr class='divider'>\n"
    
    # 拼接结尾部分
    end_content = """
    </body>
    </html>
    """
    
    # 写入最终文件
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(head_content + body_content + end_content)
    
    print(f"合并完成,输出文件:{output_file}")
    
  3. 运行脚本:
    python merge_html.py
    

注意事项

  • 若你说的"Sheet"是指同一个笔记本内的工作表(如ipysheet插件的表格工作表),需先将每个工作表内容单独保存为独立笔记本,再按上述方法合并。
  • 生成的HTML文件可直接用浏览器打开,无需依赖Jupyter环境,文本可自由复制。

内容的提问来源于stack exchange,提问作者remusconnor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:19:55