-
自制文档格式转换器,支持 .txt/.xlsx/.csv格式转换...
需求分析
1、将 .txt 的文本文档转换成 csv 格式文件。
2、将 .txt 的文本文档转换成 excel 格式文件。
开发环境
1、运行环境:python-3.8.x版本
2、操作系统:windows7 系统
3、开发工具: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界面代码块
设置桌面应用标题
self.setWindowTitle('文本格式转换器')
grid = QGridLayout()
创建一个 QTextEdit(),将应用中文档格式转换中需要注意的地方以文本的形式进行说明并将其设置为只读模式。
'''文档转换说明'''
self.text_current_label = QTextEdit()
self.text_current_label.setReadOnly(True)
self.text_current_label.setText(''
'1、txt 文本格式说明:每行数据使用英文状态下的逗号","隔开,txt '
'格式的文档是按照每行数据进行读取的,所以需要按照规则进行换行保证每行的数据格式一致。
'
'每行数据举例:zhangsan,21,男,98,优秀
'
'2、excel 格式的文档需要事先创建好.xlsx 的空文件(本应用不会自动创建新文件,后期需要可以加上)。
'
'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 文件和 excel 文件的读取页面设计。
'''.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)
最后,加上文件转换的可选项设计,再添加开始转换的按钮提供应用转换的开始执行的效果。
'''.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 模块提供的 csv 文件保存函数进行 .csv 格式的文件保存。
def dataframe_to_csv(self):
self.data_frame.to_csv(self.csv_file_path.text())
使用 pandas 模块提供的 excel 文件保存函数进行 .xlsx 格式的文件保存。
def dataframe_to_xlsx(self):
self.data_frame.to_excel(self.xlsx_file_path.text())
效果展示
界面风格比较简单,看一下整个应用界面设计是这样的。
效果操作前往全文查看......
出处:https://www.cnblogs.com/lwsbc/p/15725910.html
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式