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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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库
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 2 3 | # 假设日期列名为'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
1 2 | # 修改表中的Boolean值,满足表中要求的0-1,而不是false true,不然导入报错 df[ '是否加装急停开关' ] = df[ '是否加装急停开关' ]. map ({ True : 1 , False : 0 }) |
1.5 空值Na的处理
如果出现了空值,可使用fillna函数替换,如下
1 2 | # 将Na替换为空字符 df = df.fillna('') |
1.6 列名替换
如果想修改读取到的列名称,可使用以下代码将列名修改值
如excel表中列名是中文,为了更方便导入mysql表,这里将中文列名修改为对应的表字段(非表中字段,而是小驼峰)
1 2 3 4 5 6 7 8 9 10 | 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # 步骤 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的资料请关注IT俱乐部其它相关文章!