![f4354591a3e453e0941b003657230112.png](https://i-blog.csdnimg.cn/blog_migrate/d74cc910dab52ea49ee5a70381342c84.jpeg)
openpyxl 是操作excel 比较方便的python 包,基本操作excel 的功能都能够实现。
通过pip按照,方便快捷。
pip3 install openpyxl
官方教程: https://openpyxl.readthedocs.io/en/stable/tutorial.html
记录使用的经历,通过openpyxl实现的几个功能。
1)json 转换为excel
2)通过条件判断,删除excel 中的某些行
♪(・ω・)ノ都是很简单很轻量级的脚本, 但都是我工作时真实用到的,稍微组合完善,可以完成很多精彩的操作, 大大减少工作时间。
一、会用到的操作
from openpyxl import Workbook
# 工作薄实例化
excel = Workbook()
# 注意:该函数调用工作表的索引(_active_sheet_index),默认是0。除非你修改了这个值,否则你使用该函数一直是在对第一张工作表进行操作。
sheet = excel.active
# 将默认操作的第一张sheet 修改名字
sheet.title = sheet_name
# 除了 excel.active 的方法外, 或者创建一张新的sheet ,可以设置sheet的名称和位置
sheet = excel.create_sheet(sheet_name, index=0)
# 给某一单元格(A1)写入值"abc" (row=1 对应第一行,column=1 对应第一列,value 为写入的值)
sheet.cell(row=1, column=1, value="abc")
# 删除第i行
sheet.delete_rows(i)
二、json转换为excel
熟悉上述的openpyxl功能就可以进行json 转excel 操作啦。
例如如下的json, 存在本地的路径为:/Users/macos/Documents/apple_.json
{
"items": [
{
"name": "apple",
"href": "/listedinfo/announcement/c/1231.pdf",
"info_type": "好吃的水果",
"info_type_front": "好吃的红红的水果",
"key": "85265cf9fsdfdf3754-好吃的水果-好吃的红红的水果",
"original_url": "https://www.runoob.com/python3/python3-string-split.html",
"publish_date": "2019-11-18",
"revoke_flag": 0,
"title": "公告",
"update_time": "2019-11-18 11:51:29",
"uuid": "85265cf9fsdfdf3754"
},
{
"name": "banana",
"href": "/listedinfo/announcement/c/1232.pdf",
"info_type": "好吃的水果",
"info_type_front": "好吃的黄黄的水果",
"key": "85265cf9fsdfdffbdf4-好吃的水果-好吃的黄黄的水果",
"original_url": "https://www.runoob.com/python3/python3-string-split.html",
"publish_date": "2019-11-12",
"revoke_flag": 0,
"title": "公告",
"update_time": "2019-11-12 11:51:29",
"uuid": "85265cf9fsdfdffbdf4"
}
]
}
输出结果如下:
![b48747d2187518f38e6abca1073318e2.png](https://i-blog.csdnimg.cn/blog_migrate/8ed0f8264c0714af6cb7ca482ed609c4.jpeg)
具体代码如下:
# coding=utf-8
import os
import json
from openpyxl import Workbook
def read_json(file):
"""
打开设置路径下的json,并json中的内容。 (此时的内容为dict 格式)
"""
if os.path.exists(file):
with open(file, 'r', encoding='utf8') as fp:
json_data = json.load(fp)
else:
print("不存在json文件")
return json_data
def write2xlsx(read_path, sheet_name, write_path):
"""
将json中的内容,写入xlsx文件中。
json 的格式与想要转化成excel 的格式都是case by case, 通用很难,所以遇到了,要自己修改逻辑。
"""
json = read_json(read_path)
item_list = json['items']
excel = Workbook()
sheet = excel.create_sheet(sheet_name, index=0)
v = 0
for ig in item_list:
dic_item = dict(ig)
if v == 0:
for i, key in enumerate(dic_item):
sheet.cell(row=1, column=i+1, value=key)
sheet.cell(row=v+2, column=i+1, value=dic_item[key])
if v > 0:
for i, key in enumerate(dic_item):
sheet.cell(row=v+2, column=i+1, value=dic_item[key])
v = v+1
excel.save(write_path)
def main():
json_path = '/Users/macos/Documents/apple_.json'
save_path = '/Users/macos/Documents/apple_new.xlsx'
st_name = 'apple'
write2xlsx(json_path, st_name, save_path)
if __name__ == '__main__':
main()
三、通过判断第一行的第一个单元格,删除特定行
原来的excel
![d2e48c4cd1d921f0195e40cce752ea55.png](https://i-blog.csdnimg.cn/blog_migrate/141c38587beabd7b288f08150abc1659.jpeg)
![cce4f2c2fdc67edddd01d4217f8b91f4.png](https://i-blog.csdnimg.cn/blog_migrate/afa120c23e45e62285fa5e09d0dd7cbe.jpeg)
删除后的excel
![e2cc8a114a8133aed591024b595321fb.png](https://i-blog.csdnimg.cn/blog_migrate/9c8f711e2f1b7a74efd3b04a463d970e.jpeg)
![c454c0b61869b4fdec9b01481c0a7542.png](https://i-blog.csdnimg.cn/blog_migrate/b500c2dbf8c9950ce1e51e16d4456eb7.jpeg)
代码如下:
# coding=utf-8
import os
import json
from openpyxl import Workbook
from openpyxl import load_workbook
judge_list = ["apple","Blueberry","lemon"]
def remove_rows_and_save(path, save_path):
wb = load_workbook(path)
sheet = wb.worksheets[0]
i = 1
while i <= sheet.max_row:
value = sheet.cell(i, 1).value
# print(value)
if value in a_list:
sheet.delete_rows(i)
print(' delete ===>', value)
# i = i+1
pass
else:
i += 1
wb.save(save_path)
def main():
file_path = '/Users/macos/Downloads/1130test/'
save_file = '/Users/macos/Downloads/1130test/test/'
for path in os.listdir(file_path):
if path[0] == '.' or not path.endswith('.xlsx'):
continue
excel_path = file_path+path
remove_rows_and_save(excel_path, save_file+path)
if __name__ == '__main__':
main()
四、在修改excel 中的字体颜色、填充单元格颜色
import os
import json
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Font
# 开始执行excel操作
excel = Workbook()
# 新建sheet,并且命名
sheet = excel.create_sheet(key, index=ig)
# 确定操作的单元格
cell = sheet.cell(row=1, column=1)
# 修改该单元的值
cell.value = "hello world"
# 修改该单元格内容的字体颜色
cell.font = Font(color="00FFBB00")
# 修改该单元格的填充颜色
cell.fill = PatternFill("solid", fgColor="d4bb22")
单元格的具体颜色在这个网站来直观的选取: https://www.color-hex.com/color/1874cd
还有一个网站 http://www.114la.com/other/rgb.htm