Getting trouble with either of errors ; writer.book=book
AttributeError: can't set attribute 'book'
or BadZipFile
for code not giving badzipfile error I put code line which writes excel file first, dataOutput=pd.DataFrame(dictDataOutput,index=[0])
but, even though I cannot get rid of writer.book = book AttributeError: can't set attribute 'book'
As one of SO answer suggests I need to bring back openpyxl to previous versions, or to work with CSV file not excel. I think that's not the solution. There should be solution which I could not get in
dataOutput=pd.DataFrame(dictDataOutput,index=[0])
dataOutput.to_excel('output.xlsx') 'output.xlsm'
book = load_workbook('output.xlsx') 'output.xlsm'
writer = pd.ExcelWriter('output.xlsx')OR'output.xlsm'#,engine='openpyxl',mode='a',if_sheet_exists='overlay')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
for sheetname in writer.sheets:
dataOutput.to_excel(writer,sheet_name=sheetname, startrow=writer.sheets[sheetname].max_row, index = False,header= False)
writer.save()
I looked for an answer in enter link description here and in detailed solution of attributeError in enter link description here
---I tried another way
with pd.ExcelWriter('output.xlsx', mode='a',if_sheet_exists='overlay') as writer:
dataOutput.to_excel(writer, sheet_name='Sheet1')
writer.save()
But this time gave another error
FutureWarning: save is not part of the public API, usage can give in unexpected results and will be removed in a future version
writer.save()
after @Andrew's comments I chaned my code to this way;
with pd.ExcelWriter('outputData.xlsm', engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
book = load_workbook('outputData.xlsm', keep_vba=True)
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
current_sheet = book['Sheet1']
Column_A = current_sheet['A']
maxrow = max(c.row for c in Column_A if c.value is not None)
for sheetname in writer.sheets:
AllDataOutput.to_excel(writer, sheet_name=sheetname, startrow=maxrow, index=False, header=False)
from pandas appending excel(xlsx) file gives attribute.error
No comments:
Post a Comment