如何使用python-docx将分数输入到WORD文档中

问题描述 投票:0回答:2

我想使用 python-docx 将分数插入 WORD 中,如下图所示。我只能插入这些:15/20 + 4/20。我想要的风格如图所示。是否可以使用 python-docx 或 Python 中的其他库来完成此操作?

python python-docx
2个回答
2
投票

Python-docx 没有实现用于处理 Word 公式的高级 API,但如果您可以自己构造 XML 字符串,则可以将其插入到文档中。 XML 架构是 Microsoft OMML,其概念与 MathML 类似。

from docx import Document
from docx.oxml import parse_xml

document = Document()

p = document.add_paragraph()
omml_xml = '<p xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"><m:oMathPara><m:oMath><m:f><m:num><m:r><m:t>1</m:t></m:r></m:num><m:den><m:r><m:t>2</m:t></m:r></m:den></m:f></m:oMath></m:oMathPara></p>'
omml_el = parse_xml(omml_xml)[0]
p._p.append(omml_el)

document.save('demo.docx')

这是 OMML 片段:

<p xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math">
  <m:oMathPara>
    <m:oMath>
      <m:f>
        <m:num>
          <m:r>
            <m:t>1</m:t>
          </m:r>
        </m:num>
        <m:den>
          <m:r>
            <m:t>2</m:t>
          </m:r>
        </m:den>
      </m:f>
    </m:oMath>
  </m:oMathPara>
</p>

这将生成一个带有分数 1/2 的 Word 文档。


0
投票

我也有类似的问题。我需要将公式插入现有电子表格的单元格中。 感谢这篇文章,我决定这样做

from docx.oxml import parse_xml
import mathml2omml
import latex2mathml.converter


def test3():
    a = 5
    b = 2
  
    latex = r'''\frac{{{}}}{{{}}}'''.format(a, b)   
    mathml = latex2mathml.converter.convert(latex)  
    omml = mathml2omml.convert(mathml)              
    omml_xml = f'''
    <p xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"> 
    <m:oMathPara>{omml}</m:oMathPara>
    </p>
    '''                                            
    omml_el = parse_xml(omml_xml)[0]               


    document = Document('template_cell.docx')       
    table = document.tables[0]                     
    c = table.rows[0].cells                        
    p = c[0].paragraphs[0]                          
    p._element.append(omml_el[0])                  

    document.save('demo.docx')
© www.soinside.com 2019 - 2024. All rights reserved.