基于Python和PyQt5实现简易文档格式转换工具

Alice
Alice
发布时间:2026-10-15 | 5人浏览过
原创

本文介绍如何使用Python结合PyQt5和pandas库,开发一个简易的桌面文档格式转换应用。该工具支持将TXT文本文件转换为CSV和Excel格式,通过图形界面实现文件读取、路径设置及格式转换功能,旨在提供无广告、轻量级的本地转换解决方案。

针对市面上文档格式转换软件普遍存在收费或广告过多的问题,作者尝试结合PyQt5进行页面交互开发,并利用pandas库处理数据,从而构思并实现了一个简易的文档格式转换应用。欢迎在评论区分享其他更优的实现方案,共同交流探讨。

需求分析

应用主要实现将.txt格式的纯文本文档转换为.csv格式的文件。

同时支持将.txt格式的纯文本文档转换为.xlsx格式的Excel文件。

开发环境

运行环境指定为python-3.8.x版本。

操作系统环境为windows7系统。

使用的开发工具为pycharm 2021.1 版本。

引用模块

PyQt5库中涉及的相关模块导入。


from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

系统文件操作所需的标准库模块导入。


import sys
import os
import pandas as pd

UI界面代码块

通过setWindowTitle方法设置桌面应用程序的窗口标题。


self.setWindowTitle('文本格式转换器')
grid = QGridLayout()

实例化QTextEdit()组件,用于以文本形式展示文档格式转换时的注意事项,并设置该组件为只读模式。


'''文档转换说明'''
self.text_current_label = QTextEdit()
self.text_current_label.setReadOnly(True)
self.text_current_label.setText(''
                                        '1、txt 文本格式说明:每行数据使用英文状态下的逗号","隔开,txt '
                                        '格式的文档是按照每行数据进行读取的,所以需要按照规则进行换行保证每行的数据格式一致。\n'
                                        '每行数据举例:zhangsan,21,男,98,优秀\n\n'
                                        '2、excel 格式的文档需要事先创建好.xlsx 的空文件(本应用不会自动创建新文件,后期需要可以加上)。\n\n'
                                        '3、csv 格式的文档需要事先创建好 .csv 的空文件(本应用不会自动创建新文件,后期需要可以加上)。')
self.text_current_label.setStyleSheet('color:blue')
self.text_current_label.setMaximumHeight(90)

创建用于读取.txt文本文档的按钮,并将选中的文档路径显示在只读输入框中。具体实现包括创建一个文件读取按钮以及一个用于显示路径的只读输入框。


'''.txt 文件'''

self.txt_file_path = QLineEdit()

self.txt_file_path.setReadOnly(True)

self.txt_file_path_btn = QPushButton()

self.txt_file_path_btn.setText('获取.txt文件')

self.txt_file_path_btn.clicked.connect(self.txt_file_path_btn_click)

参照上述逻辑,分别设计用于读取.csv文件和.xlsx文件的页面交互组件。


'''.xlsx 文件'''

self.xlsx_file_path = QLineEdit()

self.xlsx_file_path.setReadOnly(True)

self.xlsx_file_path_btn = QPushButton()

self.xlsx_file_path_btn.setText('获取.xlsx文件')

self.xlsx_file_path_btn.clicked.connect(self.xlsx_file_path_btn_click)

'''.csv 文件'''

self.csv_file_path = QLineEdit()

self.csv_file_path.setReadOnly(True)

self.csv_file_path_btn = QPushButton()

self.csv_file_path_btn.setText('获取.csv文件')

self.csv_file_path_btn.clicked.connect(self.csv_file_path_btn_click)

最后,添加文件转换的目标格式选项(如CSV或Excel),并增加“开始转换”按钮以触发实际的转换执行流程。


'''.xlsx .csv 选项  转换按钮'''

self.xlsx_checkbox = QCheckBox()

self.xlsx_checkbox.setText('.xlsx')

self.csv_checkbox = QCheckBox()

self.csv_checkbox.setText('.csv')

self.trans_btn = QPushButton()

self.trans_btn.setText('开始转换')

self.trans_btn.setStyleSheet('color:green')

self.trans_btn.clicked.connect(self.trans_btn_click)

上述内容构成了主要的UI界面设计部分。

格式转换主要代码块

首先读取.txt文本文档内容,并将其转换为DataFrame数据格式存储于变量中,供后续的格式转换逻辑调用。


 def read_txt_for_dataframe(self):

        self.columns = []

        if self.data_frame_columns_text.text().strip() != '' and self.data_frame_columns_text.text().find(',') != -1:

            self.columns = self.data_frame_columns_text.text().split(',')

            self.data_frame = pd.read_csv(self.txt_file_path.text(), encoding='utf-8', index_col=0, names=self.columns)

            print(self.data_frame)

        elif self.data_frame_columns_text.text().strip() != '' and self.data_frame_columns_text.text().find(',') == -1:

            self.warn_dialog_msg('请正确填写数据列!')

        else:

            self.data_frame = pd.read_csv(self.txt_file_path.text(), encoding='utf-8', index_col=0)

            print(self.data_frame)

调用pandas模块提供的to_csv函数,将DataFrame数据保存为.csv格式的文件。


  def dataframe_to_csv(self):
        self.data_frame.to_csv(self.csv_file_path.text())

调用pandas模块提供的to_excel函数,将DataFrame数据保存为.xlsx格式的文件。


  def dataframe_to_xlsx(self):       
    self.data_frame.to_excel(self.xlsx_file_path.text())

效果展示

界面设计风格简洁,整体应用界面布局如下所示。

以上即为基于Python实现简易文档格式转换器的完整内容,更多关于Python文档格式转换器的技术资料,欢迎查阅本站其他相关文章。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表