def sku_list_catch():
import xlwings as xw
excel_app = xw.App(visible=False,add_book=False)
wb = excel_app.books.open(r'E:\Python\hby\库存管理(自动化).xlsm')
#检索需要处理的总行数
rng = wb.sheets['参数设置'].range('b1').expand('table')
sku_rows = rng.rows.count
sku_catch = wb.sheets['参数设置'].range(f'b2:b{sku_rows}').value
#退出Exce
excel_app.quit()
return sku_catch#返回sku——list的值
sku_list_catch()
import xlwings as xw
excel2_app = xw.App(visible=True,add_book=False)
wb = excel2_app.books.open(r'E:\Python\hby\数据分析.xlsx')
def sku_list_update():
wb.sheets['SKU总销量'].range('a2:d500').clear()#初始化vbasheet里面写入的值
wb.sheets['SKU总销量'].range('a2').options(transpose=True).value = sku_list_catch()#调用sku_list_catch()函数的值,并写入
sku_list_update()
import pymysql
import re
#连接数据库
my_con = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='88751824',db='hby')
# 创建一个游标
cursor = my_con.cursor()
def sku_count():
x = 98
y = 2
#检索需要处理的总行数
rng = wb.sheets['SKU总销量'].range('a1').expand('table')
sku_all_rows = rng.rows.count#获取行数
sku_all_columns = rng.columns.count#获取列数
print(sku_all_columns)
while y <= sku_all_rows:#调用sku_list_catch()函数的值
sku_id = wb.sheets['SKU总销量'].range(f'a{y}:a{y}').value #获取a列的sku值
chuku_data =str(wb.sheets['SKU总销量'].range(f'{chr(x)}1:{chr(x)}1').value)[0:-9]#获取第1列的日期,并转化为str格式
info = [sku_id,chuku_data]
sql_chuku_num = "SELECT SUM(chuku_num) FROM `hby`.`chuku_count` WHERE sku_id = %s AND `yyyymmdd`= %s " # 所有的填充字符都是 %s
cursor.execute(sql_chuku_num,info)
count_str = str(cursor.fetchall())
count_re = re.compile(r'[0-9]+', re.I)
count = count_re.findall(count_str) #不区分大小写
count = str(count)[2:-2]
wb.sheets['SKU总销量'].range(f'{chr(x)}{y}:{chr(x)}{y}').value = count
x += 1
if x == sku_all_columns+97:
if y <= sku_all_rows:
y += 1
x = 98
sku_count()
#info = [date_x,shop_id_x] # 参数必须是 列表或者元组类型
cursor.close() # 关闭游标
my_con.close() # 关闭连接
# 保存数据
wb.save(r'E:\Python\hby\数据分析.xlsx')
#退出Exce
#excel2_app.quit()
运行结果如图,A列的值和第一行的日期作为sql检索条件,抽出的数据写入对应的单元格,没抽到的数据为空。