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

如何在Excel中借助Python in Excel渲染LATEX数学公式

在Python in Excel中显示LaTeX数学公式的可行方案

方法1:让SymPy调用Matplotlib的LaTeX渲染生成公式图片

SymPy可以指定Matplotlib作为渲染后端,复用其内置的LaTeX渲染能力,无需额外安装独立LaTeX环境(Python in Excel的Anaconda发行版已包含Matplotlib的基础LaTeX支持)。具体实现步骤:

  1. 配置Matplotlib启用LaTeX渲染
  2. 通过SymPy生成LaTeX格式的公式字符串,交给Matplotlib渲染成图片
  3. 将图片插入目标Excel单元格

代码示例:

import sympy as sp
import matplotlib.pyplot as plt
import io
from PIL import Image
import xlwings as xw

# 定义SymPy符号公式
x = sp.symbols('x')
expr = sp.Integral(sp.sin(x**2), (x, 0, sp.pi))

# 配置Matplotlib的LaTeX渲染参数
plt.rcParams['text.usetex'] = True
plt.rcParams['font.family'] = 'serif'

# 创建空白画布渲染公式
fig, ax = plt.subplots(figsize=(4, 1))
ax.text(0.5, 0.5, r'$' + sp.latex(expr) + r'$', fontsize=16, ha='center', va='center')
ax.axis('off')  # 隐藏坐标轴

# 将画布转为图片对象
buf = io.BytesIO()
plt.savefig(buf, format='png', bbox_inches='tight', pad_inches=0)
buf.seek(0)
img = Image.open(buf)

# 插入到Excel的A1单元格
wb = xw.Book()
ws = wb.sheets.active
ws.pictures.add(img, left=ws.range('A1').left, top=ws.range('A1').top, width=img.width/2, height=img.height/2)

plt.close(fig)

方法2:直接用Matplotlib渲染LaTeX公式(无需SymPy)

如果不需要SymPy的符号计算功能,直接用Matplotlib渲染LaTeX字符串更简洁:

import matplotlib.pyplot as plt
import io
from PIL import Image
import xlwings as xw

# 启用LaTeX渲染
plt.rcParams['text.usetex'] = True

# 定义LaTeX公式字符串
latex_formula = r'\int_0^\pi \sin(x^2) dx'

# 生成公式图片
fig, ax = plt.subplots(figsize=(4, 1))
ax.text(0.5, 0.5, r'$' + latex_formula + r'$', fontsize=16, ha='center', va='center')
ax.axis('off')

# 转为图片并插入Excel
buf = io.BytesIO()
plt.savefig(buf, format='png', bbox_inches='tight', pad_inches=0)
buf.seek(0)
img = Image.open(buf)

wb = xw.Book()
ws = wb.sheets.active
ws.pictures.add(img, left=ws.range('A1').left, top=ws.range('A1').top)

plt.close(fig)

方法3:无LaTeX依赖的替代方案(SymPy Unicode输出)

如果Matplotlib的LaTeX渲染出现兼容性问题,可以用SymPy的Unicode输出直接写入单元格,虽然美观度略差,但完全不需要LaTeX环境:

import sympy as sp
import xlwings as xw

x = sp.symbols('x')
expr = sp.Integral(sp.sin(x**2), (x, 0, sp.pi))

# 生成Unicode格式的公式文本
unicode_formula = sp.pretty(expr, use_unicode=True)

# 写入Excel单元格
wb = xw.Book()
ws = wb.sheets.active
ws.range('A1').value = unicode_formula

注意事项

  • Python in Excel中若未安装xlwings,可通过!pip install xlwings命令安装
  • Matplotlib的text.usetex依赖Anaconda预装的基础LaTeX组件,默认已包含,无需额外配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:57:41