присваивать значения ячеек от одного листа другому, используя openpyxl - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть два листа. Из листа 1 мне нужно скопировать 9 значений из столбца и скопировать их на лист 0 в указанном c столбце

Я в основном создаю список с именем BillingValueList из листа 1

Мне нужно скопировать эти элементы списка в ячейки листа 0

Ниже приведен код, с которым я работал

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 14 10:22:16 2020

@author: sp22
"""
from openpyxl import load_workbook
from ConfigDetails import ConfigDetails
import traceback
import sys


class SignOff:
    def __init__(self,billingSummary):
        self.outputFile= billingSummary
        self.indivSheet=0
#        print(":::",self.gwlFileName)
        self.summaryRow=0
        ConfigDetails.logger.info("************Signoff And Wire-Transfer Request Process start***************")
        ConfigDetails.logger.info("Output File::{}".format(self.outputFile))

    def updateSignOff(self):
        ConfigDetails.logger.info("process Signoff Start ")  
        try:
            workbook = load_workbook(filename=self.outputFile)
            workbook.active = 1    
            sheet = workbook.active
#findng month and getting values from sheet 1              
            Month = sheet ['F1']
            print(Month.value)


            for value in sheet.iter_cols(min_row=5,max_row=13,min_col=13,max_col=13,values_only=True):
                BillingValue=value
                BillingValueList = list(BillingValue)
#                print(BillingValue[])
                print(len(BillingValue))            

            workbook.active = 0 
            sheet = workbook.active
#           
#finding Column in signoffsheet (sheet 0 ) from using Month Variable             

            i=0
            for col in sheet.iter_cols():
                for cell in col:
                    if cell.value == Month.value:
                        columnvalue = cell.column
                        print(columnvalue)


                        for [cell] in sheet.iter_rows(min_row=7,max_row=15,min_col=columnvalue,max_col=columnvalue):
                            print(cell)
                            for i in BillingValueList:
                                print('Billing value is' ,i)
                                sheet[cell.value] = i
                                i+1

            return
                           # for i in BillingValueList:


#                            return
#                        return



            workbook.save(filename=self.outputFile)
            ConfigDetails.logger.info(" Process Signoff completed") 


        except Exception:
            print("Error in Trad Parser Processing - Signoff Sheet Error",Exception)
            traceback.print_exc(file=sys.stdout)
            sys.exit()    
  from openpyxl import load_workbook
from ConfigDetails import ConfigDetails
import traceback
import sys


class SignOff:
    def __init__(self,billingSummary):
        self.outputFile= billingSummary
        self.indivSheet=0
#        print(":::",self.gwlFileName)
        self.summaryRow=0
        ConfigDetails.logger.info("************Signoff And Wire-Transfer Request Process start***************")
        ConfigDetails.logger.info("Output File::{}".format(self.outputFile))

    def updateSignOff(self):
        ConfigDetails.logger.info("process Signoff Start ")  
        try:
            workbook = load_workbook(filename=self.outputFile)
            workbook.active = 1    
            sheet = workbook.active
#findng month and getting values from sheet 1              
            Month = sheet ['F1']
            print(Month.value)


            for value in sheet.iter_cols(min_row=5,max_row=13,min_col=13,max_col=13,values_only=True):
                BillingValue=value
                BillingValueList = list(BillingValue)
#                print(BillingValue[])
                print(len(BillingValue))            

            workbook.active = 0 
            sheet = workbook.active
#           
#finding Column in signoffsheet (sheet 0 ) from using Month Variable             

            i=0
            for col in sheet.iter_cols():
                for cell in col:
                    if cell.value == Month.value:
                        columnvalue = cell.column
                        print(columnvalue)

#getting cells which needs to be updated with billingvalue list 
                        for [cell] in sheet.iter_rows(min_row=7,max_row=15,min_col=columnvalue,max_col=columnvalue):
                            print(cell)
                            for i in BillingValueList:
                                print('Billing value is' ,i)
#assigning values to cells 
                                cell.value = i                                

            workbook.save(filename=self.outputFile)
            ConfigDetails.logger.info(" Process Signoff completed") 


        except Exception:
            print("Error in Trad Parser Processing - Signoff Sheet Error",Exception)
            traceback.print_exc(file=sys.stdout)
            sys.exit()    

enter image description here

ValueList присваивается всем ячейкам в правильном столбце на листе 0

, то есть первое значение равно 11181.78, присваивается всем ячейкам в этом столбце, где следует скопировать первое значение в первое ячейка, второе значение из списка во вторую ячейку и т. д. Если вы посмотрите на скриншот, первое значение 11 181 должно быть в ячейке D7, 4567,94 - в ячейке d8 и т. д.

Не уверен, почему это происходит, может Кто-нибудь, помогите мне разобраться в этом

Ниже приведен скриншот моего вывода

...