복붙노트

[PYTHON] Python에서 Openpyxl을 사용하여 기존 Excel 파일 수정

PYTHON

Python에서 Openpyxl을 사용하여 기존 Excel 파일 수정

기본적으로 CSV 파일에서 특정 열을 복사하여 붙여 넣으려고합니다. 기존 엑셀 파일 [*. xlsx]에서 파이썬을 사용하여. 예를 들어, 다음과 같은 CSV 파일이 있다고 가정 해보십시오.

 col_1   col_2   col_3  col_4
  1        2       3     4
  5        6       7     8
  9       10      11    12 

그래서, 나는 col_3과 col_4를 모두 복사하여 기존 엑셀 파일 [.XLSX 형식]의 col_8과 col_9에 붙여 넣기를 원했습니다. 나는 이것을 여러 가지 방법으로 시도해 보았지만 정확한 방법을 찾을 수 없었다.  나는 이런 식으로 시도 :

with open( read_x_csv, 'rb') as f:
    reader = csv.reader(f)
    for row in reader: 
            list1 = row[13] 
            queue1.append(list1)
            list2 = row[14] 
            queue2.append(list2)
            list3 = row[15] 
            queue3.append(list3)
            list4 = row[16] 
            queue4.append(list4)

그리고

 rb = open_workbook("Exact file path.....")
 wb = copy(rb)
 ws = wb.get_sheet(0) 

 row_no = 0

 for item in queue1:
    if(item != ""):
            ii = int(item)
            ws.write(row_no,12,ii) 
            row_no = row_no + 1
            #ws.write(item)
            print item
    else:

            ws.write(row_no,12,item) 
            row_no = row_no + 1

  wb.save("Output.xls") 

하지만이 솔루션의 문제점은 * .XLSX 형식으로 저장할 수 없다는 것입니다. 엄격히 나를 위해 필요합니다.

* .XLSX 형식을 처리 할 수있는 Openpyxl을 사용하려고했지만 기존 Excel 파일을 수정할 수있는 방법을 찾을 수 없습니다. 아무도 이것에 도움을받을 수 있습니까?

의심 :   1) CSV 파일에서 전체 열을 실제로 읽고 배열 / 목록에 저장할 수 있습니까?      파이썬 사용?   2) .XLSX 형식의 기존 Excel 파일을 수정할 수 있습니까?      openpyxl 또는 다른 패키지?

해결법

  1. ==============================

    1.다음 구현을 시도해 볼 수 있습니다.

    다음 구현을 시도해 볼 수 있습니다.

    from openpyxl import load_workbook
    import csv
    def update_xlsx(src, dest):
        #Open an xlsx for reading
        wb = load_workbook(filename = dest)
        #Get the current Active Sheet
        ws = wb.get_active_sheet()
        #You can also select a particular sheet
        #based on sheet name
        #ws = wb.get_sheet_by_name("Sheet1")
        #Open the csv file
        with open(src) as fin:
            #read the csv
            reader = csv.reader(fin)
            #enumerate the rows, so that you can
            #get the row index for the xlsx
            for index,row in enumerate(reader):
                #Assuming space separated,
                #Split the row to cells (column)
                row = row[0].split()
                #Access the particular cell and assign
                #the value from the csv row
                ws.cell(row=index,column=7).value = row[2]
                ws.cell(row=index,column=8).value = row[3]
        #save the csb file
        wb.save(dest)
    
  2. ==============================

    2.

    from openpyxl import load_workbook
    # Class to manage excel data with openpyxl.
    
    class Copy_excel:
        def __init__(self,src):
            self.wb = load_workbook(src)
            self.ws = self.wb.get_sheet_by_name("Sheet1")
            self.dest="destination.xlsx"
    
        # Write the value in the cell defined by row_dest+column_dest         
        def write_workbook(self,row_dest,column_dest,value):
            c = self.ws.cell(row = row_dest, column = column_dest)
            c.value = value
    
        # Save excel file
        def save_excel(self) :  
            self.wb.save(self.dest)
    
  3. from https://stackoverflow.com/questions/13381384/modify-an-existing-excel-file-using-openpyxl-in-python by cc-by-sa and MIT license