Python打造Excel与JSON转换工具全攻略(从开发到打包)

Written by

in

文章目录
  • 在日常工作中,我经常需要处理 Excel 文件(.xlsx 或 .xls),并将其中的数据转换为 JSON 格式使用。手动转换既耗时又容易出错,因此我决定开发一个自动化的工具,这个工具的目标是: 提供简单易用的图形界面 支持常见的 Excel 文件格式 能够处理包含中文字符的数据 允许用户复制转换后的 JSON 数据到剪贴板
  • 为了实现这个工具,我选择了以下技术栈: Python:作为主要编程语言,因其简洁的语法和丰富的库生态 tkinter:Python 自带的 GUI 库,适合快速开发简单的桌面应用 pandas:强大的数据处理库,能够轻松读取 Excel 文件并转换为 JSON pyperclip:用于实现复制功能,将 JSON 数据复制到剪贴板 openpyxl:作为 pandas 的引擎,用于读取 Excel 文件 PyInstaller:打包工具,打包成了独立的可执行文件 ExcelToJsonPro.exe
  • 以下是完整的工具代码,文件名为 excelTojson.py: import tkinter as tk from tkinter import filedialog, messagebox import pandas as pd import pyperclip class ExcelToJsonConverter: def __init__(self, root): self.root = root self.root.title(“Excel to JSON Converter”) self.root.geometry(“600×400″) # 初始化变量 self.file_path = None self.json_data = None # 创建UI组件 self.create_widgets() def create_widgets(self): # 上传按钮 self.upload_btn = tk.Button( self.root, text=”上传Excel文件”, command=self.upload_excel, bg=”#4CAF50″, fg=”white”, font=(“Arial”, 12) ) self.upload_btn.pack(pady=20) # 文件路径显示 self.file_path_label = tk.Label( self.root, text=”未选择文件”, font=(“Arial”, 10) ) self.file_path_label.pack() # 转换按钮(初始禁用) self.convert_btn = tk.Button( self.root, text=”转换为JSON”, command=self.convert_to_json, state=tk.DISABLED, bg=”#2196F3″, fg=”white”, font=(“Arial”, 12) ) self.convert_btn.pack(pady=10) # JSON显示文本框 self.json_text = tk.Text( self.root, height=10, width=70, font=(“Consolas”, 10) ) self.json_text.pack(pady=10, padx=10) # 复制按钮(初始禁用) self.copy_btn = tk.Button( self.root, text=”复制JSON到剪贴板”, command=self.copy_json, state=tk.DISABLED, bg=”#FF9800″, fg=”white”, font=(“Arial”, 12) ) self.copy_btn.pack(pady=10) def upload_excel(self): file_path = filedialog.askopenfilename( title=”选择Excel文件”, filetypes=[(“Excel文件”, “*.xlsx *.xls”), (“所有文件”, “*.*”)] ) if file_path: self.file_path = file_path self.file_path_label.config(text=file_path) self.convert_btn.config(state=tk.NORMAL) self.copy_btn.config(state=tk.DISABLED) self.json_text.delete(1.0, tk.END) def convert_to_json(self): if not self.file_path: messagebox.showerror(“错误”, “请先选择Excel文件”) return try: # 读取Excel文件 df = pd.read_excel(self.file_path, engine=’openpyxl’) # 转换为JSON格式 json_data = df.to_json(orient=”records”, indent=4, force_ascii=False) # 显示JSON数据 self.json_text.delete(1.0, tk.END) self.json_text.insert(tk.END, json_data) # 启用复制按钮并保存JSON数据 self.copy_btn.config(state=tk.NORMAL) self.json_data = json_data except Exception as e: messagebox.showerror(“错误”, f”转换失败:n{str(e)}”) self.copy_btn.config(state=tk.DISABLED) def copy_json(self): if not self.json_data: messagebox.showerror(“错误”, “没有可复制的JSON数据”) return try: pyperclip.copy(self.json_data) messagebox.showinfo(“成功”, “JSON已复制到剪贴板!”) except Exception as e: messagebox.showerror(“错误”, f”复制失败:n{str(e)}”) if __name__ == “__main__”: root = tk.Tk() app = ExcelToJsonConverter(root) root.mainloop()
  • 安装必要的依赖库: pip install pandas openpyxl pyperclip 运行程序: python excelTojson.py 为了方便用户使用,我使用 PyInstaller 将工具打包成了独立的可执行文件 ExcelToJsonPro.exe。以下是具体的打包步骤: 安装 PyInstaller 首先,确保安装了 PyInstaller: pip install pyinstaller 打包命令 在命令行中导航到包含 excelTojson.py 文件的目录,然后运行以下命令进行打包: pyinstaller –onefile –windowed –name ExcelToJsonPro excelTojson.py 命令参数解释: –onefile:将所有依赖打包到一个单独的 .exe 文件中,便于分发。 –windowed:生成一个没有终端窗口的 GUI 应用程序。 –name ExcelToJsonPro:指定生成的可执行文件的名称为 ExcelToJsonPro.exe。 生成的文件位置 打包完成后,ExcelToJsonPro.exe 文件会出现在项目目录下的 dist 文件夹中。 验证打包结果 在 dist 文件夹中找到生成的 ExcelToJsonPro.exe 文件,双击运行,确保程序能够正常启动并运行所有功能。 以上就是Python打造Excel与JSON转换工具全攻略(从开发到打包)的详细内容,更多关于Python Excel转JSON的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: Python实现将Excel转换为json的方法示例 基于python实现把json数据转换成Excel表格 利用插件和python实现Excel转json的两种办法 python实现将Excel文件转换为JSON文件 Python使用pandas读取Excel并选取列转json Python实现读取Excel表数据并转为JSON格式文件
  • 目录
    • 项目背景与目标
    • 技术选型
    • 开发过程
      • 创建基本窗口
      • 设计用户界面
      • 实现文件上传功能
      • 实现文件转换功能
      • 实现复制功能
    • 完整代码
      • 使用说明

        为满足工作场景下 Excel 到 JSON 的转换需求,我开发了一款实用工具,以此提升了工作效率并深入学习 Python 文件处理与 GUI 开发技术,以下是从开发到打包的完整过程分享。

        效果图如下:

        在日常工作中,我经常需要处理 Excel 文件(.xlsx 或 .xls),并将其中的数据转换为 JSON 格式使用。手动转换既耗时又容易出错,因此我决定开发一个自动化的工具,这个工具的目标是:

        • 提供简单易用的图形界面
        • 支持常见的 Excel 文件格式
        • 能够处理包含中文字符的数据
        • 允许用户复制转换后的 JSON 数据到剪贴板

        为了实现这个工具,我选择了以下技术栈:

        • Python:作为主要编程语言,因其简洁的语法和丰富的库生态
        • tkinter:Python 自带的 GUI 库,适合快速开发简单的桌面应用
        • pandas:强大的数据处理库,能够轻松读取 Excel 文件并转换为 JSON
        • pyperclip:用于实现复制功能,将 JSON 数据复制到剪贴板
        • openpyxl:作为 pandas 的引擎,用于读取 Excel 文件
        • PyInstaller:打包工具,打包成了独立的可执行文件 ExcelToJsonPro.exe

        首先,我创建了一个基本的 tkinter 窗口,设置窗口标题和大小:

        import tkinter as tk
        
        class ExcelToJsonConverter:
            def __init__(self, root):
                self.root = root
                self.root.title("Excel to JSON Converter")
                self.root.geometry("600x400")
        
        if __name__ == "__main__":
            root = tk.Tk()
            app = ExcelToJsonConverter(root)
            root.mainloop()
        

        接下来,我设计了工具的用户界面,包括上传按钮、文件路径显示、转换按钮、JSON 显示区域和复制按钮:

        def create_widgets(self):
            # 上传按钮
            self.upload_btn = tk.Button(
                self.root,
                text="上传Excel文件",
                command=self.upload_excel,
                bg="#4CAF50",
                fg="white",
                font=("Arial", 12)
            )
            self.upload_btn.pack(pady=20)
        
            # 文件路径显示
            self.file_path_label = tk.Label(
                self.root,
                text="未选择文件",
                font=("Arial", 10)
            )
            self.file_path_label.pack()
        
            # 转换按钮(初始禁用)
            self.convert_btn = tk.Button(
                self.root,
                text="转换为JSON",
                command=self.convert_to_json,
                state=tk.DISABLED,
                bg="#2196F3",
                fg="white",
                font=("Arial", 12)
            )
            self.convert_btn.pack(pady=10)
        
            # JSON显示文本框
            self.json_text = tk.Text(
                self.root,
                height=10,
                width=70,
                font=("Consolas", 10)
            )
            self.json_text.pack(pady=10, padx=10)
        
            # 复制按钮(初始禁用)
            self.copy_btn = tk.Button(
                self.root,
                text="复制JSON到剪贴板",
                command=self.copy_json,
                state=tk.DISABLED,
                bg="#FF9800",
                fg="white",
                font=("Arial", 12)
            )
            self.copy_btn.pack(pady=10)
        

        我使用 tkinter.filedialog 实现了文件选择功能,并在选择文件后更新界面状态:

        def upload_excel(self):
            file_path = filedialog.askopenfilename(
                title="选择Excel文件",
                filetypes=[("Excel文件", "*.xlsx *.xls"), ("所有文件", "*.*")]
            )
        
            if file_path:
                self.file_path = file_path
                self.file_path_label.config(text=file_path)
                self.convert_btn.config(state=tk.NORMAL)
                self.copy_btn.config(state=tk.DISABLED)
                self.json_text.delete(1.0, tk.END)
        
        

        这是整个工具的核心部分,我使用 pandas 库读取 Excel 文件并转换为 JSON:

        def convert_to_json(self):
            if not self.file_path:
                messagebox.showerror("错误", "请先选择Excel文件")
                return
        
            try:
                # 读取Excel文件
                df = pd.read_excel(self.file_path, engine='openpyxl')
        
                # 转换为JSON格式
                json_data = df.to_json(orient="records", indent=4, force_ascii=False)
        
                # 显示JSON数据
                self.json_text.delete(1.0, tk.END)
                self.json_text.insert(tk.END, json_data)
        
                # 启用复制按钮并保存JSON数据
                self.copy_btn.config(state=tk.NORMAL)
                self.json_data = json_data
        
            except Exception as e:
                messagebox.showerror("错误", f"转换失败:n{str(e)}")
                self.copy_btn.config(state=tk.DISABLED)
        
        

        最后,我实现了将 JSON 数据复制到剪贴板的功能:

        def copy_json(self):
            if not self.json_data:
                messagebox.showerror("错误", "没有可复制的JSON数据")
                return
        
            try:
                pyperclip.copy(self.json_data)
                messagebox.showinfo("成功", "JSON已复制到剪贴板!")
            except Exception as e:
                messagebox.showerror("错误", f"复制失败:n{str(e)}")
        
        

        以下是完整的工具代码,文件名为 excelTojson.py:

        import tkinter as tk
        from tkinter import filedialog, messagebox
        import pandas as pd
        import pyperclip
        
        class ExcelToJsonConverter:
            def __init__(self, root):
                self.root = root
                self.root.title("Excel to JSON Converter")
                self.root.geometry("600x400")
        
                # 初始化变量
                self.file_path = None
                self.json_data = None
        
                # 创建UI组件
                self.create_widgets()
        
            def create_widgets(self):
                # 上传按钮
                self.upload_btn = tk.Button(
                    self.root,
                    text="上传Excel文件",
                    command=self.upload_excel,
                    bg="#4CAF50",
                    fg="white",
                    font=("Arial", 12)
                )
                self.upload_btn.pack(pady=20)
        
                # 文件路径显示
                self.file_path_label = tk.Label(
                    self.root,
                    text="未选择文件",
                    font=("Arial", 10)
                )
                self.file_path_label.pack()
        
                # 转换按钮(初始禁用)
                self.convert_btn = tk.Button(
                    self.root,
                    text="转换为JSON",
                    command=self.convert_to_json,
                    state=tk.DISABLED,
                    bg="#2196F3",
                    fg="white",
                    font=("Arial", 12)
                )
                self.convert_btn.pack(pady=10)
        
                # JSON显示文本框
                self.json_text = tk.Text(
                    self.root,
                    height=10,
                    width=70,
                    font=("Consolas", 10)
                )
                self.json_text.pack(pady=10, padx=10)
        
                # 复制按钮(初始禁用)
                self.copy_btn = tk.Button(
                    self.root,
                    text="复制JSON到剪贴板",
                    command=self.copy_json,
                    state=tk.DISABLED,
                    bg="#FF9800",
                    fg="white",
                    font=("Arial", 12)
                )
                self.copy_btn.pack(pady=10)
        
            def upload_excel(self):
                file_path = filedialog.askopenfilename(
                    title="选择Excel文件",
                    filetypes=[("Excel文件", "*.xlsx *.xls"), ("所有文件", "*.*")]
                )
        
                if file_path:
                    self.file_path = file_path
                    self.file_path_label.config(text=file_path)
                    self.convert_btn.config(state=tk.NORMAL)
                    self.copy_btn.config(state=tk.DISABLED)
                    self.json_text.delete(1.0, tk.END)
        
            def convert_to_json(self):
                if not self.file_path:
                    messagebox.showerror("错误", "请先选择Excel文件")
                    return
        
                try:
                    # 读取Excel文件
                    df = pd.read_excel(self.file_path, engine='openpyxl')
        
                    # 转换为JSON格式
                    json_data = df.to_json(orient="records", indent=4, force_ascii=False)
        
                    # 显示JSON数据
                    self.json_text.delete(1.0, tk.END)
                    self.json_text.insert(tk.END, json_data)
        
                    # 启用复制按钮并保存JSON数据
                    self.copy_btn.config(state=tk.NORMAL)
                    self.json_data = json_data
        
                except Exception as e:
                    messagebox.showerror("错误", f"转换失败:n{str(e)}")
                    self.copy_btn.config(state=tk.DISABLED)
        
            def copy_json(self):
                if not self.json_data:
                    messagebox.showerror("错误", "没有可复制的JSON数据")
                    return
        
                try:
                    pyperclip.copy(self.json_data)
                    messagebox.showinfo("成功", "JSON已复制到剪贴板!")
                except Exception as e:
                    messagebox.showerror("错误", f"复制失败:n{str(e)}")
        
        
        if __name__ == "__main__":
            root = tk.Tk()
            app = ExcelToJsonConverter(root)
            root.mainloop()
        
        

        安装必要的依赖库:

        pip install pandas openpyxl pyperclip
        

        运行程序:

        python excelTojson.py
        

        为了方便用户使用,我使用 PyInstaller 将工具打包成了独立的可执行文件 ExcelToJsonPro.exe。以下是具体的打包步骤:

        安装 PyInstaller

        首先,确保安装了 PyInstaller:

        pip install pyinstaller
        

        打包命令 在命令行中导航到包含 excelTojson.py 文件的目录,然后运行以下命令进行打包:

        pyinstaller --onefile --windowed --name ExcelToJsonPro excelTojson.py
        

        命令参数解释:

        • –onefile:将所有依赖打包到一个单独的 .exe 文件中,便于分发。
        • –windowed:生成一个没有终端窗口的 GUI 应用程序。
        • –name ExcelToJsonPro:指定生成的可执行文件的名称为 ExcelToJsonPro.exe。

        生成的文件位置

        打包完成后,ExcelToJsonPro.exe 文件会出现在项目目录下的 dist 文件夹中。

        验证打包结果

        在 dist 文件夹中找到生成的 ExcelToJsonPro.exe 文件,双击运行,确保程序能够正常启动并运行所有功能。

        以上就是Python打造Excel与JSON转换工具全攻略(从开发到打包)的详细内容,更多关于Python Excel转JSON的资料请关注风君子博客其它相关文章!

        您可能感兴趣的文章:

        • Python实现将Excel转换为json的方法示例
        • 基于python实现把json数据转换成Excel表格
        • 利用插件和python实现Excel转json的两种办法
        • python实现将Excel文件转换为JSON文件
        • Python使用pandas读取Excel并选取列转json
        • Python实现读取Excel表数据并转为JSON格式文件

        站内搜索