Я создаю электронную таблицу с openpyxl и добавляю некоторые данные.
import pandas as pd
import numpy as np
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl import load_workbook
from collections import OrderedDict
workbook = Workbook()
sheet = workbook.active
def fill_static_values():
sheet["A1"] = "Run No."
sheet["A2"] = "MLIDMLPA"
sheet["A48"] = "Patients here"
sheet["B1"] = "Patient"
fill_static_values()
output = "./Name_of_run.xlsx"
workbook.save(filename=output)
Затем мое приложение выполняет некоторое управление данными, и я хочу добавить некоторые из этих данных в существующий файл.
book = load_workbook(output)
writer = pd.ExcelWriter(output, engine='openpyxl')
writer.book = book
## ExcelWriter for some reason uses writer.sheets to access the sheet.
## If you leave it empty it will not know that sheet Main is already there
## and will create a new sheet.
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
data_no_control.to_excel(writer, "sheet", startrow=2, startcol=3,
header=False,
index=False)
writer.save()
Решение найдено по этой ссылке StackOverflow
Однако это создает и добавляет данные в правильном положении, но на новом листе с именем sheet2. Что я делаю неправильно?
Решение проблемы
to_excel имеет неправильное имя листа. Должен S
быть в CAPS. Изменить строку с
data_no_control.to_excel(writer, "sheet", startrow=2, startcol=3,
наdata_no_control.to_excel(writer, "Sheet", startrow=2, startcol=3,
Поскольку в excel уже есть лист, он записывает данные в Sheet2
РЕДАКТИРОВАТЬ
Заметил, что вы используете writer.sheets
. Если вы хотите, чтобы программа автоматически забирала первый лист из Excel, вы также можете использовать это...
data_no_control.to_excel(writer, sheet_name=list(writer.sheets.keys())[0], startrow=2, startcol=3,
Это подберет первый лист (в вашем случае единственный лист) в качестве рабочего листа для обновления.
Комментариев нет:
Отправить комментарий