0
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 = pd.DataFrame({'a':[1,3,5,7,4,5,6,4,7,8,9],
                   'b':[3,5,6,2,4,6,7,8,7,8,9]})
df.to_excel(writer, sheet_name='tab_name', index = False)

writer.save()

I get an error AttributeError: 'Workbook' object has no attribute 'add_worksheet'

cat
  • 253
  • 2
  • 3
  • 13
  • AttributeError: 'Workbook' object has no attribute 'add_worksheet' that is what I get – cat Jan 16 '18 at 11:42
  • What versions of `pandas` and `openpyxl` are you using? I can't reproduce your error with `pandas 0.18.1` and `openpyxl 2.2.5` – DeepSpace Jan 16 '18 at 11:48
  • @DeepSpace Well, we're on 0.22 now. Not sure about `openpyxl` though (psh, who even uses that?!). – cs95 Jan 16 '18 at 12:09
  • See [this question](https://stackoverflow.com/questions/20219254/how-to-write-to-an-existing-excel-file-without-overwriting-data-using-pandas) for more ideas – b2002 Jan 29 '18 at 16:20

1 Answers1

2
import pandas as pd
from openpyxl import load_workbook

fn = 'test.xlsx'

df = pd.read_excel(fn, header=None)
df2 = pd.DataFrame({'a':[1,3,5,7,4,5,6,4,7,8,9],
                   'b':[3,5,6,2,4,6,7,8,7,8,9]})

writer = pd.ExcelWriter(fn, engine='openpyxl')
book = load_workbook(fn)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df.to_excel(writer, sheet_name='tab_name', header=None, index=False)
df2.to_excel(writer, sheet_name='tab_name', header=None, index=False,
             startcol=7,startrow=6)

writer.save()
cat
  • 253
  • 2
  • 3
  • 13