使用pandas和xlwt,xlrd结合操作excel实现自动化

今天花了一小时给别人写的一个小程序

结果真的让人激动哇

import xlwt
import pandas as pd
from xlutils.copy import copy
import xlrd
# 创建一个汇总表并写入索引
def new_workbook():
    f = xlwt.Workbook()  # 创建工作簿
    # 新建一张表
    sheet = f.add_sheet('sheet1', cell_overwrite_ok=True)
    clu = ["站名", "小区名", "标识", "CI"]
    for i in range(len(clu)):
        sheet.write(0, i, clu[i])
    f.save("D:/数据/汇总后数据.xls")


new_workbook()

# 读取三张表的数据
data1 = pd.read_excel("D:/数据/数据1-20191124.xlsx")
data2_1 = pd.read_excel("D:/数据/数据2-20191124.xlsx", sheet_name='FDD')
data2_2 = pd.read_excel("D:/数据/数据2-20191124.xlsx", sheet_name='GSM')
data3 = pd.read_excel("D:/数据/数据3-20191124.xls")

# 计算每张表的行数
len_data1 = data1.shape[0]
len_data2_1 = data2_1.shape[0]
len_data2_2 = data2_2.shape[0]
len_data3 = data3.shape[0]

# 在写入数据之前,每次都要读取汇总表的行数

# 写入第一张表的数据
def write_first():
    data_sum = pd.read_excel("D:/数据/汇总后数据.xls")
    len_sum = data_sum.shape[0]
    w = xlrd.open_workbook("D:/数据/汇总后数据.xls")   # 打开已经存在的表
    new_work = copy(w)    # 复制
    sheet = new_work.get_sheet(0)   # 打开第一个表
    # 往里面写数据
    for i in range(len_data1):
        sheet.write(len_sum + 1 + i, 0, data1["实际站名"].values[i])
        sheet.write(len_sum + 1 + i, 1, data1["实际小区名"].values[i])
        sheet.write(len_sum + 1 + i, 2, str(data1["基站标识"].values[i]))
        sheet.write(len_sum + 1 + i, 3, str(data1["小区码CI"].values[i]))
    new_work.save("D:/数据/汇总后数据.xls")


write_first()

# 写入第二张表的数据
def write_second():
    data_sum = pd.read_excel("D:/数据/汇总后数据.xls")
    len_sum = data_sum.shape[0]
    w = xlrd.open_workbook("D:/数据/汇总后数据.xls")   # 打开已经存在的表
    new_work = copy(w)    # 复制
    sheet1 = new_work.get_sheet(0)   # 打开第一个表
    # 往里面写数据
    for i in range(len_data2_1):
        sheet1.write(len_sum + 1 + i, 0, data2_1["ENODEBName"].values[i])
        sheet1.write(len_sum + 1 + i, 1, data2_1["CELLNAME"].values[i])
        sheet1.write(len_sum + 1 + i, 2, str(data2_1["ENODEBID"].values[i]))
        sheet1.write(len_sum + 1 + i, 3, str(data2_1["ECI"].values[i]))
    new_work.save("D:/数据/汇总后数据.xls")

    for i in range(len_data2_2):
        sheet1.write(len_sum + 1 + i + data2_1.shape[0], 0, data2_2["网元名称"].values[i])
        sheet1.write(len_sum + 1 + i + data2_1.shape[0], 1, data2_2["小区网元名称"].values[i])
        sheet1.write(len_sum + 1 + i + data2_1.shape[0], 2, str(data2_2["LAC"].values[i]))
        sheet1.write(len_sum + 1 + i + data2_1.shape[0], 3, str(data2_2["CI"].values[i]))
    new_work.save("D:/数据/汇总后数据.xls")


write_second()

# 写入第三张表的数据
def write_third():
    data_sum = pd.read_excel("D:/数据/汇总后数据.xls")
    len_sum = data_sum.shape[0]
    w = xlrd.open_workbook("D:/数据/汇总后数据.xls")   # 打开已经存在的表
    new_work = copy(w)    # 复制
    sheet = new_work.get_sheet(0)   # 打开第一个表
    # 往里面写数据
    for i in range(len_data3):
        sheet.write(len_sum + 1 + i, 0, data3["BTSNAME"].values[i])
        sheet.write(len_sum + 1 + i, 1, data3["Cell Name"].values[i])
        sheet.write(len_sum + 1 + i, 2, str(data3["LAC"].values[i]))
        sheet.write(len_sum + 1 + i, 3, str(data3["CI"].values[i]))
    new_work.save("D:/数据/汇总后数据.xls")


write_third()


# 创建一个索引表并写入索引
def workbook():
    f = xlwt.Workbook()  # 创建工作簿
    # 新建一张表
    sheet = f.add_sheet('sheet1', cell_overwrite_ok=True)
    clu = ["站名", "小区名", "标识", "CI"]
    for i in range(len(clu)):
        sheet.write(0, i, clu[i])
    f.save("D:/数据/索引后数据.xls")


workbook()


def index_work():
    # 读取索引表数据
    index = pd.read_excel("D:/数据/索引表.xlsx")
    # 读取汇总表数据
    data = pd.read_excel("D:/数据/汇总后数据.xls")

    w = xlrd.open_workbook("D:/数据/索引后数据.xls")   # 打开已经存在的表
    new_work = copy(w)    # 复制
    sheet = new_work.get_sheet(0)   # 打开第一个表
    # 往里面写数据
    k = 0
    for j in range(index.shape[0]):
        for i in range(data.shape[0]):
            if index["站名"].values[j] == data["站名"].values[i]:
                k += 1
                sheet.write(k, 0, data["站名"].values[i])
                sheet.write(k, 1, data["小区名"].values[i])
                sheet.write(k, 2, str(data["标识"].values[i]))
                sheet.write(k, 3, str(data["CI"].values[i]))
    new_work.save("D:/数据/索引后数据.xls")


index_work()

在这里插入图片描述

发布了60 篇原创文章 · 获赞 6 · 访问量 7773

猜你喜欢

转载自blog.csdn.net/qq_44205272/article/details/103283015