파일 선택 창을 띄워 파일을 선택하고, 선택한 파일을 읽어서 내용을 출력하는 PyQt5 프로그램입니다. 파일 선택 창은 QFileDialog를 사용합니다.
선택한 파일이 엑셀 파일(.xlsx, .xls)인 경우, 엑셀 내용을 시트별로 읽어와 화면에 출력하고, 텍스트 파일인 경우 텍스트 내용을 그대로 보여주는 PyQt5 프로그램입니다.
엑셀 파일 처리를 위해 openpyxl 또는 pandas 라이브러리를 사용할 수 있습니다. 여기서는 pandas를 이용합니다.
import sys
import os
import pandas as pd
from PyQt5.QtWidgets import (
QApplication, QWidget, QVBoxLayout, QPushButton, QLabel, QFileDialog, QTextEdit
)
class FileHandlerApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 윈도우 설정
self.setWindowTitle("File Handler App")
self.setGeometry(100, 100, 800, 600)
# 레이아웃 설정
layout = QVBoxLayout()
# 파일 선택 버튼
self.select_button = QPushButton("Select File", self)
self.select_button.clicked.connect(self.select_file)
layout.addWidget(self.select_button)
# 파일 경로 표시
self.file_path_label = QLabel("No file selected", self)
layout.addWidget(self.file_path_label)
# 파일 내용 표시
self.file_content = QTextEdit(self)
self.file_content.setReadOnly(True)
layout.addWidget(self.file_content)
# 레이아웃 적용
self.setLayout(layout)
def select_file(self):
# 파일 선택 창 띄우기
options = QFileDialog.Options()
options |= QFileDialog.ReadOnly
file_path, _ = QFileDialog.getOpenFileName(
self, "Select File", "", "All Files (*);;Excel Files (*.xlsx *.xls);;Text Files (*.txt)", options=options
)
if file_path:
# 선택한 파일 경로 표시
self.file_path_label.setText(f"Selected File: {file_path}")
# 파일 확장자 확인
_, file_extension = os.path.splitext(file_path)
# 파일 처리
if file_extension in [".xlsx", ".xls"]:
self.read_excel(file_path)
elif file_extension == ".txt":
self.read_text(file_path)
else:
self.file_content.setText("Unsupported file type. Please select an Excel or text file.")
def read_text(self, file_path):
"""텍스트 파일을 읽어와 화면에 표시"""
try:
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
self.file_content.setText(content)
except Exception as e:
self.file_content.setText(f"Error reading file: {str(e)}")
def read_excel(self, file_path):
"""엑셀 파일을 읽어와 화면에 표시"""
try:
excel_data = pd.ExcelFile(file_path) # 엑셀 파일 읽기
content = "Excel File Content:\n\n"
# 시트별로 데이터 읽기
for sheet_name in excel_data.sheet_names:
content += f"Sheet: {sheet_name}\n"
sheet_data = excel_data.parse(sheet_name).head(10) # 각 시트의 첫 10행 읽기
content += sheet_data.to_string(index=False)
content += "\n\n"
self.file_content.setText(content)
except Exception as e:
self.file_content.setText(f"Error reading Excel file: {str(e)}")
# 프로그램 실행
if __name__ == "__main__":
app = QApplication(sys.argv)
window = FileHandlerApp()
window.show()
sys.exit(app.exec_())
'프로그래밍 > Python' 카테고리의 다른 글
[python] Django 설치, 프로젝트 생성 (0) | 2025.01.24 |
---|---|
[python] Django 설치, 설치 확인 (0) | 2025.01.22 |
[python] 파이썬 가상환경 , 프로젝트 이식성, 패키지 목록 저장, 설치 (1) | 2025.01.22 |
[python] Scatter plot animated using python, ffmpeg (0) | 2025.01.16 |
[python] 정렬 알고리즘 실행 시 비용 계산은 보통 실행 시간(시간 복잡도)이나 작업 횟수를 측정 (0) | 2025.01.15 |