Запись данных в xls с использованием класса Python - PullRequest
0 голосов
/ 09 декабря 2018
class XlsMaker(object):
    def __init__(self,path='report'):
        self.xls = pd.ExcelWriter('%s.xlsx' %path,engine='xlsxwriter')
        df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})

        # Create a Pandas Excel writer using XlsxWriter as the engine.
        writer = pd.ExcelWriter('%s.xlsx' %path,engine='xlsxwriter')
        df.to_excel(writer, sheet_name='Sheet1')

         # Close the Pandas Excel writer and output the Excel file.
        writer.save()

    def save(self):
        print('Generating your report...')
        self.xls.save()
        self.xls.close()
        print('Done!')



#I am invoking this class like below:-
rep1 = xlsMaker("Test") 
rep1.save()

Файл Xlsx создан, но данные не заполняются.Когда я не использую класс, я нахожу xlsx, созданный с данными.Я хочу знать, есть ли какая-либо ошибка в приведенном выше коде, так как я начинающий Python.

1 Ответ

0 голосов
/ 09 декабря 2018

Вы создаете два объекта в двух разных строках, содержащих pd.ExcelWriter('%s.xlsx' %path,engine='xlsxwriter').Один из них является атрибутом класса, а другой является локальным для функции инициализатора.Вы вызываете .save() в инициализаторе локального.

Удалите строку writer =... и замените все экземпляры writer на self.xls '

...