8

docx で python 2.7 を使用しています。条件に基づいてテーブル内のセルの背景とテキストの色を変更したいと考えています。

単一セルの書式設定に関する有用なリソースが見つかりませんでした

助言がありますか?

編集 1

私のコード

style_footer = "DarkList"
style_red = "ColorfulList"
style_yellow = "LightShading"
style_green = "MediumShading2-Accent6"
style_transperent = "TableNormal"
for a,rec in enumerate(data):
    #V headinh se piše prvo polje iz table heada
    document.add_heading(rec['tableHead'][0][0], level=1)
    image_path = imageFolder + "\\" + slike[a]
    document.add_picture(image_path, height=Inches(3.5))

    #y += 28
    #worksheet.insert_image( y, 1,imageFolder + "/" + slike[a])


    for i, head in enumerate(rec['tableHead']):
        table = document.add_table(rows=1, cols = len(head))
        hdr_cells = table.rows[0].cells
        for a in range(0,len(head)):
            hdr_cells[a].text = head[a] 


    for a,body in enumerate(rec['tableData']):
        row_cells = table.add_row().cells

        for a in range(0,len(body)):
            if body[a]['style'] == 'footer':
                stil = style_footer
            elif body[a]['style'] == 'red':
                stil = style_red

            elif body[a]['style'] == 'yellow':
                stil = style_yellow
            elif body[a]['style'] == 'green':
                stil = style_green

            else:
                stil = style_transperent

            row_cells[a].add_paragraph(body[a]['value'], stil)

document.save(wordDoc)

すべてのセルは同じままです。

4

7 に答える 7

3

cell.text = "Something"メソッドを使用する代わりに、定義されたスタイルで使用する必要があるように見えますcell.add_paragraph("SomeText", a_style)-おそらく次のいずれかです。

  • カラフルグリッド
  • ColorfulGrid-Accent1
  • ColorfulGrid-Accent2
  • カラフルグリッドアクセント3
  • ColorfulGrid-Accent4
  • ColorfulGrid-Accent5
  • ColorfulGrid-Accent6

完全なリストはこちら

「デフォルト」のテンプレート ドキュメントを使用する場合 - それ以外の場合は、独自のテンプレート ドキュメントを作成する必要があります。

于 2014-11-05T09:13:07.473 に答える
0

行内のセルをループする場合は、次を使用します。

def color_row(row=0):
    'make row of cells background colored, defaults to column header row'
    row = t.rows[row]
    for cell in row.cells:
        shading_elm_2 = parse_xml(r'<w:shd {} w:fill="1F5C8B"/>'.format(nsdecls('w')))
        cell._tc.get_or_add_tcPr().append(shading_elm_2)

関数を実行して、2 行目のセルに色を付けます

color_row(2)

于 2020-07-01T00:21:37.263 に答える