Python Как использовать ExcelWriter для записи в существующую таблицу
Я пытаюсь использовать ExcelWriter для записи / добавления некоторой информации в рабочую книгу, которая содержит несколько листов. В первый раз, когда я использую эту функцию, я создаю рабочую книгу с некоторыми данными. Во втором разговоре я хотел бы добавить некоторую информацию в рабочую книгу в разных местах на всех листах.
def Out_Excel(file_name,C,col):
writer = pd.ExcelWriter(file_name,engine='xlsxwriter')
for tab in tabs: # tabs here is provided from a different function that I did not write here to keep it simple and clean
df = DataFrame(C) # the data is different for different sheets but I keep it simple in this case
df.to_excel(writer,sheet_name = tab, startcol = 0 + col, startrow = 0)
writer.save()
В основном коде я вызываю эту функцию дважды с разными col, чтобы распечатать мои данные в разных местах.
Out_Excel('test.xlsx',C,0)
Out_Excel('test.xlsx',D,10)
Но проблема в том, что при этом вывод - это всего лишь второй вызов функции, как если бы функция перезаписывала всю книгу. Я думаю, мне нужно загрузить книгу, которая уже существует в этом случае? Любая помощь?
2 ответа
Использование load_book
от openpyxl
- см. документы xlsxwriter и openpyxl:
import pandas as pd
from openpyxl import load_workbook
book = load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, sheet_name='tab_name', other_params)
writer.save()
Панды версии 0.24.0 добавили mode
Ключевое слово, которое позволяет вам добавлять книги Excel к превосходным, не выполняя обходы, которые мы привыкли делать. Просто используйте mode='a'
добавить листы к существующей книге.
Из документации:
with ExcelWriter('path_to_file.xlsx', mode='a') as writer:
df.to_excel(writer, sheet_name='Sheet3')
Вы также можете попробовать использовать следующий метод для создания электронной таблицы Excel:
import pandas as pd
def generate_excel(csv_file, excel_loc, sheet_):
writer = pd.ExcelWriter(excel_loc)
data = pd.read_csv(csv_file, header=0, index_col=False)
data.to_excel(writer, sheet_name=sheet_, index=False)
writer.save()
return(writer.close())
Попробуйте и дайте мне знать, что вы думаете.