I am trying to split excel spreadsheet based on columns and retain the formulas used in it. I was using openpyxl to read the formulas but got stuck as it reads formulas and write as it is but i need to modify them as well depending upon new splitted sheets. My code is as :

enter code here
import pandas as pd
import os
from openpyxl import load_workbook

files = os.listdir("C:\\Users\\electrician\\Excel_Automation")     
print("List of files: ")
for i in files:
    print(i)

file_name = input("Enter the file name: ")
file = load_workbook(filename = file_name)
tabs = file.sheetnames
temp_dict1 = dict()
print("List of tabs: ")
for i,j in enumerate(tabs):
    temp_dict1[i] = j
    print(i,j)

tab_number = int(input("Enter tab number to split: "))
tab = pd.DataFrame(data=file[tabs[tab_number]].values)
temp_dict2 = dict()
print("List of columns: ")
for i,j in enumerate(tab[:1].values.tolist()[0]):
    print(i,j)

column_number = int(input("Enter column number to split: "))
for i in set(tab[column_number]):
    output_filename = temp_dict1[tab_number+1]+"_"+i+".xlsx"
    df = tab[tab[column_number] == i].reset_index()

    writer = pd.ExcelWriter("C:\\Users\\electrician\\Excel_Automation\\Output\\" + output_filename,engine='xlsxwriter')

    for j in temp_dict1.values():
        if j == temp_dict1[tab_number]:
            df.to_excel(writer, sheet_name=output_filename, index=False)
        else:
            d = pd.DataFrame(data=file[j].values)
            d.to_excel(writer,sheet_name=j,index=False)
    writer.save()
0

There are 0 best solutions below