• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 浪子 | 发布时间: 2025-6-14 12:21| 查看数: 117| 评论数: 0|帖子模式

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


    1. 步骤

    步骤 1: 安装必要的库
    确保你已经安装了pandas和openpyxl(用于读取Excel文件)。你可以使用pip来安装这些库:
    1. pip install pandas openpyxl
    复制代码
    步骤 2: 读取Excel文件
    使用pandas的read_excel函数来读取Excel文件。
    步骤 3: 将数据转换为JSON格式
    使用pandas的to_json方法将DataFrame转换为JSON格式。
    步骤 4: 保存JSON文件
    将转换后的JSON数据写入到文件中。

    2. 示例代码

    代码如下
    1. import pandas as pd

    2. # 步骤 2: 读取Excel文件
    3. file_path = 'path_to_your_excel_file.xlsx'  # 替换为你的Excel文件路径
    4. df = pd.read_excel(file_path)

    5. # 步骤 3: 将DataFrame转换为JSON格式
    6. # orient参数可以控制JSON的输出格式,例如 'records', 'index', 'columns', 'values', 'split' 等。
    7. # 这里使用'records'格式,它会将每一行数据作为一个对象。
    8. json_data = df.to_json(orient='records')

    9. # 步骤 4: 保存JSON文件
    10. output_file_path = 'output.json'  # 指定输出JSON文件的路径和名称
    11. with open(output_file_path, 'w', encoding='utf-8') as f:
    12.     f.write(json_data)

    13. 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库
    1. pip install pandas openpyxl
    复制代码
    1.2 读取表格文件(可指定sheet页)
    读取excel文件,可加参数sheet_name="sheet名称"来指定Sheet页,如果不指定,默认第一个sheet页
    如想要读取的名称为Sheet2
    1. df = pd.read_excel(file_path, sheet_name='Sheet2')
    复制代码
    1.3 库日期处理
    由于表格中日期转换为json后变成了一串数字,如何解决这个问题,可使用to_datetime函数
    1. # 假设日期列名为'Date',且数据类型为整数(Excel序列号)
    2. df['Date'] = pd.to_datetime(df['Date'], origin='unix', unit='D')  # 将Excel序列号转换为datetime对象
    3. 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
    1. # 修改表中的Boolean值,满足表中要求的0-1,而不是false true,不然导入报错
    2. df['是否加装急停开关'] = df['是否加装急停开关'].map({True: 1, False: 0})
    复制代码
    1.5 空值Na的处理
    如果出现了空值,可使用fillna函数替换,如下
    1. # 将Na替换为空字符
    2. df = df.fillna('')
    复制代码
    1.6 列名替换
    如果想修改读取到的列名称,可使用以下代码将列名修改值
    如excel表中列名是中文,为了更方便导入mysql表,这里将中文列名修改为对应的表字段(非表中字段,而是小驼峰)
    1. column_map ={
    2.     '任务单编号': 'taskTicketId',
    3.         '工号': 'employeeId'
    4.         }

    5. print(df.columns)
    6. col_names = df.columns.to_list()
    7. col_names = [column_map[s] for s in col_names]
    8. print(col_names)
    9. df.columns = col_names
    复制代码
    2. 详细优化后的完整代码

    完整代码如下
    1. # 步骤 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,不然导入报错
    2. 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的资料请关注脚本之家其它相关文章!

    来源:https://www.jb51.net/python/339957sn9.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表