目标: 将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. Word中如何加载EndNote

    在百度中搜索了很多解决方案,都不尽相同忙了一上午也没解决,然后搁浅,吃过午饭回来在安装目录下找到如下exe文件三四步点击搞定 所以,有时候问题出现了长时间没解决,可以换下环境出去溜达一圈说不定就茅塞顿 ...

  2. c# 无法加载DLL:找不到指定的模块(异常来自HRESULT:0X8007007E)

    c# 无法加载DLL“xxxx”:找不到指定的模块(异常来自HRESULT:0X8007007E)的一个解决方法 以前的一个c#项目,今天运行的时候突然发现调用DLL时出现了下面的错误. 心中很诧异, ...

  3. 遨游TypeScript海洋之定义变量和数据类型

    变量和数据类型 熟悉JavaScript的小伙伴都知道,typescript是JavaScript的超集,也就是说它包含JavaScript.所以我觉得,只要你想拥有更佳的模块管理,让你的开发更佳严谨 ...

  4. Java多线程概念及优缺点,多线程的地位|乐字节

    大家好,乐字节小乐有来咯,上次说完了Java网络编程探究|乐字节,这次我们来看看线程相关的吧. Java线程主要讲述的内容有: 1.线程概念 多线程,说白了就是多条执行路径,原来是一条路径,就主路径( ...

  5. 乐字节Java继承|方法重写、super和final关键字

    大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...

  6. linux软件安装习惯

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32./u ...

  7. 微信自研生产级paxos类库PhxPaxos实现原理介绍

    转载自:   http://mp.weixin.qq.com/s?__biz=MzI4NDMyNTU2Mw==&mid=2247483695&idx=1&sn=91ea4229 ...

  8. DCEP究竟是什么?

    DCEP (Digital Currency Electronic Payment) 数字货币电子支付工具 DCEP将由中国人民银行推出,推出时间待定. DCEP是使用区块链技术的一种联盟链,为全新的 ...

  9. Ly与lyon的巅峰对决,描色法

    http://paste.ubuntu.com/14124956/ #include <stdio.h> #include <stdlib.h> struct node { i ...

  10. mybatis与Spring集成(Aop整合PagerAspect插件)

    目的: Mybatis与spring集成 Aop整合pagehelper插件 Mybatis与spring集成 导入pom依赖 <?xml version="1.0" enc ...