import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QPushButton, QFileDialog, QMessageBox import pandas as pd import pymongo class FilePicker(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('北大荒更改设备信息') self.setGeometry(600, 600, 400, 400) layout = QVBoxLayout() # 创建一个输入框和按钮 self.filepath_edit = QLineEdit(self) layout.addWidget(self.filepath_edit) self.select_button = QPushButton('选择文件', self) self.select_button.clicked.connect(self.openFileDialog) layout.addWidget(self.select_button) self.setLayout(layout) def openFileDialog(self): # 打开文件对话框 options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog filename, _ = QFileDialog.getOpenFileName(self, "选择文件", "", "All Files (*);;Python Files (*.py)", options=options) if filename: myclient = pymongo.MongoClient("mongodb://{0}:{1}@10.5.64.238:57017/".format("root","yfkj2024")) db = myclient.smartfarming sa_device = db.sa_device self.filepath_edit.setText(filename) df = pd.read_excel(filename, sheet_name="北大荒ID记录表") df = df[["云飞ID", "北大荒ID", "农场简称"]] is_exist = 0 for k in df.to_dict(orient='records'): yf_id = k["云飞ID"] bdh_id = k["北大荒ID"] farm_name = k["农场简称"] if "/" not in str(yf_id): update = sa_device.update_one( {"device_id":{"$regex": k["云飞ID"]}, "device_name": {"$eq": ""}}, {"$set":{"device_name":k["农场简称"] + k["北大荒ID"]}} ) print(update.modified_count) self.process_file(filename) def process_file(self, file_path): # 这里可以编写处理文件的逻辑,示例中简单打印文件路径 print(f'选择的文件路径:{file_path}') # 处理完成后弹出消息框提示 QMessageBox.information(self, '处理完成', '文件处理完成!') if __name__ == '__main__': app = QApplication(sys.argv) ex = FilePicker() ex.show() sys.exit(app.exec_())