【问题标题】:How can I make sure the values are aligned and the format is consistent when exporting csv into Word?将 csv 导出到 Word 时,如何确保值对齐且格式一致?
【发布时间】:2021-09-28 13:12:15
【问题描述】:

我创建了这个数据框,并将其导出为 csv 文件,然后我想将其导入 word doc。我的问题是,当我将其导入 word 时,格式会变得混乱,并且列不再匹配它们各自的值。

在 Word 中导入时如何确保值对齐且格式一致?

    Target                    Something        Something_long        Something _even_longer
0   Targetttt                   2.037                2.016                  1.010
1   Targetttttttttttttttttt     2.016                2.008                  1.004

这是目前为止的代码:

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")

【问题讨论】:

    标签: python dataframe csv docx


    【解决方案1】:

    对此我有一个非常粗略的解决方案:

    1. 在每一列中找到使用的最大字符数的值。例如,在您共享的数据的第 1 列中,它是 Targetttttttttttttttttt,即 23 字符。
    2. 现在为该列中的每个其他值添加空格,直到它达到 23 个字符。示例:在第 1 列中,将17 空格添加到Target,并将14 空格添加到Targetttt

    这样,您所有的值都将具有相同的宽度,从而对齐。

    【讨论】:

    • 这是不言自明的,但如果你愿意,我也可以添加一些代码。
    • 有没有办法获取每列最大字符数的值?我的表将采用不同的值,因此字符数不一致。 @Sumant Agnihotri
    • 再次,粗略的方法是遍历每一列并检查长度并保存最大长度。然后再次循环该列并添加空格,以便该列中的每个值具有相同数量的字符。像这样的东西:target Targetttttttttttttttttt
    • 我明白了。我会尽力做到这一点。谢谢
    • 有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 2019-09-17
    • 2019-05-29
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    相关资源
    最近更新 更多