目标: 将json文本解析并存储到excel中

使用python包 openpyx

import simplejson
mport codecs
import openpyxl
import os #
def write_xlsx(origin_root_path,file_name, write_path, workbook): origin_path = origin_root_path + file_name
sheet_name = file_name.split('.')[0]
print(sheet_name + ' sheet ' + "processing ...") # 使用simplejson.load方法先读原始json文件origin_path
file = codecs.open(origin_path, 'rb', 'utf-8')
file_json = simplejson.load(file) # 创建sheet
# 该方法传入了workbook的参数,所以函数体内部未新建workbook
worksheet = workbook.create_sheet(sheet_name) # 写入excel数据行
row = 1
cmp_names = list(file_json.keys())
cmp_len = len(cmp_names)
for i in range(cmp_len): #每个公司
cmp_name = cmp_names[i]
# 是否有多页数据
pages_len = len(file_json[cmp_name])
for pages_in in range(pages_len): #每页数据
cmp_page = file_json[cmp_name][pages_in]
# code = 200 有数据
if(cmp_page['code'] == 100 or cmp_page['code'] ==500):
continue elif(cmp_page['code'] == 200):
cmp_page_data = file_json[cmp_name][pages_in]['data'] # 第pages_in页数据
# 判断每页是否有多条数据(根据cmp_data字典中时是否有key:list来判断)
if( 'list' in list(cmp_page_data.keys())): #data中多条数据
# list中每一个元素一行数据
cmp_data_list = cmp_page_data['list']
cmp_data_list_len = len(cmp_data_list)
for item_in in range(cmp_data_list_len):
item_data = cmp_data_list[item_in]
item_data_keys = list(item_data.keys())
item_data_values = list(item_data.values())
item_data_len = len(item_data_values) #写入表头
if(row == 1):
worksheet.cell(row, 1, "CMP_NAME")
for col in range(item_data_len):
                   #调用worksheet.cel方法根据row和col定位在excel中的单元格,写入value。
                    #注意,row和col均从1开始
                    worksheet.cell(row, col+2, item_data_keys[col])
row = row +1 # 写入行数据
else:
worksheet.cell(row, 1, cmp_name)
for col in range(item_data_len):
worksheet.cell(row, col+2, item_data_values[col])
row = row + 1
# print(cmp_name + '\t' + item_data_values)# 打印行数据 else: # data中没有list。单条数据
cmp_data_len = len(cmp_page_data)
cmp_data_keys = list(cmp_page_data.keys())
cmp_data_values = list(cmp_page_data.values())
# 写入表头
if (row == 1):
worksheet.cell(row=row, column=1).value = "CMP_NAME"
for col in range(cmp_data_len):
worksheet.cell(row, col+2, cmp_data_keys[col])
row = row + 1
else:
worksheet.cell(row, 1, cmp_name)
for col in range(cmp_data_len):
worksheet.cell(row, col+2, cmp_data_values[col])
# print (cmp_name + '\t' + str(cmp_data_values))
row = row + 1 print(sheet_name + ' sheet ' + "Done ...")
print ('-'*30) if __name__ == '__main__': origin_root_path = r'C:\Users\01161151\Desktop\20家公司\testcmp/'
write_path = r'C:\Users\01161151\Desktop\20家公司/excel.xlsx'
files = os.listdir(origin_root_path) #workbook
workbook = openpyxl.Workbook()
for i in range(len(files)):
file_name= files[i]
write_xlsx(origin_root_path, file_name, write_path, workbook) #存储在xlsx路径中
workbook.save(write_path)

 使用openpyxl写入excel(格式为xlsx)主要步骤:

 1. workbook    workbook = openpyxl.Workbook()    

    2. worksheet  worksheet = workbook.create_sheet(sheet_name) 在workbook中创建一个名字为sheetname的sheet页

    3. worksheet.cell(row,col,value) worksheet.cell(row, col+2, cmp_data_values[col]) 以(ROW,COL)定位单元格,写入value

    4. workbook.save(xlsx文件路径)

 

