最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python打造Excel與JSON轉(zhuǎn)換工具全攻略(從開發(fā)到打包)

 更新時間:2025年07月30日 09:52:08   作者:前端Hardy  
為滿足工作場景下 Excel 到 JSON 的轉(zhuǎn)換需求,這篇文章將為大家介紹一下如何使用Python打造Excel與JSON轉(zhuǎn)換工具,希望對大家有所幫助

為滿足工作場景下 Excel 到 JSON 的轉(zhuǎn)換需求,我開發(fā)了一款實用工具,以此提升了工作效率并深入學習 Python 文件處理與 GUI 開發(fā)技術,以下是從開發(fā)到打包的完整過程分享。

效果圖如下:

項目背景與目標

在日常工作中,我經(jīng)常需要處理 Excel 文件(.xlsx 或 .xls),并將其中的數(shù)據(jù)轉(zhuǎn)換為 JSON 格式使用。手動轉(zhuǎn)換既耗時又容易出錯,因此我決定開發(fā)一個自動化的工具,這個工具的目標是:

  • 提供簡單易用的圖形界面
  • 支持常見的 Excel 文件格式
  • 能夠處理包含中文字符的數(shù)據(jù)
  • 允許用戶復制轉(zhuǎn)換后的 JSON 數(shù)據(jù)到剪貼板

技術選型

為了實現(xiàn)這個工具,我選擇了以下技術棧:

  • Python:作為主要編程語言,因其簡潔的語法和豐富的庫生態(tài)
  • tkinter:Python 自帶的 GUI 庫,適合快速開發(fā)簡單的桌面應用
  • pandas:強大的數(shù)據(jù)處理庫,能夠輕松讀取 Excel 文件并轉(zhuǎn)換為 JSON
  • pyperclip:用于實現(xiàn)復制功能,將 JSON 數(shù)據(jù)復制到剪貼板
  • openpyxl:作為 pandas 的引擎,用于讀取 Excel 文件
  • PyInstaller:打包工具,打包成了獨立的可執(zhí)行文件 ExcelToJsonPro.exe

開發(fā)過程

創(chuàng)建基本窗口

首先,我創(chuàng)建了一個基本的 tkinter 窗口,設置窗口標題和大?。?/p>

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()

設計用戶界面

接下來,我設計了工具的用戶界面,包括上傳按鈕、文件路徑顯示、轉(zhuǎn)換按鈕、JSON 顯示區(qū)域和復制按鈕:

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()

    # 轉(zhuǎn)換按鈕(初始禁用)
    self.convert_btn = tk.Button(
        self.root,
        text="轉(zhuǎn)換為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)

實現(xiàn)文件上傳功能

我使用 tkinter.filedialog 實現(xiàn)了文件選擇功能,并在選擇文件后更新界面狀態(tài):

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)

實現(xiàn)文件轉(zhuǎn)換功能

這是整個工具的核心部分,我使用 pandas 庫讀取 Excel 文件并轉(zhuǎn)換為 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')

        # 轉(zhuǎn)換為JSON格式
        json_data = df.to_json(orient="records", indent=4, force_ascii=False)

        # 顯示JSON數(shù)據(jù)
        self.json_text.delete(1.0, tk.END)
        self.json_text.insert(tk.END, json_data)

        # 啟用復制按鈕并保存JSON數(shù)據(jù)
        self.copy_btn.config(state=tk.NORMAL)
        self.json_data = json_data

    except Exception as e:
        messagebox.showerror("錯誤", f"轉(zhuǎn)換失敗:\n{str(e)}")
        self.copy_btn.config(state=tk.DISABLED)

實現(xiàn)復制功能

最后,我實現(xiàn)了將 JSON 數(shù)據(jù)復制到剪貼板的功能:

