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

如何用Python的openpyxl读取xls数据并将变量值嵌入HTML表格?

如何将Excel读取的变量嵌入HTML表格

嘿,我来帮你搞定这个问题!你已经用openpyxl拿到了Excel里的A2值并存到a2变量里,现在要把它塞进HTML表格的<td>里对吧?其实有两种常用的方式,我给你详细说说:

方法一:直接用Python字符串拼接(适合简单场景)

如果你的HTML结构比较简单,直接用Python的f-string或者字符串格式化就能快速实现,不用额外依赖模板工具。

比如你可以这样写代码:

import openpyxl

# 读取Excel数据
wb = openpyxl.load_workbook("your_file.xls")
sheet = wb.active
a2 = sheet["A2"].value  # 你已经拿到的变量

# 拼接HTML字符串,把a2嵌入<td>中
html_content = f"""
<html>
  <body>
    <table>
      <tr>
        <td class="cell">{a2}</td>
        <!-- 如果还有其他单元格,比如B2,同理替换 -->
        <td class="cell">{sheet["B2"].value}</td>
      </tr>
    </table>
  </body>
</html>
"""

# 把生成的HTML保存到文件
with open("output.html", "w", encoding="utf-8") as f:
    f.write(html_content)

这样运行后,output.html里的<td>就会自动填充a2的实际值啦。如果单元格是空的,a2会是None,你可以改成{a2 or ""}来避免显示None。

方法二:用模板引擎(推荐复杂表格场景)

如果你的HTML表格结构复杂,或者需要循环渲染多行数据,用模板引擎会更清晰规范,比如Python最常用的Jinja2。

步骤1:准备HTML模板文件

先创建一个名为template.html的模板文件,里面用{{ 变量名 }}作为占位符(你提到的{%sh...应该是混淆了模板语法,Jinja2里{{ }}用来输出变量,{% %}用来写逻辑比如循环、判断):

<html>
  <body>
    <table>
      <tr>
        <td class="cell">{{ a2_value }}</td>
        <!-- 可以添加更多占位符 -->
        <td class="cell">{{ b2_value }}</td>
      </tr>
    </table>
  </body>
</html>

步骤2:用Python加载模板并渲染

先安装Jinja2(如果没装的话):

pip install jinja2

然后写Python代码:

import openpyxl
from jinja2 import Environment, FileSystemLoader

# 读取Excel数据
wb = openpyxl.load_workbook("your_file.xls")
sheet = wb.active
a2 = sheet["A2"].value
b2 = sheet["B2"].value

# 加载当前目录下的模板文件
env = Environment(loader=FileSystemLoader("."))
template = env.get_template("template.html")

# 把变量传入模板,渲染出最终的HTML
rendered_html = template.render(a2_value=a2, b2_value=b2)

# 保存渲染后的HTML
with open("output.html", "w", encoding="utf-8") as f:
    f.write(rendered_html)

这种方式的好处是HTML结构和Python代码分离,后续修改表格样式或者添加更多数据行时,直接改模板就行,不用动Python逻辑。

额外提示:处理多行数据

如果要把Excel的多行数据都渲染到表格里,Jinja2的循环语法就能派上用场。比如模板里可以写:

<table>
  {% for row in excel_data %}
  <tr>
    {% for cell in row %}
    <td class="cell">{{ cell or "" }}</td>
    {% endfor %}
  </tr>
  {% endfor %}
</table>

然后Python里把多行数据整理成列表传给模板:

# 读取Excel的前10行数据
excel_data = []
for row in sheet.iter_rows(min_row=2, max_row=11, values_only=True):
    excel_data.append(row)

# 渲染时传入列表
rendered_html = template.render(excel_data=excel_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:55:38