【python】使用openpyxl解析json并写入excel(xlsx)的更多相关文章

  1. Python读取Json字典写入Excel表格的方法

    需求: 因需要将一json文件中大量的信息填入一固定格式的Excel表格,单纯的复制粘贴肯定也能完成,但是想偷懒一下,于是借助Python解决问题. 环境: Windows7 +Python2.7 + ...

  2. Python 使用 docopt 解析json参数文件

    1. 背景 在深度学习的任务中,通常需要比较复杂的参数以及输入输出配置,比如需要不同的训练data,不同的模型,写入不同的log文件,输出到不同的文件夹以免混淆输出 常用的parser.add()方法 ...

  3. python小练习之读取文件写入excel

    文件是个json文件 内容为: 导入excel后的格式为 屡一下思路 一步步怎么实现: 1 首先需要读取json文件 然后将读取的内容转为字典 2 将excel的列名写入一个list中 然后遍历执行写 ...

  4. python 简单抓取网页并写入excel实例

    # -*- coding: UTF-8 -*- import requests from bs4 import BeautifulSoup import xlwt import time #获取第一页 ...

  5. python从数据库取数据后写入excel 使用pandas.ExcelWriter设置单元格格式

    用python从数据库中取到数据后,写入excel中做成自动报表,ExcelWrite默认的格式一般来说都比较丑,但workbook提供可以设置自定义格式,简单记录个demo,供初次使用者参考. 一. ...

  6. Unity3D研究院之在MAC上脚本XlsxWriter写入Excel .xlsx格式

    原地址:http://www.xuanyusong.com/archives/3011 以前找了很久可以跨平台支持读写Excel的工具,我也试了很多种DLL.可在Windows上各个完美支持,可是在M ...

  7. python 使用openpyxl来写数据到excel表格

    使用openpyxl写execl确实很方便.我先介绍用到的相关模块与函数 Workbook:工作簿模块,在内存创建一个工作簿. ExcelWriter:使用它向exel中写数据. get_column ...

  8. python常识系列07-->python利用xlwt写入excel文件

    前言 读书之法,在循序而渐进,熟读而精思.--朱熹 抽空又来写一篇,毕竟知识在于分享! 一.xlwt模块是什么 python第三方工具包,用于往excel中写入数据:(ps:只能创建新表格,不能修改表 ...

  9. python 读取单所有json数据写入mongodb(单个)

    <--------------主函数-------------------> from pymongo import MongoClientfrom bson.objectid impor ...

随机推荐

  1. 常见问题:Web/Servlet生命周期与Spring Bean生命周期

    Servlet生命周期 init()初始化阶段 Servlet容器加载Servlet(web.xml中有load-on-startup=1;Servlet容器启动后用户首次向Servlet发请求;Se ...

  2. Java基础:类文件结构及类加载

    Class文件结构 魔数 4bits 确定该文件是否是可接受的Class文件(0xCAFEBABE) 版本号 4bits 包括次版本号和主版本号 常量池 包括字面量(文本字符串,声明为final的常量 ...

  3. SQLServer分页查询方法整理以及批量插入操作SqlBulkCopy

    分页查询 通用方法:sqlserver 2005 + ROW_NUMBER() OVER()方式: ; TOP NOT IN方式 : ID FROM TripDetail ORDER BY ID) O ...

  4. Jenkins+maven+gitlab自动化部署之docker发布sprint boot项目(七)

    Jenkins发布docker应用与发布java应用配置基本一致,需要配置Dockerfile及构建的步骤,步骤如下: 1.jenkins主机构建应用为jar包 2.jenkins主机把生产的jar包 ...

  5. 修改主机名和修改主机映射和ssh免登陆

    1.修改主机名 vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=cc3 2.修改主机映射 vi /etc/hosts 127.0.0.1 loca ...

  6. fpga基础

    1.FPGA 的分类: 根据 FPGA 基本结构,可将其分为基于乘积项(Product-Term)技术的 FPGA 和基于查找表(Look-Up-Table)技术的 FPGA 两种. (1)基于乘积项 ...

  7. Python循环的基本使用(for in、while)

    Python的循环有两种: 一种是for-in 循环:主要用于遍历tuple.list; 一种是while循环:只要条件满足,就不断循环,条件不满足时退出循环. #!/usr/bin/python # ...

  8. 在论坛中出现的比较难的sql问题:34(递归 获取连续值问题)

    原文:在论坛中出现的比较难的sql问题:34(递归 获取连续值问题) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  9. SQL Sever 刪除重複數據只剩一條

    use book go create table ##T1( n int, a nvarchar(20) ) --查詢重複記錄,插入臨時表 insert into ##T1(n,a) select s ...

  10. 浅谈(IOC)依赖注入与控制反转(DI)

    前言:参考了百度文献和https://www.cnblogs.com/liuqifeng/p/11077592.html以及http://www.cnblogs.com/leoo2sk/archive ...