Python实现读取Excel表数据并转为JSON格式文件

 更新时间:2025年04月20日 09:04:53   作者:岫珩  
这篇文章主要为大家详细介绍了Python如何使用pandas库读取Excel表并将其转为JSON格式文件,文中的示例代码讲解详细,感兴趣的小伙伴可以参考下

Python读取Excel表格数据并写成JSON格式文件(精简版)

1. 步骤

步骤 1: 安装必要的库

确保你已经安装了pandas和openpyxl(用于读取Excel文件)。你可以使用pip来安装这些库:

pip install pandas openpyxl

步骤 2: 读取Excel文件

使用pandas的read_excel函数来读取Excel文件。

步骤 3: 将数据转换为JSON格式

使用pandas的to_json方法将DataFrame转换为JSON格式。

步骤 4: 保存JSON文件

将转换后的JSON数据写入到文件中。

2. 示例代码

代码如下

import pandas as pd
 
# 步骤 2: 读取Excel文件
file_path = 'path_to_your_excel_file.xlsx'  # 替换为你的Excel文件路径
df = pd.read_excel(file_path)
 
# 步骤 3: 将DataFrame转换为JSON格式
# orient参数可以控制JSON的输出格式,例如 'records', 'index', 'columns', 'values', 'split' 等。
# 这里使用'records'格式,它会将每一行数据作为一个对象。
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数据已成功转换为JSON并保存到文件。")

3. 注意事项

确保你的Excel文件路径是正确的。

根据你的需求选择合适的orient参数值。例如,如果你想要将列作为JSON对象的键,可以使用orient=‘columns’。不同的选项会影响JSON的结构。

使用encoding='utf-8’确保在写入文件时正确处理Unicode字符。

这样,你就可以将Excel表格数据读取并保存为JSON格式的文件了。

Python读取Excel表数据转为JSON格式文件(详细优化版)

1.详细优化部分

该部分以上面精简代码为基础进行优化改造

1.1 下载pandas

使用pip命令下载pandas库

pip install pandas openpyxl

1.2 读取表格文件(可指定sheet页)

读取excel文件,可加参数sheet_name="sheet名称"来指定Sheet页,如果不指定,默认第一个sheet页

如想要读取的名称为Sheet2

df = pd.read_excel(file_path, sheet_name='Sheet2')

1.3 库日期处理

由于表格中日期转换为json后变成了一串数字,如何解决这个问题,可使用to_datetime函数

# 假设日期列名为'Date',且数据类型为整数(Excel序列号)
df['Date'] = pd.to_datetime(df['Date'], origin='unix', unit='D')  # 将Excel序列号转换为datetime对象
df['Date'] = df['Date'].dt.strftime('%Y-%m-%d')  # 将datetime对象转换为字符串格式'年-月-日'

1.4 布尔值转换

表格中的true和false转换时不会做处理,单如果json后续要导入到mysql表中,mysql表识别true和false会导入失败,只能识别0和1
可以使用以下代码将true和false转为1和0

# 修改表中的Boolean值,满足表中要求的0-1,而不是false true,不然导入报错
df['是否加装急停开关'] = df['是否加装急停开关'].map({True: 1, False: 0})

1.5 空值Na的处理

如果出现了空值,可使用fillna函数替换,如下

# 将Na替换为空字符
df = df.fillna('')

1.6 列名替换

如果想修改读取到的列名称,可使用以下代码将列名修改值

如excel表中列名是中文,为了更方便导入mysql表,这里将中文列名修改为对应的表字段(非表中字段,而是小驼峰)

