更新excel

master
liuhua 2021-03-09 14:17:39 +08:00
parent 6767257186
commit 2ce8516c47
1 changed files with 98 additions and 0 deletions

98
excel/excel.py 100644
View File

@ -0,0 +1,98 @@
#!/usr/bin/python
# -*- coding=utf-8 -*-
import openpyxl
from openpyxl import worksheet
class Excel(object):
def __init__(self):
self.work_book = None
self.work_sheet: worksheet = None
def load(self, path, index=None, sheet_name=None):
"""
:param path: excel文件地址
:param index: 表格下标
:param sheet_name: 表格名字
:return:
"""
if path is None:
raise ValueError("请配置excel文件地址")
self.work_book = openpyxl.load_workbook(path, read_only=False)
self.set_sheet(index, sheet_name)
def set_sheet(self, index=None, sheet_name=None):
"""
设置表格默认第一个优先按照index
:param index: 表格下标
:param sheet_name: 表格名字
:return:
"""
if isinstance(index, int) and index >= 0:
self.work_sheet = self.work_book.worksheets[index]
elif isinstance(sheet_name, str):
self.work_sheet = self.work_book[sheet_name]
else:
self.work_sheet = self.work_book.worksheets[0]
def update_by_condition(self, param):
"""
:param param:
{
"condition":{
"col":"A",
"value":["张三","李四"]
},
"value":{
"H":"填入的值",
"G":"G列的值"
}
}
:return:
"""
updates = 0
condition = param.get("condition", {})
condition_aim = condition.get("value", [])
for row in range(1, self.work_sheet.max_row + 1):
condition_index = "{}{}".format(condition.get("col"), row)
condition_value = self.work_sheet[condition_index].value
if condition_value in condition_aim:
updates += 1
for col, val in param.get("value", {}).items():
cell = "{}{}".format(col, row)
self.work_sheet[cell] = val
# print("表格\t条件列\t条件\t更新数")
# print("{}\t{}\t{}\t{}".format(self.work_sheet.title, condition.get("col"), condition_aim, updates))
print("表格:{},列在{},条件为{}之一,更新条数:{}".format(self.work_sheet.title, condition.get("col"), condition_aim, updates))
def save(self, path):
self.work_book.save(path)
if __name__ == '__main__':
handler = Excel()
handler.load("/Users/lh/Downloads/联名&IP合——鞋服2.xlsx")
handler.set_sheet(sheet_name="服饰映射")
handler.update_by_condition(
{
"condition": {
"col": "A",
"value": ["IP合作"]
},
"value": {
"E": "填入的值",
"G": "G列的值"
}
}
)
handler.save("./test.xlsx")