本文档总结了 ExcelGridConverter.py
脚本所涉及的关键 Python 知识点。该脚本用于从多个 Excel 文件中提取特定格式的数据并转换为一个新的 Excel 文件。
导入库
脚本使用了以下主要库:
tkinter
:用于创建图形用户界面。pandas
:用于处理 Excel 数据。os
:用于处理文件和目录路径。
import tkinter as tk from tkinter import filedialog, messagebox import pandas as pd import os
Pandas 数据处理
读取 Excel 文件
使用 pd.read_excel
方法读取 Excel 文件,并使用 sheet_name=None
参数读取所有工作表。添加 index_col=None
参数以确保第一列不会被自动设置为索引列。
source_df = pd.read_excel(file_path, sheet_name=None, index_col=None) source_data = source_df['一格一案']
数据提取
通过 Pandas 的 iloc
方法,根据行列索引提取特定数据。
result_data = { '网格编号': source_data.iloc[1, 1], '责任段': source_data.iloc[1, 3], ... }
处理合并单元格数据:
risk_check_path = "\n".join(source_data.iloc[9:19, 1].dropna().astype(str)) result_data['五、风险项点检查路径'] = risk_check_path
创建 DataFrame 并导出为 Excel 文件
将所有提取的数据放入一个 DataFrame 中,并使用 to_excel
方法导出为 Excel 文件。
result_df = pd.DataFrame(all_data) result_df.to_excel(output_file_path, index=False)
Tkinter GUI 界面
创建主窗口
使用 tk.Tk
创建主窗口,并设置窗口标题、大小和位置。
root = tk.Tk() root.title("Excel 转换工具") root.geometry(f'{window_width}x{window_height}+{position_right}+{position_top}')
创建按钮和标签
使用 tk.Button
和 tk.Label
创建按钮和标签,并设置其属性和布局。
title_label = tk.Label(root, text="Excel 转换工具", font=("Arial", 18)) title_label.pack(pady=20) select_button = tk.Button(root, text="选择 Excel 文件", command=select_files, font=("Arial", 12)) select_button.pack(pady=10)
文件操作
文件对话框
使用 filedialog.askopenfilenames
打开文件选择对话框,允许用户选择多个 Excel 文件。使用 filedialog.asksaveasfilename
打开文件保存对话框,允许用户选择保存路径。
file_paths = filedialog.askopenfilenames(filetypes=[("Excel 文件", "*.xlsx")]) output_file_path = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel 文件", "*.xlsx")])
主要函数解释
transform_to_result_format_specific
该函数从源数据中提取特定字段,并返回一个字典格式的结果数据。
def transform_to_result_format_specific(source_data, source_file_path): risk_check_path = "\n".join(source_data.iloc[9:19, 1].dropna().astype(str)) result_data = { ... } return result_data
select_files
该函数处理文件选择、数据转换和结果保存的主要逻辑。
def select_files(): file_paths = filedialog.askopenfilenames(filetypes=[("Excel 文件", "*.xlsx")]) all_data = [] for file_path in file_paths: source_df = pd.read_excel(file_path, sheet_name=None, index_col=None) source_data = source_df['一格一案'] transformed_data = transform_to_result_format_specific(source_data, file_path) all_data.append(transformed_data) result_df = pd.DataFrame(all_data) output_file_path = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel 文件", "*.xlsx")]) if output_file_path: result_df.to_excel(output_file_path, index=False) messagebox.showinfo("成功", "文件已成功转换并保存。")
总结
通过本脚本,我们学习了如何使用 Pandas 读取和处理 Excel 数据,如何使用 Tkinter 创建图形用户界面,以及如何处理文件对话框和文件操作。这些知识点在日常的 Python 开发中非常实用,特别是涉及数据处理和用户界面的项目中。