column_map ={
    '任务单编号': '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. 详细优化后的完整代码

完整代码如下

# 步骤 1:引入pandas库
import pandas as pd
 
# 步骤 2: 读取Excel文件
# file_path = 'path_to_your_excel_file.xlsx'  # 替换为你的Excel文件路径
file_path = '车辆改造单数据库.xlsm'  # 替换为你的Excel文件路径
df = pd.read_excel(file_path, sheet_name='Sheet2')
# print(df)


# 假设日期列名为'Date',且数据类型为整数(Excel序列号)
# df['Date'] = pd.to_datetime(df['Date'], origin='unix', unit='D')  # 将Excel序列号转换为datetime对象
# df['Date'] = df['Date'].dt.strftime('%Y-%m-%d')  # 将datetime对象转换为字符串格式'年-月-日'

list = ['创建日期','样品送达日期','要求完成日期','实际完成日期']

for i in list:
    df[i] = pd.to_datetime(df[i], origin='unix', unit='D')  # 将Excel序列号转换为datetime对象
    df[i] = df[i].dt.strftime('%Y-%m-%d')  # 将datetime对象转换为字符串格式'年-月-日'


# df['创建日期'] = pd.to_datetime(df['创建日期'], origin='unix', unit='D')  # 将Excel序列号转换为datetime对象
# df['创建日期'] = df['创建日期'].dt.strftime('%Y-%m-%d')  # 将datetime对象转换为字符串格式'年-月-日'
 

print(df['是否加装急停开关'])
# 修改表中的Boolean值,满足表中要求的0-1,而不是false true,不然导入报错
df['是否加装急停开关'] = df['是否加装急停开关'].map({True: 1, False: 0})

# df = df.fillna('')

column_map ={
    '任务单编号': 'taskTicketId',
'工号': 'employeeId',
'委托人': 'requester',
'创建日期': 'creationDate',
'样品送达日期': 'sampleDeliveryDate',
'要求完成日期': 'requiredCompletionDate',
'实际完成日期': '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转换为JSON格式
# orient参数可以控制JSON的输出格式,例如 'records', 'index', 'columns', 'values', 'split' 等。
# 这里使用'records'格式,它会将每一行数据作为一个对象。orient='records'确保JSON输出为记录列表。
# force_ascii=False确保输出的JSON中包含非ASCII字符,例如中文。
# date_format='iso'确保日期以ISO格式输出。如果你需要其他日期格式,可以相应调整或去掉此参数。
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 = '车辆改造单数据库.json'  # 指定输出JSON文件的路径和名称

with open(output_file_path, 'w', encoding='utf-8') as f:
    f.write(json_data)
 
print("Excel数据已成功转换为JSON并保存到文件。")

以上就是Python实现读取Excel表数据并转为JSON格式文件的详细内容,更多关于Python读取Excel并转为JSON的资料请关注脚本之家其它相关文章!

相关文章

  • Python使用selenium + headless chrome获取网页内容的方法示例

    Python使用selenium + headless chrome获取网页内容的方法示例

    这篇文章主要介绍了Python使用selenium + headless chrome获取网页内容的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • pycharm远程连接vagrant虚拟机中mariadb数据库

    pycharm远程连接vagrant虚拟机中mariadb数据库

    这篇文章主要介绍了pycharm远程连接vagrant虚拟机中mariadb数据库,需要的朋友可以参考下
    2020-06-06
  • 基于Python工具使用Web3.py以太坊智能合约开发的方法

    基于Python工具使用Web3.py以太坊智能合约开发的方法

    智能合约是区块链技术的核心应用之一,它允许在没有中介的情况下,通过代码自动执行合同条款,以太坊是目前最流行的智能合约平台之一,而Web3.py是用于与以太坊区块链交互的Python库,本文将详细介绍如何使用Web3.py进行以太坊智能合约的开发,需要的朋友可以参考下
    2024-11-11
  • python调用cmd复制文件代码分享

    python调用cmd复制文件代码分享

    Python3调用cmd复制文件,win7下测试通过,大家参考使用吧
    2013-12-12
  • 对python中的os.getpid()和os.fork()函数详解

    对python中的os.getpid()和os.fork()函数详解

    今天小编就为大家分享一篇对python中的os.getpid()和os.fork()函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python通过websocket与js客户端通信示例分析

    Python通过websocket与js客户端通信示例分析

    网站大多使用 HTTP 协议通信,而 HTTP 是无连接的协议。只有客户端请求时,服务器端才能发出相应的应答, HTTP 请求的包也比较大,如果只是很小的数据通信,开销过大。于是,我们可以使用 websocket 这个协议,用最小的开销实现面向连接的通信。
    2014-06-06
  • python九九乘法表的实例

    python九九乘法表的实例

    下面小编就为大家带来一篇python九九乘法表的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • python 字典的打印实现

    python 字典的打印实现

    这篇文章主要介绍了python 字典的打印实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • python绘制ROC曲线的示例代码

    python绘制ROC曲线的示例代码

    本文主要介绍了python绘制ROC曲线的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Python Haul利器简化数据爬取任务提高开发效率

    Python Haul利器简化数据爬取任务提高开发效率

    Haul 是一个专门为数据爬取任务而设计的 Python 库,它提供了一系列的工具和功能,帮助我们轻松处理数据爬取中的重复工作和复杂问题
    2024-01-01

最新评论