본문 바로가기

공부/Python

[Python]여러 엑셀 파일 불러와서 저장하기

반응형

1. PyCharm 을 실행

2. 프로젝트를 생성

3. UI 폴더를 생성

 

설치 경로에서 -> Anaconda3\Library\bin 에 있는 QT Designer 를 실행합니다.

 

1. 프로젝트 안 에 UI 폴더에 저장한다.

2. ui 파일을 py 파일로 변환한다.

pyuic5 -x UI/exel_ui.ui -o UI/exel_ui_py.py

이렇게 만들어진다.

 

pip install easygui
pip install openpyxl

이렇게 2개를 설치한다.

첫번째는 파일 및 폴더창 띄울때 사용된다.

두번째는 엑셀 관련 설치 파일이다.

 

 

import sys
import easygui
import openpyxl
import os
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QDialog
from UI.exel_ui_py import *


class Main_diglog(QDialog, Ui_Dialog):
    def __init__(self):
        super().__init__()
        self.setupUi(Dialog)
        self.cont_slot()
        # 변수
        self.Save_Folder = ""
        self.Save_File = []

    def cont_slot(self):
        self.toolButton.clicked.connect(self.tool_btn_slot)
        self.toolButton_2.clicked.connect(self.tool2_btn_slot)
        self.pushButton.clicked.connect(self.Exel_Edit)

    def Exel_Edit(self):
        results = []
        for f in self.Save_File:
            wb = openpyxl.load_workbook(filename=f, data_only=True)
            ws = wb.active

            result = []
            result.append(ws['A1'].value)
            result.append(ws['B2'].value)
            result.append(ws['C3'].value)
            results.append(result)
        print(results)

        wb = openpyxl.Workbook()
        ws = wb.active
        for i in results:
            ws.append(i)

        wb.save(self.Save_Folder)

    # slot def #
    @pyqtSlot()
    def tool_btn_slot(self):
        path = easygui.fileopenbox(multiple=True)
        self.Save_File = path
        model = QStandardItemModel()
        for p in path:
            model.appendRow(QStandardItem(p))

        self.listView.setModel(model)

    @pyqtSlot()
    def tool2_btn_slot(self):
        self.Save_Folder =easygui.diropenbox() + "\\results.xlsx"
        self.lineEdit.setText((self.Save_Folder))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Main_diglog()
    Dialog.show()

    sys.exit(app.exec_())

 

결과

 

이렇게 2개의 파일에서 설정한 곳에 셀만 뽑아서 한개로 합치는 프로그램 입니다.

반응형

'공부 > Python' 카테고리의 다른 글

2.[Dialog]Qt Designer + PyQt5  (0) 2021.05.06
1.[Button]Qt Designer + PyQt5  (0) 2021.05.06
11. [Python] print 기본 사용  (0) 2020.03.31
10. [Python] ini 설정값 (configparser)  (0) 2020.02.20
python 파일 모드  (0) 2020.02.19