How can I write code to make TOC in LibreOffice using Python?

77 Views Asked by At

I am developing to make document using python-docx package. But I have a problem to make table of contents. How can I do this?

My code about this is below. But it didn't perform as expected.

import docx
from docx import Document
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

document = Document()

paragraph = document.add_paragraph()
run = paragraph.add_run()

fldChar = OxmlElement('w:fldChar')  # creates a new element
fldChar.set(qn('w:fldCharType'), 'begin')  # sets attribute on element

instrText = OxmlElement('w:instrText')
instrText.set(qn('xml:space'), 'preserve')  # sets attribute on element
instrText.text = 'TOC \\o "1-3" \\h \\z \\u'   # change 1-3 depending on heading levels you need

fldChar2 = OxmlElement('w:fldChar')
fldChar2.set(qn('w:fldCharType'), 'separate')

fldChar3 = OxmlElement('w:t')
fldChar3.text = "Right-click to update field."

fldChar2.append(fldChar3)

fldChar4 = OxmlElement('w:fldChar')
fldChar4.set(qn('w:fldCharType'), 'end')

r_element = run._r
r_element.append(fldChar)
r_element.append(instrText)
r_element.append(fldChar2)
r_element.append(fldChar4)

p_element = paragraph._p

document.add_heading("Network Connectivity")
document.add_heading("Weather Stations")

name = "mdh2"
document.save(name+".docx")
0

There are 0 best solutions below