python读取xlsx文件并转化为 json 数据
from openpyxl import load_workbook import os from re import findall import json # 读取所有的sheet目录 def read_xlsx(path="./"): lis = os.listdir(path) base_xlsx = [] for i in lis: result = findall('.xlsx', i) if len(result): base_xlsx.append(i) return base_xlsx # 获取sheet的行 def get_sheet_columns(sheet): index = 1 ret = [] col = sheet.cell(1, index) while col.value: ret.append(col.value) index += 1 col = sheet.cell(1, index) return ret # 处理单个单元格 def handle(filepath): ret_obj = {} wb = load_workbook(filepath) sheet0 = wb.worksheets[0] columns = get_sheet_columns(sheet0) for sheet in wb.worksheets: sheet_obj = [] for row in sheet.iter_rows(min_row=2): row_obj = {} for k in range(0, len(columns)): row_obj[columns[k]] = str(row[k].value) sheet_obj.append(row_obj) ret_obj[sheet.title] = sheet_obj return ret_obj if __name__ == '__main__': # 读取到所有的sheet文件 xlsx_filelist = read_xlsx() # 处理单个sheet for i in xlsx_filelist: obj = handle(i) result = json.dumps(obj) print(result)
读取结果为
{ "Sheet1": [ { "id": "1", "id_order": "123124", "id_user": "1", "money": "1200", "refund_money": "400", "time_create": "2022-09-04 00:00:00", "time_finish": "2022-09-05 00:00:00" }, { "id": "1", "id_order": "123124", "id_user": "1", "money": "1200", "refund_money": "400", "time_create": "2022-09-04 00:00:00", "time_finish": "2022-09-05 00:00:00" }, { "id": "1", "id_order": "123124", "id_user": "1", "money": "1200", "refund_money": "400", "time_create": "2022-09-04 00:00:00", "time_finish": "2022-09-05 00:00:00" }, { "id": "1", "id_order": "123124", "id_user": "1", "money": "1200", "refund_money": "400", "time_create": "2022-09-04 00:00:00", "time_finish": "2022-09-05 00:00:00" }, { "id": "1", "id_order": "123124", "id_user": "1", "money": "1200", "refund_money": "400", "time_create": "2022-09-04 00:00:00", "time_finish": "2022-09-05 00:00:00" }, { "id": "1", "id_order": "123124", "id_user": "1", "money": "1200", "refund_money": "400", "time_create": "2022-09-04 00:00:00", "time_finish": "2022-09-05 00:00:00" }, { "id": "1", "id_order": "123124", "id_user": "1", "money": "1200", "refund_money": "400", "time_create": "2022-09-04 00:00:00", "time_finish": "2022-09-05 00:00:00" } ] }
# 有一个使用前提是, 无论是 sheet 名称 还是 表格头的名称, 都不建议是 中文, 因为 dumps 会对中文进行编码
本想把生活活成一首诗, 时而优雅 , 时而豪放 , 结果活成了一首歌 , 时而不靠谱 , 时而不着调
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术