#python #pandas #xlsxwriter
#python #pandas #xlsxwriter
Вопрос:
Я использую xlsxwriter
для создания файла Excel. В настоящее время я делаю что-то вроде этого:
import datetime
import pandas as pd
import xlsxwriter
workbook = xlsxwriter.Workbook('Test.xlsx')
worksheet = workbook.add_worksheet()
datetime_format = workbook.add_format({
'font_size': 12
})
worksheet.write('C2', datetime.datetime.now().strftime("%Y-%m-%d %H:%M"), datetime_format)
# Rest removed for brevity. I simply have many stuff that
# I manually write to make the design as I want.
workbook.close()
writer = pd.ExcelWriter('Test.xlsx', engine='xlsxwriter')
result.to_excel(writer, startrow=6, startcol=3) # Start from D7.
writer.save()
Теперь, похоже, это переписывает все, что я ранее написал вручную, используя xlsxwriter
. Кроме того, я заметил, что xlsxwriter
по умолчанию не поддерживается запись фреймов данных, я прав? Как я могу объединить xlsxwriter
и pandas
, чтобы вручную написать некоторые материалы для создания листа Excel, а затем позже записать весь материал фрейма данных, начиная с конкретной ячейки?
Ответ №1:
Вам нужно изменить положение вещей. Я бы также рекомендовал прочитать документацию XlsWritter о том, как использовать его с pandas.
writer = pd.ExcelWriter('Test.xlsx', engine='xlsxwriter')
workbook = writer.book
result.to_excel(writer, sheet_name='Sheet1', index=False, startrow=6, startcol=3) # Start from D7.
worksheet = writer.sheets['Sheet1']
datetime_format = workbook.add_format({
'font_size': 12
})
worksheet.write('C2', datetime.datetime.now().strftime("%Y-%m-%d %H:%M"), datetime_format)
writer.save()
Сначала мы создаем наш объект writer, используя pd.ExcelWriter()
и передавая xlswriter
в качестве движка. Как только у нас будет наш writer, мы сможем получить доступ к нашей рабочей книге, используя .book
класс vriable. В это время мы можем записать наши данные в нашу рабочую книгу с помощью df.to_excel()
. Мы будем использовать sheet_name
аргумент to_excel
для создания и присвоения имени нашему рабочему листу. На этом этапе мы можем получить доступ к нашему рабочему листу, используя .sheets
переменную класса и передавая наше sheetname в качестве ключа — в нашем случае Sheet1
.
Оттуда вы можете записывать дополнительные значения в свой лист с использованием объекта pandas или без него — как показано в коде ниже.