【python】使用openpyxl解析json并写入excel(xlsx)
目标: 将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)的更多相关文章
- Python读取Json字典写入Excel表格的方法
需求: 因需要将一json文件中大量的信息填入一固定格式的Excel表格,单纯的复制粘贴肯定也能完成,但是想偷懒一下,于是借助Python解决问题. 环境: Windows7 +Python2.7 + ...
- Python 使用 docopt 解析json参数文件
1. 背景 在深度学习的任务中,通常需要比较复杂的参数以及输入输出配置,比如需要不同的训练data,不同的模型,写入不同的log文件,输出到不同的文件夹以免混淆输出 常用的parser.add()方法 ...
- python小练习之读取文件写入excel
文件是个json文件 内容为: 导入excel后的格式为 屡一下思路 一步步怎么实现: 1 首先需要读取json文件 然后将读取的内容转为字典 2 将excel的列名写入一个list中 然后遍历执行写 ...
- python 简单抓取网页并写入excel实例
# -*- coding: UTF-8 -*- import requests from bs4 import BeautifulSoup import xlwt import time #获取第一页 ...
- python从数据库取数据后写入excel 使用pandas.ExcelWriter设置单元格格式
用python从数据库中取到数据后,写入excel中做成自动报表,ExcelWrite默认的格式一般来说都比较丑,但workbook提供可以设置自定义格式,简单记录个demo,供初次使用者参考. 一. ...
- Unity3D研究院之在MAC上脚本XlsxWriter写入Excel .xlsx格式
原地址:http://www.xuanyusong.com/archives/3011 以前找了很久可以跨平台支持读写Excel的工具,我也试了很多种DLL.可在Windows上各个完美支持,可是在M ...
- python 使用openpyxl来写数据到excel表格
使用openpyxl写execl确实很方便.我先介绍用到的相关模块与函数 Workbook:工作簿模块,在内存创建一个工作簿. ExcelWriter:使用它向exel中写数据. get_column ...
- python常识系列07-->python利用xlwt写入excel文件
前言 读书之法,在循序而渐进,熟读而精思.--朱熹 抽空又来写一篇,毕竟知识在于分享! 一.xlwt模块是什么 python第三方工具包,用于往excel中写入数据:(ps:只能创建新表格,不能修改表 ...
- python 读取单所有json数据写入mongodb(单个)
<--------------主函数-------------------> from pymongo import MongoClientfrom bson.objectid impor ...
随机推荐
- web端自动化——selenium3+Python3+pycharm自动化
1.前言: 对于初学者来说,python自带的IDLE,精简又方便,不过一个好的编辑器能让python编码变得更方便,更加优美些. 不过呢,也可以自己去下载其他更好用的代码编辑器,在这推荐: PyCh ...
- ecshop中常用的sql语句
1.获取单条记录 $row = $GLOBALS['db']->getRow($sql); 2.获取单一字段 $row = $GLOBALS['db']->getOne($sql); 查询 ...
- PWM原理及其在电源中的应用
熟悉单机片的同学就应该知道pwm,也就是脉冲宽度调制技术,它是通过对一系列脉冲的宽度进行调制,来获得等效的波形.是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,因其操作简单,又灵活等 ...
- linux环境下编写shell脚本实现启动停止tomcat服务
第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat ...
- java当中JDBC当中的transaction例子
[学习笔记] 7.jdbc的transaction例子: import java.sql.*; public class MySQlTransaction1 { public static void ...
- centos7 为使用su命令的用户添加pam授权认证
# 查看用户所属哪个组 groups 用户名 #查看当前有哪些用户运行程序 ps -aux|awk '{print $1}'|sort -rn|uniq -c|sort -rn # 清理不再使用的用户 ...
- 数据库基础理解学习-Mysql
1. 简介 数据库,现代化的数据存储存储手段,是一种特殊的文件,其中存储着需要的数据. 特点: 持久化存储 读写速度极高 保证数据的有效性 对程序支持性非常好,容易扩展 2. Mysql (1)具有数 ...
- Golang高阶:Golang1.5到Golang1.12包管理
Golang1.5到Golang1.12包管理 1. 前言 Golang 是一门到如今有十年的静态高级语言了,2009年的时候算是正式推出了,然后到最近的一两年,2017-2018年的时候,突然直线上 ...
- Windows下的Android Studio环境搭建、安装使用
https://jingyan.baidu.com/article/20b68a88ff2ca4796cec6232.html https://blog.csdn.net/jklinux/articl ...
- oracle 根据时间字段查询
oracle 根据时间字段查询数据 ROWNUM 是对前面查询的记录做限制,比如查询的记录 > 2000 条,那么只取前面的 2000 条 ''' SELECT * FROM (SELECT C ...