Как я могу убедиться, что значения выровнены и формат соответствует при экспорте csv в Word?

#python #dataframe #csv #docx

Вопрос:

Я создал этот фрейм данных, который экспортирую в файл csv, а затем хочу импортировать его в документ word. Моя проблема в том, что, когда я импортирую его в 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:Userscristword_automationSummary_templateTABLE.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")
 

Ответ №1:

У меня есть очень грубое решение для этого:

  1. В каждом столбце найдите значение с максимальным количеством используемых символов. Например, в столбце 1 данных, которыми вы поделились, Targetttttttttttttttttt указано, что это 23 символы.
  2. Теперь добавьте пробел ко всем остальным значениям в этом столбце, пока они не станут 23 символами. Пример: В столбце 1 добавьте 17 пробелы Target и добавьте 14 пробелы Targetttt .

Таким образом, все ваши значения будут иметь одинаковую ширину и, следовательно, будут выровнены.

Комментарии:

1. это само собой разумеется, но если вы хотите, я тоже могу добавить немного кода.

2. Есть ли способ получить значение максимального количества символов в каждом столбце? Моя таблица будет принимать разные значения, поэтому количество символов не совпадает. @Сумант Агнихотри

3.опять же, грубый способ состоял бы в том, чтобы перебирать каждый столбец, проверять длину и сохранять максимальную длину. Затем снова повторите цикл по столбцу и добавьте пустое пространство, чтобы каждое значение в столбце содержало одинаковое количество символов. что-то вроде этого: target Targetttttttttttttttttt

4. Я понимаю. Я постараюсь это сделать. Спасибо

5. Есть какие-нибудь предложения о том, как это сделать?