[英]How can I align the column headers with the values in each column when importing a csv into docx as a table?
將此 csv 作為表格導入 docx 時,如何將列標題與每列中的值對齊?
import numpy as np
import pandas as pd
df = pd.DataFrame({
'Target':['Targetttt','Targetttttttttttttttttt'],
'Something': ['2.037','2.099'],
'Something_long': ['3.123','4.123'],
'Something _even_longer': ['1.123','1.234']
})
df
df.to_csv(r"C:\Users\crist\word_automation\Summary_template\TABLE.csv", sep='\t', encoding='utf-8', index = False)
import docx
import csv
doc = docx.Document()
with open('TABLE.csv', newline='') as f:
csv_reader = csv.reader(f)
csv_headers = next(csv_reader)
csv_cols = len(csv_headers)
table = doc.add_table(rows=2, cols=csv_cols)
hdr_cells = table.rows[0].cells
for i in range(csv_cols):
hdr_cells[i].text = csv_headers[i]
for row in csv_reader:
row_cells = table.add_row().cells
for i in range(csv_cols):
row_cells[i].text = row[i]
doc.add_page_break()
doc.save("data.docx")
數據框看起來像這樣:
Target Something Something_long Something _even_longer
0 Targetttt 2.037 3.123 1.123
1 Targetttttttttttt 2.099 4.123 1.234
將 csv 導出為 word 時,表格會丟失其格式,並且列中的值不再在每列中對齊,因為每個值的字符長度不同。
對於每個單元格,只需按照您想要的方式對齊其第一段:
from docx.enum.text import WD_ALIGN_PARAGRAPH
cell.paragraphs[0].paragraph_format.alignment = WD_ALIGN_PARAGRAPH.LEFT
# --- or .RIGHT or .CENTER if you like ---
您可能希望以不同方式對齊不同的單元格塊,例如您希望行標題左對齊,這在表格布局中很常見。
一個實用函數可能很方便:
def align_cell(cell, alignment):
for p in cell.paragraphs:
p.paragraph_format.alignment = alignment
這樣你就可以調用:
align_cell(cell, WD_ALIGN_PARAGRAPH.RIGHT)
這更緊湊一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.