|
发表于 2024-3-30 19:27:16
|
显示全部楼层
当然可以!如果你不想使用Pandas库,可以使用Python的标准库来操作Excel文件,例如`openpyxl`库。下面是一个使用`openpyxl`库实现相同功能的示例代码:import sysfrom PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QFileDialogfrom openpyxl import Workbook, load_workbookclass ExcelComparator(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Excel Comparator") self.main_widget = QWidget() self.setCentralWidget(self.main_widget) layout = QVBoxLayout(self.main_widget) # Button to start comparison self.compare_button = QPushButton("开始比较") self.compare_button.clicked.connect(self.compare_and_save) layout.addWidget(self.compare_button) def crawl_data(self, url): # Function to crawl data from a webpage and save it to Excel response = requests.get(url) # Here you should parse the response content and extract the data # For demonstration, let's assume we have the data in a list of tuples data = # Create a new workbook wb = Workbook() ws = wb.active # Write data to worksheet for row in range(len(data)): for col in range(len(data[row])): ws.cell(row=row+1, column=col+1, value=data[row][col]) # Save workbook to Excel file wb.save("web_data.xlsx") def read_sql_data(self): # Function to read data from SQL and save it to Excel # Here you should write code to connect to your SQL database and retrieve data # For demonstration, let's assume we have the data in a list of tuples data = # Create a new workbook wb = Workbook() ws = wb.active # Write data to worksheet for row in range(len(data)): for col in range(len(data[row])): ws.cell(row=row+1, column=col+1, value=data[row][col]) # Save workbook to Excel file wb.save("sql_data.xlsx") def compare_and_save(self): # Function to compare data from Excel sheets and save the differences # Load data from Excel sheets web_wb = load_workbook("web_data.xlsx") sql_wb = load_workbook("sql_data.xlsx") web_ws = web_wb.active sql_ws = sql_wb.active # Find rows in sql_ws that are not present in web_ws diff_rows = [] for row in sql_ws.iter_rows(min_row=2): match = False for compare_row in web_ws.iter_rows(min_row=2): if all(cell.value == compare_cell.value for cell, compare_cell in zip(row, compare_row)): match = True break if not match: diff_rows.append([cell.value for cell in row]) # Create a new workbook for the differences diff_wb = Workbook() diff_ws = diff_wb.active # Write differences to worksheet for row in range(len(diff_rows)): for col in range(len(diff_rows[row])): diff_ws.cell(row=row+1, column=col+1, value=diff_rows[row][col]) # Save workbook with differences to Excel file diff_wb.save("comparison_result.xlsx")if __name__ == "__main__": app = QApplication(sys.argv) window = ExcelComparator() window.show() sys.exit(app.exec())在这个示例中,我们仍然创建了一个名为`ExcelComparator`的主窗口,并使用`openpyxl`库来操作Excel文件。`crawl_data`和`read_sql_data`方法分别用于从网页和SQL数据库中获取数据并保存到Excel文件中。`compare_and_save`方法使用`load_workbook`函数加载之前保存的两个Excel文件,并通过遍历行来找出不相符的数据。然后,创建一个新的工作簿并将差异写入其中,并将该工作簿保存为新的Excel文件。请确保已安装了`openpyxl`库,可以使用以下命令进行安装:pip install openpyxl请注意,在这个示例中,我使用了`openpyxl`库的基本功能,你可以根据自己的需求进一步扩展和优化代码。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|