def copy_json(self):
    if not self.json_data:
        messagebox.showerror("錯誤", "沒有可復制的JSON數(shù)據(jù)")
        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

        # 創(chuàng)建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()

        # 轉(zhuǎn)換按鈕(初始禁用)
        self.convert_btn = tk.Button(
            self.root,
            text="轉(zhuǎn)換為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')

            # 轉(zhuǎn)換為JSON格式
            json_data = df.to_json(orient="records", indent=4, force_ascii=False)

            # 顯示JSON數(shù)據(jù)
            self.json_text.delete(1.0, tk.END)
            self.json_text.insert(tk.END, json_data)

            # 啟用復制按鈕并保存JSON數(shù)據(jù)
            self.copy_btn.config(state=tk.NORMAL)
            self.json_data = json_data

        except Exception as e:
            messagebox.showerror("錯誤", f"轉(zhuǎn)換失敗:\n{str(e)}")
            self.copy_btn.config(state=tk.DISABLED)

    def copy_json(self):
        if not self.json_data:
            messagebox.showerror("錯誤", "沒有可復制的JSON數(shù)據(jù)")
            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 將工具打包成了獨立的可執(zhí)行文件 ExcelToJsonPro.exe。以下是具體的打包步驟:

安裝 PyInstaller

首先,確保安裝了 PyInstaller:

pip install pyinstaller

打包命令 在命令行中導航到包含 excelTojson.py 文件的目錄,然后運行以下命令進行打包:

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

命令參數(shù)解釋:

  • --onefile:將所有依賴打包到一個單獨的 .exe 文件中,便于分發(fā)。
  • --windowed:生成一個沒有終端窗口的 GUI 應用程序。
  • --name ExcelToJsonPro:指定生成的可執(zhí)行文件的名稱為 ExcelToJsonPro.exe。

生成的文件位置

打包完成后,ExcelToJsonPro.exe 文件會出現(xiàn)在項目目錄下的 dist 文件夾中。

驗證打包結(jié)果

在 dist 文件夾中找到生成的 ExcelToJsonPro.exe 文件,雙擊運行,確保程序能夠正常啟動并運行所有功能。

以上就是Python打造Excel與JSON轉(zhuǎn)換工具全攻略(從開發(fā)到打包)的詳細內(nèi)容,更多關于Python Excel轉(zhuǎn)JSON的資料請關注腳本之家其它相關文章!

相關文章

  • pyd文件逆向的方法實現(xiàn)

    pyd文件逆向的方法實現(xiàn)

    pyd文件是由非 Python,其它編程語言編寫編譯生成的 Python 擴展模塊,本文主要介紹了pyd文件逆向的方法實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Python定時器實例代碼

    Python定時器實例代碼

    這篇文章主要介紹了Python定時器實例代碼,向大家分享了兩部分代碼示例,一個是通過線程實現(xiàn)定時器timer,另一個是Python實現(xiàn)的精度可調(diào)的定時器實例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • flask post獲取前端請求參數(shù)的三種方式總結(jié)

    flask post獲取前端請求參數(shù)的三種方式總結(jié)

    這篇文章主要介紹了flask post獲取前端請求參數(shù)的三種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • django中間件及自定義中間件的實現(xiàn)方法

    django中間件及自定義中間件的實現(xiàn)方法

    中間件就是在目標和結(jié)果之間進行的額外處理過程,在Django中就是request和response之間進行的處理,相對來說實現(xiàn)起來比較簡單,這篇文章主要介紹了django中間件以及自定義中間件?,需要的朋友可以參考下
    2023-06-06
  • Python中的Nonetype類型怎么判斷

    Python中的Nonetype類型怎么判斷

    這篇文章主要介紹了Python中的Nonetype類型怎么判斷?具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python開發(fā)中OpenCV視頻流的多線程處理方式詳解

    Python開發(fā)中OpenCV視頻流的多線程處理方式詳解

    在做視覺類項目中,常常需要在Python環(huán)境下使用OpenCV讀取本地的還是網(wǎng)絡攝像頭的視頻流,之后再調(diào)入各種模型,所以本文我們就來聊聊OpenCV視頻流的多線程處理方式吧
    2025-05-05
  • Python將二維列表list的數(shù)據(jù)輸出(TXT,Excel)

    Python將二維列表list的數(shù)據(jù)輸出(TXT,Excel)

    這篇文章主要介紹了Python將二維列表list的數(shù)據(jù)輸出(TXT,Excel),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 淘寶秒殺python腳本 掃碼登錄版

    淘寶秒殺python腳本 掃碼登錄版

    這篇文章主要為大家詳細介紹了淘寶秒殺python腳本,掃碼登錄版,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 利用Python實現(xiàn)問卷星自動填寫的超詳細教程

    利用Python實現(xiàn)問卷星自動填寫的超詳細教程

    問卷星已經(jīng)成為收集問卷的一個很重要的工具,有時可以用來報名參加活動,有時可以用來收集某些領域相關的情況,下面這篇文章主要給大家介紹了關于利用Python實現(xiàn)問卷星自動填寫的超詳細教程,需要的朋友可以參考下
    2023-06-06
  • python xml模塊的簡單使用

    python xml模塊的簡單使用

    這篇文章主要介紹了python xml模塊的簡單使用,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03

最新評論

南阳市| 南雄市| 信宜市| 西乌| 堆龙德庆县| 古丈县| 扬州市| 专栏| 道孚县| 临江市| 民乐县| 仪征市| 长寿区| 雷州市| 中宁县| 新津县| 高碑店市| 潮安县| 中西区| 康定县| 白河县| 获嘉县| 加查县| 苏尼特右旗| 炉霍县| 翁源县| 嘉禾县| 克拉玛依市| 托克逊县| 神木县| 承德县| 本溪市| 商城县| 延长县| 日土县| 凤庆县| 那坡县| 邛崃市| 义乌市| 丁青县| 绍兴县|