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

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

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

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

效果圖如下:

項(xiàng)目背景與目標(biāo)

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

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

技術(shù)選型

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

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

開(kāi)發(fā)過(guò)程

創(chuàng)建基本窗口

首先,我創(chuàng)建了一個(gè)基本的 tkinter 窗口,設(shè)置窗口標(biāo)題和大小:

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

設(shè)計(jì)用戶界面

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

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)

    # 復(fù)制按鈕(初始禁用)
    self.copy_btn = tk.Button(
        self.root,
        text="復(fù)制JSON到剪貼板",
        command=self.copy_json,
        state=tk.DISABLED,
        bg="#FF9800",
        fg="white",
        font=("Arial", 12)
    )
    self.copy_btn.pack(pady=10)

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

我使用 tkinter.filedialog 實(shí)現(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)

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

這是整個(gè)工具的核心部分,我使用 pandas 庫(kù)讀取 Excel 文件并轉(zhuǎn)換為 JSON:

def convert_to_json(self):
    if not self.file_path:
        messagebox.showerror("錯(cuò)誤", "請(qǐng)先選擇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)

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

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

實(shí)現(xiàn)復(fù)制功能

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

def copy_json(self):
    if not self.json_data:
        messagebox.showerror("錯(cuò)誤", "沒(méi)有可復(fù)制的JSON數(shù)據(jù)")
        return

    try:
        pyperclip.copy(self.json_data)
        messagebox.showinfo("成功", "JSON已復(fù)制到剪貼板!")
    except Exception as e:
        messagebox.showerror("錯(cuò)誤", f"復(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)

        # 復(fù)制按鈕(初始禁用)
        self.copy_btn = tk.Button(
            self.root,
            text="復(fù)制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("錯(cuò)誤", "請(qǐng)先選擇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)

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

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

    def copy_json(self):
        if not self.json_data:
            messagebox.showerror("錯(cuò)誤", "沒(méi)有可復(fù)制的JSON數(shù)據(jù)")
            return

        try:
            pyperclip.copy(self.json_data)
            messagebox.showinfo("成功", "JSON已復(fù)制到剪貼板!")
        except Exception as e:
            messagebox.showerror("錯(cuò)誤", f"復(fù)制失敗:\n{str(e)}")


if __name__ == "__main__":
    root = tk.Tk()
    app = ExcelToJsonConverter(root)
    root.mainloop()

使用說(shuō)明

安裝必要的依賴庫(kù):

pip install pandas openpyxl pyperclip

運(yùn)行程序:

python excelTojson.py

為了方便用戶使用,我使用 PyInstaller 將工具打包成了獨(dú)立的可執(zhí)行文件 ExcelToJsonPro.exe。以下是具體的打包步驟:

安裝 PyInstaller

首先,確保安裝了 PyInstaller:

pip install pyinstaller

打包命令 在命令行中導(dǎo)航到包含 excelTojson.py 文件的目錄,然后運(yùn)行以下命令進(jìn)行打包:

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

命令參數(shù)解釋:

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

生成的文件位置

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

驗(yàn)證打包結(jié)果

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

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

相關(guān)文章

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

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

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

    Python定時(shí)器實(shí)例代碼

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

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

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

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

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

    Python中的Nonetype類(lèi)型怎么判斷

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

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

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

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

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

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

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

    利用Python實(shí)現(xiàn)問(wèn)卷星自動(dòng)填寫(xiě)的超詳細(xì)教程

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

    python xml模塊的簡(jiǎn)單使用

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

最新評(píng)論

资中县| 元阳县| 阳新县| 巩留县| 彰化县| 万山特区| 阿拉善左旗| 高淳县| 绥棱县| 财经| 共和县| 阿拉尔市| 鄱阳县| 兴安县| 德惠市| 丰顺县| 云和县| 太仓市| 遂溪县| 镇远县| 廉江市| 昌都县| 塔城市| 浦县| 疏附县| 乐安县| 武鸣县| 偃师市| 英山县| 汾阳市| 柞水县| 铜梁县| 上犹县| 成安县| 南召县| 巴马| 北流市| 新源县| 永康市| 涪陵区| 泾川县|