Я написал ниже, что, похоже, не работает. Я определяю dataframe как d3, чтобы он был столбцом с 20 строками с комментарием «мой комментарий». Затем я пытаюсь добавить это в существующий сохраненный документ Excel в ячейке L2. Фрейм данных печатается и выглядит правильно в среде IDE, но просто не перезаписывается в Excel. любая помощь будет принята с благодарностью, так как я только начинаю с python!
from openpyxl import load_workbook
import pandas as pd
import xlsxwriter
#create dataframe to be 19 lines with comment "my comment"
comment = "my comment"
df3 = pd.DataFrame([comment]* 20)
print(df3)
wb = load_workbook(r'H:\myfile.xlsx')
writer = pd.ExcelWriter(r'H:\myfile', engine='xlsxwriter')
df3.to_excel(writer,sheet_name='mysheet', startrow = 2, startcol = 12)
wb.save(r'H:\myfile.xlsx')
print("done")
Насколько я могу судить, вы делаете несколько вещей одновременно, которые сводят на нет эффект друг друга. Почему вы вообще используете openpyxl?
Вы загружаете книгу из файла excel с помощью openpyxl и load_workbook
, затем вы переопределяете файл excel с помощью кадра данных pandas, и в этот момент результат должен быть таким, какой вы хотите. Но после этого вы снова переопределяете файл excel содержимым загруженной книги, которую вы загрузили до изменений, внесенных вами с помощью pandas, что восстанавливает файл excel в исходное состояние.
Избавьтесь от каждой строки, связанной с openpyxl, и это должно работать.
import pandas as pd
import xlsxwriter
#create dataframe to be 19 lines with comment "my comment"
comment = "my comment"
df3 = pd.DataFrame([comment]* 20)
print(df3)
writer = pd.ExcelWriter(r'H:\myfile', engine='xlsxwriter')
df3.to_excel(writer,sheet_name='mysheet', startrow = 2, startcol = 12)
print("done")
Если вы хотите изменить свой файл excel с помощью панд, вам не нужен openpyxl, если вы хотите изменить свой файл excel с помощью openpyxl, вам не нужны панды.
из документов: «обратите внимание, что создание объекта ExcelWriter с уже существующим именем файла приведет к удалению содержимого существующего файла»
так что да, вам нужен openpyxl или создайте все, что вы хотите видеть в файле внутри python.
Большое спасибо, это имеет смысл. Я не понимал, что переопределяю изменения pandas с открытым pyxl, поэтому удалил это. Единственное, изменения, похоже, не перезаписывают Excel. Когда я также смотрю дату последнего изменения в своем Excel, она не обновляется...