Thank you for reading my post and I appreciate your help! I am trying to complete below steps using Python:
- copy 5 excel xlsx files from a folder as data source(all 5 files only have 1 sheet each)
- paste the above mentioned excel files in one workbook as 5 separate worksheet.
- Make updates on every sheet(for example, on sheet1 I need to sum a specific column etc.) and then write the modified sheets back to the same workbook.
Issue: when I write back to the original file it replaced the workbook in step2. I searched far and wide here and it says I need to change writer to openpyxl, however, when I change to openpyxl it has "zipfile.BadZipFile: File is not a zip file" error.
import openpyxl
import pandas as pd
import os
from openpyxl import Workbook
import xlsxwriter as xw
import openpyxl as xl
from openpyxl.utils import get_column_letter
import numpy as np
# step 1: copy sheets from data folder into master workbook
# opening the source excel file
df1 = pd.read_excel(r"file1path.xlsx")
df2 = pd.read_excel(r"file2path.xlsx")
df3 = pd.read_excel(r"file3path.xlsx")
df4 = pd.read_excel(r"file4path.xlsx")
df5 = pd.read_excel(r"file5path.xlsx")
dest_filename = r'masterfilepath.xlsx'
# opening the destination excel file
writer = pd.ExcelWriter(dest_filename, engine='xlsxwriter')
# Write to master workbook.
df1.to_excel(writer, sheet_name='W.5 Revenue',index= False)
df2.to_excel(writer, sheet_name='W.4 Rev details',index= False)
df3.to_excel(writer, sheet_name='W.7 Accrual',index= False)
df4.to_excel(writer, sheet_name='W.6 Adhoc',index= False)
df5.to_excel(writer, sheet_name='W.8 State',index= False)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
# Filter rows account number beginning with 4 on file1(df1)
df1 = df1[df1["Ledger account"].str.startswith('4')]
writer = pd.ExcelWriter(dest_filename, engine='openpyxl')
if os.path.exists(dest_filename):
book = openpyxl.load_workbook(dest_filename)
writer.book = book
df1.to_excel(writer, sheet_name="W5")
writer.save()
writer.close()