2016-05-30 8 views
1

Bitte helfen Sie mir Zeilenhöhe der Tabelle in docx anzupassen. Folgendes ist Code Ich habe geschrieben, um Daten in docx Datei schreiben Aber ich habe keine Lösung, um Zeilenhöhe der Tabelle anzupassen.Python: Wie Zeilenhöhe der Tabelle in docx anpassen

import docx 
from docx import Document 
from docx.shared import Inches 

document = Document() 

document.add_heading('Document Title', 0) 

p = document.add_paragraph('A plain paragraph having some ') 
p.add_run('bold').bold = True 
p.add_run(' and some ') 
p.add_run('italic.').italic = True 

document.add_heading('Heading, level 1', level=1) 
document.add_paragraph('Intense quote', style='IntenseQuote') 

document.add_paragraph(
    'first item in unordered list', style='ListBullet' 
) 
document.add_paragraph(
    'first item in ordered list', style='ListNumber' 
) 

document.add_picture('monty-truth.png', width=Inches(1.25)) 

table = document.add_table(rows=1, cols=3) 
hdr_cells = table.rows[0].cells 
hdr_cells[0].text = 'Qty' 
hdr_cells[1].text = 'Id' 
hdr_cells[2].text = 'Desc' 
for item in recordset: 
    row_cells = table.add_row().cells 
    row_cells[0].text = str(item.qty) 
    row_cells[1].text = str(item.id) 
    row_cells[2].text = item.desc 

document.add_page_break() 

document.save('demo.docx') 

Antwort

0

Es gibt keine direkte api für diese, aber Sie können es durch direkte xml für diese

Siehe Code hinzufügen unter

# these imports can go at the top of the file 
from docx.oxml import OxmlElement 
from docx.oxml.ns import qn 


table = document.add_table(rows=1, cols=3) 
for item in recordset: 
    row = table.add_row() # define row and cells separately 

    # accessing row xml and setting tr height 
    tr = row._tr 
    trPr = tr.get_or_add_trPr() 
    trHeight = OxmlElement('w:trHeight') 
    trHeight.set(qn('w:val'), "1000") 
    trHeight.set(qn('w:hRule'), "atLeast") 
    trPr.append(trHeight) 

    row_cells = row.cells 
    row_cells[0].text = str(item.qty) 
    row_cells[1].text = str(item.id) 
    row_cells[2].text = item.desc 

mich Lassen Sie wissen, hilft jemand

+0

Es half schön. – xxyzzy

0

Ich verpackte Ishaan Sharmas Antwort in einem einfachen Funktionsanruf. Hier ist ein anderes eng verwandtes Dienstprogramm:

from docx.oxml.shared import OxmlElement, qn 

def set_vert_cell_direction(cell): 
    # https://github.com/python-openxml/python-docx/issues/55 
    tc = cell._tc 
    tcPr = tc.tcPr 
    textDirection = OxmlElement('w:textDirection') 
    textDirection.set(qn('w:val'), 'btLr') 
    tcPr.append(textDirection) 

def set_row_height(row): 
    # https://stackoverflow.com/questions/37532283/python-how-to-adjust-row-height-of-table-in-docx 
    tr = row._tr 
    trPr = tr.get_or_add_trPr() 
    trHeight = OxmlElement('w:trHeight') 
    trHeight.set(qn('w:val'), "1000") 
    trHeight.set(qn('w:hRule'), "atLeast") 
    trPr.append(trHeight) 
Verwandte Themen