pyhton3 execl 数据插入追加

# coding=UTF-8
import xlrd
import xlwt
from xlutils.copy import copy
import requests,re,time
import pymssql

def con_sql(ssql):
    #连接SQL
    conn = pymssql.connect(host='xxxxx',
                           user='xxxxxxxxx',
                           password='xxxxxx',
                           database='xxxxxxxxxxx',
                           charset='utf8')

    #查看连接是否成功
    cursor = conn.cursor()
    sql = ssql
    cursor.execute(sql)
    #用一个rs变量获取数据
    rs = cursor.fetchall()
    conn.close()
    return rs


def write_excel_xls(path, sheet_name, value):
    index = len(value)  # 获取需要写入数据的行数
    workbook = xlwt.Workbook()  # 新建一个工作簿
    sheet = workbook.add_sheet(sheet_name)  # 在工作簿中新建一个表格
    for i in range(0, index):
        for j in range(0, len(value[i])):
            sheet.write(i, j, value[i][j])  # 像表格中写入数据(对应的行和列)
    workbook.save(path)  # 保存工作簿
    print("xls格式表格写入数据成功!")


def write_excel_xls_append(path, value):
    index = len(value)  # 获取需要写入数据的行数
    workbook = xlrd.open_workbook(path)  # 打开工作簿
    sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
    worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
    rows_old = worksheet.nrows  # 获取表格中已存在的数据的行数
    new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象
    new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格
    for i in range(0, index):
        for j in range(0, len(value[i])):
            new_worksheet.write(i + rows_old, j, value[i][j])  # 追加写入数据,注意是从i+rows_old行开始写入
    new_workbook.save(path)  # 保存工作簿
    print("xls格式表格【追加】写入数据成功!")


def read_excel_xls(path):
    workbook = xlrd.open_workbook(path)  # 打开工作簿
    sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
    worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
    for i in range(0, worksheet.nrows):
        for j in range(0, worksheet.ncols):
            print(worksheet.cell_value(i, j), "\t", end="")  # 逐行逐列读取数据
        print()




#########################################################################################
otherStyleTime = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
book_name_xls = f'D:\\关键词搜索工作簿_{str(otherStyleTime)}.xls'
sheet_name_xls = '关键词搜索'
value_title = [["搜索词", "分词结果","推荐词", "搜索结果", "商品名称", "所属一级分类","所属二级分类","所属三级分类","所属品牌"] ]
write_excel_xls(book_name_xls, sheet_name_xls, value_title)
ser='D:\\se.txt'
with open(ser,'r')as e:
    for se in e.readlines():
        print(se)
        r1 = requests.get(f'http://api.xxxxxxxxxxxxxxxx/directsearch/search?source=all50keyword&keyword={se}&showFlag=1,'
             '3&selectType=2&promotionChannelType=2&isExcludeJiCai=1&appId=110001&platform=pc&ip=127.0.0.1&sortBy=vcdesc&page=1&pageSize=10')
        pat = re.compile(r'Id":(.*?),', re.S)
        result = pat.findall(r1.text)
        pat2 = re.compile(r'tokens":"(.*?)"', re.S)
        pat3 = re.compile(r'effectiveTokens":"(.*?)"', re.S)
        result2 = pat2.findall(r1.text)
        result3 = pat3.findall(r1.text)
        #获取商品skuid
        j=[]
        for i in result:
            #i= str(i)
            i=re.findall(r"\d{9}",i)
            j.append(i)
            for z in j:
                if z==[]:
                    j.remove(z)
        #循环SKUID写EXECL
        for i in j:
            # 写入EXECL
            sql=f"""SELECT  p.Name ,
                        p.Brand ,
                        CategoryName1 ,
                        CategoryName2 ,
                        CategoryName3
                FROM    dbo.t_Product_Product p
                        INNER JOIN ( SELECT c.Id ,
                                            CategoryName1 = a.Name ,
                                            CategoryName2 = b.Name ,
                                            CategoryName3 = c.Name
                                     FROM   t_Product_Category a
                                            INNER JOIN t_Product_Category b ON a.Id = b.ParentId
                                                                              AND a.Mark > 0
                                                                              AND b.Mark > 0
                                            INNER JOIN t_Product_Category c ON b.Id = c.ParentId
                                                                              AND c.Mark > 0
                                   ) t ON p.CategoryId3 = t.Id
                WHERE   p.Mark > 0 AND p.Id={i[0]}"""
            res_sql = con_sql(sql)
            print(res_sql)
            #元组取值
            for o in res_sql:
                print(o)
            #调用方法执行
            value1 = [[se, result2,result3, str(i[0]),o[0],o[2],o[3],o[4],o[1]]]
            write_excel_xls_append(book_name_xls, value1)
            read_excel_xls(book_name_xls)










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章