установка столбца для нумерации текста вместо общего Python 3 - PullRequest
0 голосов
/ 08 октября 2019

Мне удалось изменить заголовок на текст в виде столбцов, но я получаю странную ошибку.

Теперь он по-прежнему возвращает NaN, но если я вошел и вручную выделю столбец B (имя поставщика втекст) и изменить столбец на текст через Excel вдруг второй скрипт работает отлично. И мне нужно только изменить лист 1.

Есть ли способ имитировать это в python / xlsxwriter?

У меня есть два скрипта на python. Можно взять данные из таблицы Excel и разобрать их на отдельные таблицы в зависимости от группировки. Второй читает итоги и возвращает таблицу для электронной почты. Я вручную создавал это в Excel и работал над его автоматизацией. Второй скрипт, который строит HTML-таблицу, прекрасно работает с моим руководством. Книга, которую я создал с помощью xlsxwriter, выглядит идентично, за исключением столбца B с именами поставщиков, отформатированными как Общие вместо Текст (лист руководства - текст). Мой второй скрипт теперь показывает только NaN при просмотре недавно построенного листа. Я пытался установить формат текста, но он не работает. Я могу установить формат для валюты в другом столбце, поэтому я не уверен, почему текст не работает.

Когда я смотрю на ячейки, я вижу ячейку, показывающую количество, которое представляет собой те же данные, возвращаетчисло, но сумма в ячейке не

Я использую Python 3.6 и xlsxwriter.

Мне нужно изменить столбец B, это имя поставщика.

worksheet_paygroup.set_column ('B: B', 40)

Я искал в документах xlsxwriter и нашел что-то для 2.7, что специфично для этого, но, похоже, не работает с 3.

Я пытался установить set_column, write_column, add_format, add_num_format

import pandas as pd
import numpy as np
import os
import datetime as dt
import pandas.io.formats.excel

df = pd.read_excel(test_sheet)

#this grabs the data from different excel sheet
df_paygroup = df[df['payments'] == 'paygroup']
df_paygroup.drop(columns='unneeded_column')
df_paygroup.insert(3, 'Total', value=' ') #sets new column
df_paygroup = df_paygroup[['Vendor', 'Name', 'Amount', 'Total']]
df_paygroup = df_paygroup.sort_values(by=['Amount'], ascending=False)


writer = pd.ExcelWriter('new_sheet.xlsx', engine='xlsxwriter')
pandas.io.formats.excel.header_style = None

df_paygroup.to_excel(writer, sheet_name='paygroup', index=False)
#there are 15 of these with different names


workbook = writer.book
money_format = workbook.add_format({'num_format': '[$$-409]#,##0.00'})
text_format = workbook.add_format({'num_format': '@'})

worksheet_paygroup = writer.sheets['paygroup']
worksheet_paygroup.set_column('A:A', 11)
worksheet_paygroup.set_column('B:B', 40)
# worksheet_paygroup.write(text_format) $this returns error
worksheet_paygroup.set_column('C:C', 19, money_format)
worksheet_paygroup.set_column('D:D', 16)
worksheet_paygroup.write_formula('E1', '=SUM(C2:C743)')
worksheet_paygroup.set_column('E:E', 20, money_format)


writer.save()
writer.close()

во втором сценарии должно отображаться значение доллара, а не nan.

На новом листе он показывает: nannp.isnan = True

старый файл: 2265,50 (правильное количество) np.isnan = False

<tr>
                            <th>Pay Cycle</th>
                            <th>Description</th>
                            <th>Pay Cycle Amount</th>
                            <th>Daily Total</th>
                        </tr>
                        <tr>
                            <td>paygroup</td>
                            <td>Description</td>
                            **<td>$nan</td>**
                            <td> </td>
                        </tr>
...