Python實(shí)現(xiàn)讀取Excel表數(shù)據(jù)并轉(zhuǎn)為JSON格式文件
Python讀取Excel表格數(shù)據(jù)并寫成JSON格式文件(精簡版)
1. 步驟
步驟 1: 安裝必要的庫
確保你已經(jīng)安裝了pandas和openpyxl(用于讀取Excel文件)。你可以使用pip來安裝這些庫:
pip install pandas openpyxl
步驟 2: 讀取Excel文件
使用pandas的read_excel函數(shù)來讀取Excel文件。
步驟 3: 將數(shù)據(jù)轉(zhuǎn)換為JSON格式
使用pandas的to_json方法將DataFrame轉(zhuǎn)換為JSON格式。
步驟 4: 保存JSON文件
將轉(zhuǎn)換后的JSON數(shù)據(jù)寫入到文件中。
2. 示例代碼
代碼如下
import pandas as pd
# 步驟 2: 讀取Excel文件
file_path = 'path_to_your_excel_file.xlsx' # 替換為你的Excel文件路徑
df = pd.read_excel(file_path)
# 步驟 3: 將DataFrame轉(zhuǎn)換為JSON格式
# orient參數(shù)可以控制JSON的輸出格式,例如 'records', 'index', 'columns', 'values', 'split' 等。
# 這里使用'records'格式,它會將每一行數(shù)據(jù)作為一個(gè)對象。
json_data = df.to_json(orient='records')
# 步驟 4: 保存JSON文件
output_file_path = 'output.json' # 指定輸出JSON文件的路徑和名稱
with open(output_file_path, 'w', encoding='utf-8') as f:
f.write(json_data)
print("Excel數(shù)據(jù)已成功轉(zhuǎn)換為JSON并保存到文件。")3. 注意事項(xiàng)
確保你的Excel文件路徑是正確的。
根據(jù)你的需求選擇合適的orient參數(shù)值。例如,如果你想要將列作為JSON對象的鍵,可以使用orient=‘columns’。不同的選項(xiàng)會影響JSON的結(jié)構(gòu)。
使用encoding='utf-8’確保在寫入文件時(shí)正確處理Unicode字符。
這樣,你就可以將Excel表格數(shù)據(jù)讀取并保存為JSON格式的文件了。
Python讀取Excel表數(shù)據(jù)轉(zhuǎn)為JSON格式文件(詳細(xì)優(yōu)化版)
1.詳細(xì)優(yōu)化部分
該部分以上面精簡代碼為基礎(chǔ)進(jìn)行優(yōu)化改造
1.1 下載pandas
使用pip命令下載pandas庫
pip install pandas openpyxl
1.2 讀取表格文件(可指定sheet頁)
讀取excel文件,可加參數(shù)sheet_name="sheet名稱"來指定Sheet頁,如果不指定,默認(rèn)第一個(gè)sheet頁
如想要讀取的名稱為Sheet2
df = pd.read_excel(file_path, sheet_name='Sheet2')
1.3 庫日期處理
由于表格中日期轉(zhuǎn)換為json后變成了一串?dāng)?shù)字,如何解決這個(gè)問題,可使用to_datetime函數(shù)
# 假設(shè)日期列名為'Date',且數(shù)據(jù)類型為整數(shù)(Excel序列號)
df['Date'] = pd.to_datetime(df['Date'], origin='unix', unit='D') # 將Excel序列號轉(zhuǎn)換為datetime對象
df['Date'] = df['Date'].dt.strftime('%Y-%m-%d') # 將datetime對象轉(zhuǎn)換為字符串格式'年-月-日'
1.4 布爾值轉(zhuǎn)換
表格中的true和false轉(zhuǎn)換時(shí)不會做處理,單如果json后續(xù)要導(dǎo)入到mysql表中,mysql表識別true和false會導(dǎo)入失敗,只能識別0和1
可以使用以下代碼將true和false轉(zhuǎn)為1和0
# 修改表中的Boolean值,滿足表中要求的0-1,而不是false true,不然導(dǎo)入報(bào)錯(cuò)
df['是否加裝急停開關(guān)'] = df['是否加裝急停開關(guān)'].map({True: 1, False: 0})
1.5 空值Na的處理
如果出現(xiàn)了空值,可使用fillna函數(shù)替換,如下
# 將Na替換為空字符
df = df.fillna('')
1.6 列名替換
如果想修改讀取到的列名稱,可使用以下代碼將列名修改值
如excel表中列名是中文,為了更方便導(dǎo)入mysql表,這里將中文列名修改為對應(yīng)的表字段(非表中字段,而是小駝峰)
column_map ={
'任務(wù)單編號': 'taskTicketId',
'工號': 'employeeId'
}
print(df.columns)
col_names = df.columns.to_list()
col_names = [column_map[s] for s in col_names]
print(col_names)
df.columns = col_names
2. 詳細(xì)優(yōu)化后的完整代碼
完整代碼如下
# 步驟 1:引入pandas庫
import pandas as pd
# 步驟 2: 讀取Excel文件
# file_path = 'path_to_your_excel_file.xlsx' # 替換為你的Excel文件路徑
file_path = '車輛改造單數(shù)據(jù)庫.xlsm' # 替換為你的Excel文件路徑
df = pd.read_excel(file_path, sheet_name='Sheet2')
# print(df)
# 假設(shè)日期列名為'Date',且數(shù)據(jù)類型為整數(shù)(Excel序列號)
# df['Date'] = pd.to_datetime(df['Date'], origin='unix', unit='D') # 將Excel序列號轉(zhuǎn)換為datetime對象
# df['Date'] = df['Date'].dt.strftime('%Y-%m-%d') # 將datetime對象轉(zhuǎn)換為字符串格式'年-月-日'
list = ['創(chuàng)建日期','樣品送達(dá)日期','要求完成日期','實(shí)際完成日期']
for i in list:
df[i] = pd.to_datetime(df[i], origin='unix', unit='D') # 將Excel序列號轉(zhuǎn)換為datetime對象
df[i] = df[i].dt.strftime('%Y-%m-%d') # 將datetime對象轉(zhuǎn)換為字符串格式'年-月-日'
# df['創(chuàng)建日期'] = pd.to_datetime(df['創(chuàng)建日期'], origin='unix', unit='D') # 將Excel序列號轉(zhuǎn)換為datetime對象
# df['創(chuàng)建日期'] = df['創(chuàng)建日期'].dt.strftime('%Y-%m-%d') # 將datetime對象轉(zhuǎn)換為字符串格式'年-月-日'
print(df['是否加裝急停開關(guān)'])
# 修改表中的Boolean值,滿足表中要求的0-1,而不是false true,不然導(dǎo)入報(bào)錯(cuò)
df['是否加裝急停開關(guān)'] = df['是否加裝急停開關(guān)'].map({True: 1, False: 0})
# df = df.fillna('')
column_map ={
'任務(wù)單編號': 'taskTicketId',
'工號': 'employeeId',
'委托人': 'requester',
'創(chuàng)建日期': 'creationDate',
'樣品送達(dá)日期': 'sampleDeliveryDate',
'要求完成日期': 'requiredCompletionDate',
'實(shí)際完成日期': 'completionDate'
}
print(df.columns)
col_names = df.columns.to_list()
col_names = [column_map[s] for s in col_names]
print(col_names)
df.columns = col_names
# 步驟 3: 將DataFrame轉(zhuǎn)換為JSON格式
# orient參數(shù)可以控制JSON的輸出格式,例如 'records', 'index', 'columns', 'values', 'split' 等。
# 這里使用'records'格式,它會將每一行數(shù)據(jù)作為一個(gè)對象。orient='records'確保JSON輸出為記錄列表。
# force_ascii=False確保輸出的JSON中包含非ASCII字符,例如中文。
# date_format='iso'確保日期以ISO格式輸出。如果你需要其他日期格式,可以相應(yīng)調(diào)整或去掉此參數(shù)。
json_data = df.to_json(orient='records', indent=4, force_ascii=False, date_format='iso',)
# 步驟 4: 保存JSON文件
# output_file_path = 'output.json' # 指定輸出JSON文件的路徑和名稱
output_file_path = '車輛改造單數(shù)據(jù)庫.json' # 指定輸出JSON文件的路徑和名稱
with open(output_file_path, 'w', encoding='utf-8') as f:
f.write(json_data)
print("Excel數(shù)據(jù)已成功轉(zhuǎn)換為JSON并保存到文件。")
以上就是Python實(shí)現(xiàn)讀取Excel表數(shù)據(jù)并轉(zhuǎn)為JSON格式文件的詳細(xì)內(nèi)容,更多關(guān)于Python讀取Excel并轉(zhuǎn)為JSON的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 實(shí)現(xiàn)控制鼠標(biāo)鍵盤
這篇文章主要介紹了python 控制鼠標(biāo)鍵盤的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-11-11
Python文件操作,open讀寫文件,追加文本內(nèi)容實(shí)例
本篇文章主要介紹了Python文件操作,open讀寫文件,追加文本內(nèi)容,具有一定的參考價(jià)值,有需要的可以了解一下。2016-12-12
深入詳解Python中動(dòng)態(tài)方法調(diào)用的各種方法
在Python編程中,我們經(jīng)常會遇到需要根據(jù)??運(yùn)行時(shí)條件??動(dòng)態(tài)調(diào)用對象方法的場景,本文將深入探討Python中動(dòng)態(tài)方法調(diào)用的各種技術(shù),感興趣的小伙伴可以了解下2025-10-10
解決Pycharm在Debug的時(shí)候一直“Connected”沒有下一步動(dòng)作問題
這篇文章主要介紹了解決Pycharm在Debug的時(shí)候一直“Connected”沒有下一步動(dòng)作問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
python使用python-docx處理word的方法示例
本文介紹了python-docx模塊,用于自動(dòng)化操作Word文檔,包括創(chuàng)建、寫入和讀取Word文檔等方法,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01
基于Python實(shí)現(xiàn)電影售票系統(tǒng)
這篇文章主要介紹了通過Python實(shí)現(xiàn)一個(gè)簡單的電影售票系統(tǒng),文中的示例代碼對我們學(xué)習(xí)Python有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12

