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)










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