![](https://img-blog.csdnimg.cn/img_convert/fd00df9b56c31b9bffe1380ba6227d96.png)
![](https://img-blog.csdnimg.cn/img_convert/71f96ac87354ff78a6767eb77f80d2a5.png)
![](https://img-blog.csdnimg.cn/img_convert/c92c19ab73eb9714362218ef80d426c6.png)
新建excel_utils.py文件:
import pandas as pd
import os
def merge_excels(excel_paths, output_path):
"""
合并不同的excel到一个
:param excel_paths: 列表,多个excel路径
:param output_path: 合并后的excel路径
"""
df_list = []
for excel_path in excel_paths:
if not os.path.exists(excel_path):
continue
cont = pd.read_excel(excel_path)
df_list.append(cont)
df_all = pd.concat(df_list)
df_all.to_excel(output_path, index=False)
if __name__ == "__main__":
excel_paths = ["./test1.xlsx", './test2.xlsx']
output_path = 'test.xlsx'
merge_excels(excel_paths, output_path)
Qt设计师设计UI界面,记得修改窗体和控件的object属性和改变样式表
![](https://img-blog.csdnimg.cn/img_convert/b8bce5f84a7b67e79a663b8ba42e2a39.png)
改变样式表的内容为:
![](https://img-blog.csdnimg.cn/img_convert/ad8648067ff5c306e89b99c4e6c73979.png)
QPushButton{
font-size:16px;
color:rgb(255, 255, 255);
background-color:rgb(255, 0, 255)
}
QLabel{
font-size:16px;
font-weight:bold;
}
新建excel_merger_main.py
import os
import sys
from PyQt6.QtWidgets import QApplication, QDialog, QFileDialog, QMessageBox
import excel_merger
import excel_utils
class MyExcelMerger(excel_merger.Ui_ExcelMerger, QDialog):
def __init__(self):
super(MyExcelMerger, self).__init__()
self.setupUi(self)
self.show()
self.pushButton_choose_dir.clicked.connect(self.do_choose_dir)
self.pushButton_remove_excel.clicked.connect(self.do_remove_excel)
self.pushButton_domerge_andsave.clicked.connect(self.do_merge_and_save)
def do_choose_dir(self):
file_dir = QFileDialog.getExistingDirectory(self, "请选择目录", os.getcwd())
self.lineEdit_dirpath.setText(file_dir)
excel_paths = []
for fname in os.listdir(file_dir):
if fname.startswith('~$'):
continue
if fname.endswith('.xlsx'):
excel_paths.append(os.path.join(file_dir, fname))
self.listWidget_excel_path.clear()
self.listWidget_excel_path.addItems(excel_paths)
def do_remove_excel(self):
item = self.listWidget_excel_path.currentItem()
if item:
row = self.listWidget_excel_path.row(item)
self.listWidget_excel_path.takeItem(row)
def do_merge_and_save(self):
if self.listWidget_excel_path.count() == 0:
QMessageBox.warning(self, "信息提示", '要合并的列表为空')
return
excel_paths = []
for idx in range(self.listWidget_excel_path.count()):
item = self.listWidget_excel_path.item(idx)
excel_paths.append(item.text())
output_path, file_type = QFileDialog.getSaveFileName(self, "请保存文件", os.getcwd(), "Excel files (*.xlsx)")
excel_utils.merge_excels(excel_paths, output_path)
QMessageBox.information(self, "信息提示", '执行成功')
if __name__ == '__main__':
app = QApplication(sys.argv)
myExcelMerger = MyExcelMerger()
sys.exit(app.exec())
运行excel_merger_main.py,选择目录
![](https://img-blog.csdnimg.cn/img_convert/c07ed116c8a43cf1db9da4e6f01a3687.png)
选择要移除的文件,点击移除文件
![](https://img-blog.csdnimg.cn/img_convert/272b03617b62e7b028f6f025916e0a4a.png)
选择保存路径
![](https://img-blog.csdnimg.cn/img_convert/d3e3fd9427c49f687169169b4b479487.png)
执行合并
![](https://img-blog.csdnimg.cn/img_convert/cee289d3f86367d63d0ffabacb862012.png)