目标: 将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. C# .NET 判断输入的字符串是否只包含数字和英文字母

    FROM :   https://www.cnblogs.com/ilookbo/p/4828722.html /// <summary> /// 判断输入的字符串是否只包含数字和英文字母 ...

  2. docker里安装kali linux

    docker里安装kali linux 官网镜像 docker search kali docker pull kalilinux/kali-linux-docker vi /etc/apt/sour ...

  3. jstat介绍

    命令可用选项 ➜ ~ jstat -options -class -compiler -gc -gccapacity -gccause -gcmetacapacity -gcnew -gcnewcap ...

  4. 【译】Vue源码学习(一):Vue对象构造函数

    本系列文章详细深入Vue.js的源代码,以此来说明JavaScript的基本概念,尝试将这些概念分解到JavaScript初学者可以理解的水平.有关本系列的一些后续的计划和轨迹的更多信息,请参阅此文章 ...

  5. labelme2coco问题:TypeError: Object of type 'int64' is not JSON serializable

    最近在做MaskRCNN 在自己的数据(labelme)转为COCOjson格式遇到问题:TypeError: Object of type 'int64' is not JSON serializa ...

  6. Arm 环境上面libgdiplus的简单安装配置

    1. 下载libgdiplus的包 wget http://download.mono-project.com/sources/libgdiplus/libgdiplus0-6.0.4.tar.gz ...

  7. [转帖]Red Hat K8s 关键人物 Grant Shipley 跳槽到 VMware

    Red Hat K8s 关键人物 Grant Shipley 跳槽到 VMware   https://news.cnblogs.com/n/641944/ 这四小时的工作效率 太无敌了.. 投递人  ...

  8. 怎样在python中写多行语句

    一般来说, 一行就是一条语句, 但有时语句过长不利于阅读, 一般会写成多行的形式, 这时需要在换行时使用反斜杠: \ name = "Lilei" age = 23 gender ...

  9. manacher 算法(最长回文串)

    manacher算法: 定义数组p[i]表示以i为中心的(包含i这个字符)回文串半径长 将字符串s从前扫到后for(int i=0;i<strlen(s);++i)来计算p[i],则最大的p[i ...

  10. C# ObservableCollection两个字段排序的情况

    相对于System.Linq的OrderBy及OrderByDescending方法,调用后产生IOrderedEnumberable对象,这个对象为排序后的返回值,但原对象未发生变化. 试想,有这种 ...