объединение файлов .xlsx в один без перезаписи данных - PullRequest
0 голосов
/ 01 апреля 2020
import os

import tkinter as tk

from tkinter import filedialog

import pandas as pd

import xlrd

import openpyxl

from openpyxl import load_workbook

import datetime

from dataclasses import dataclass

from openpyxl.styles import Font,Color,Alignment,Border,Side,colors

import numpy as np

from xlsxwriter.utility import xl_rowcol_to_cell

import xlwt

from xlwt import Workbook

import functools

import numpy as np

from itertools import repeat, chain

import glob

root= tk.Tk()

canvas1 = tk.Canvas(root, width = 300, height = 300, bg = 'lightsteelblue')
canvas1.pack()

def getExcel():
    global df

    import_file_path = filedialog.askopenfilename()

    df = pd.read_excel (import_file_path)

    del df['PART CODE']

    del df['SUPPLIER CODE']

    del df['COMPANY OR SUB-CONT']

    del df['SUB-CONT UNIT COST']

    del df['HLR']

    del df['HOURLY MULTIPLIER']

    del df['MATERIAL MULTIPLIER']

    del df ['ROUGH-IN HOURS']

    del df['FINISH HOURS']

    del df['PRELIMINARY TEXT']

    del df['FORMAL TEXT']

    del df['SUBCONT TEXT']

    del df['Part Image Path']

    df.insert(0,'Id','')

    df.insert(1,'M','M')

    df.insert(3,'SubCategory', '')

    df.insert(4,'DrillDowns', '')

    df.insert(6, 'Name', '')

    df = df.rename(columns={'PART UNIT TYPE': 'MeasurementType'})

    df.insert(8,'OnOffSwitch', 'No')

    df['SubCategory'] = df['CATEGORY']

    df = df.rename(columns={'PART DESCRIPTION': 'Note'})

    df['Name'] = df['Note']

    df = df.rename(columns={'COMPANY UNIT COST': 'PRICE'})

    new_row = pd.DataFrame({'Id':'(BLANK = NEW)', 'M':'P', 'CATEGORY':'Brand', 
                        'SubCategory':'Name', 'DrillDowns':'Price - Bathroom {nwPFGtikvZ}', 'Name':'Price - HVAC {cp7lAPx4IO}', 'Note': 'Price - XPS1 {qX8FFEVmqP}', 
                        'MeasurementType':'Price - PRIME {atGoZ7zLsE}', 'OnOffSwitch':'Price - ARCHIVE {NtbEEROpa9}', 'NeedToReplace':'Price - FLOORING {AskrHJL9ab}', 'NeedToReplace1':'Price - TEST {jOn0TaUDmU}', 'NeedToReplace2':'Price - Kitchen Refacing {9iFFUgrQBr}', 'NeedToReplace3':'Price - EAGLE EYES {X8ExSUDoFH}', 'NeedToReplace4':'Price - Basement {ajuemFbXaL}', 'NeedToReplace5': 'Price - Egress Windows {69790nzjKb}'}, 
                                                            index =[0]) 
    # simply concatenate both dataframes 
    df = pd.concat([new_row, df]).reset_index(drop = True) 
    df = df.fillna('')
    #new_row1 = pd.DataFrame({'Id':' ', 'M':'P', 'CATEGORY': 'SITE-PREP'}, index= [2])

    switches = df['M'].ne(df['M'].shift(16000))
    idx = switches[switches].index

    df_new = pd.DataFrame(index=idx + 1.5)
    df = pd.concat([df, df_new]).sort_index()

    #df = pd.concat([new_row1, df]).reset_index(drop = True)

    df = df.fillna('NO VALUE')
    df.M = df.M.replace({'NO VALUE': "P"})
    df.Id = df.Id.replace({'NO VALUE': ""})
    df.DrillDowns = df.DrillDowns.replace({'NO VALUE': "xxxx"})
    df.Name = df.Name.replace({'NO VALUE': "xxxx"})
    df.Note = df.Note.replace({'NO VALUE': "xxxx"})
    df.MeasurementType = df.MeasurementType.replace({'NO VALUE': "xxxx"})
    df.OnOffSwitch = df.OnOffSwitch.replace({'NO VALUE': "xxxx"})
    df.NeedToReplace = df.NeedToReplace.replace({'NO VALUE': "xxxx"})
    df.NeedToReplace1 = df.NeedToReplace1.replace({'NO VALUE': "xxxx"})
    df.NeedToReplace2 = df.NeedToReplace2.replace({'NO VALUE': "xxxx"})
    df.NeedToReplace3 = df.NeedToReplace3.replace({'NO VALUE': "xxxx"})
    df.NeedToReplace5 = df.NeedToReplace3.replace({'NO VALUE': "xxxx"})
    df['NeedToReplace4'] = df['PRICE'].shift(1)
    df = df.fillna("Price - Basement {ajuemFbXaL}")
    df.NeedToReplace4 = df.NeedToReplace4.replace({'NO VALUE': ""})
    del df['PRICE']
    df = df.rename(columns={'NeedToReplace': ''})
    df = df.rename(columns={'NeedToReplace1': ' '})
    df = df.rename(columns={'NeedToReplace2': '  '})
    df = df.rename(columns={'NeedToReplace3': '   '})
    df = df.rename(columns={'NeedToReplace4': '    '})
    df = df.rename(columns={'NeedToReplace5': '     '})

    df.CATEGORY.replace('NO VALUE',df.Note.shift(1),inplace=True)
    df.SubCategory.replace('NO VALUE',df.Name.shift(1),inplace=True)

    pd.set_option('display.max_rows', df.shape[0]+1)
    pd.set_option('display.max_colwidth', None)



browseButton_Excel = tk.Button(text='Select Excel File', command=getExcel, bg='green', fg='white', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 150, window=browseButton_Excel)

root.mainloop()

df.reset_index(drop=True)
df.to_excel(r'C:\Users\Larso\Desktop\ClearEstimatesEstimate\LeapPriceGuideExport.xlsx', sheet_name='Price Guide', index = False)

file1 = pd.read_excel("LeapPriceGuideExport.xlsx")
file2 = pd.read_excel("test.xlsx")

file3 = file1.merge(file2, on="ID", how="outer")

file3.to_excel("merged.xlsx")

Это мой текущий код выше, я редактирую файл Excel в go в существующий файл .xlsx, но каждый раз, когда я пытаюсь объединить файлы, я получаю код ошибки

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'LeapPriceGuideExport.xlsx'

Я ясно вижу файл в папке, но не уверен, что мне не хватает, спасибо, и, пожалуйста, дайте мне знать, если что-то не пришло ясно, я все еще привыкаю писать и задавать вопросы, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...