python 读excel中一个表_Python读取众多Excel表格中的sheet并整合到一个新的Excel

需求简介

如果你想在一百个或者甚至更多个Excel中提取相同的sheet,并整合到一个新的Excel,该怎么做?

我是想将所有要整理的表格放到与py脚本同文件夹里,进行操作。以下是个人的思路和方法:

# -!- coding: utf-8 -!-

import os

import xlrd

import xlwt

import pytest

import xlsxwriter

# 读取excel文件

def get_excel(excel):

f = xlrd.open_workbook(excel)

return f

# 获取excel中的所有sheet表

def get_sheet(excel):

return get_excel(excel).sheets()

# 获取excal中的所有sheet表名

def get_sheet_name(excel):

return get_excel(excel).sheet_names()

# 获取excel的sheet表个数

def get_sheet_num(excel):

n = 0

sheets = get_sheet(excel)

sheets_name = get_sheet_name(excel)

# print(sheets_name)

for i in sheets:

n += 1

return n

# 获取excel每个sheet表的行数

def get_sheet_rows(excel, sheetpage):

table = get_sheet(excel)[sheetpage]

return table.nrows

# 读取excel文件对应sheet行内容

def get_excel_file(excel, sheetpage):

table = get_sheet(excel)[sheetpage]

rows = table.nrows

# print(rows)

data_value = []

for row in range(rows):

# 返回该行中所有单元格数据组成的列表

data = table.row_values(row)

data_value.append(data)

return data_value

if __name__ == '__main__':

# 定义合并后的目标文件

end_excel = xlwt.Workbook(encoding='utf-8') # 新建工作簿

sheet1 = end_excel.add_sheet("Test Coverage") # 新建sheet

sheet2 = end_excel.add_sheet("Test Cases") # 新建sheet

end_excel.save(r'./test.xlsx')

current_path = os.path.dirname(os.path.abspath(__file__))

excel = []

for e in os.listdir(current_path):

if not e.endswith("test.xlsx") and not e.endswith(".py"): # 排除掉此目录下的py文件和生成的结果文件

excel.append(e)

data_value1 = []

data_value2 = []

# print('excel:', excel)

# 循环取得第n个excel 写第一个sheet

sum1 = 0

sum2 = 0

for n in range(len(excel)): # 循环遍历Excel文件

try:

print(f"excel name ===== >{excel[n]}" )

sheet_num = get_sheet_num(excel[n]) # 获取Excel文件夹里面有几个sheet 这里我是取得第几个sheet

if sheet_num == 4: # 我所需要取的表的顺序一致 所以我就直接取了

data1 = get_excel_file(excel[n], 2) # 也可以根据你想要的sheet名来取

data2 = get_excel_file(excel[n], 3)

if n != 0:

del data1[0] # 第一个excel里面已经有了第一行的概括,所以接下来的copy中我们应该删除第一行的重复类容

del data2[0]

for m in range(len(data1)): # 对获取第一个内容进行重写操作

newdata1 = data1[m] # 遍历获取所有的内容

for k in range(len(newdata1)): # 遍历获取该内容里面的内容 并进行写入

sheet1.write(sum1, k, newdata1[k]) # sum1 是行数 k是列数

end_excel.save(r'./test.xlsx')

sum1 += 1 # 行数写一次增加一次

for p in range(len(data2)): # 同理对第二个内容进行写入

newdata2 = data2[p]

for k in range(len(newdata2)):

sheet2.write(sum2, k, newdata2[k])

end_excel.save(r'./test.xlsx')

sum2 += 1

print('转换中...')

else:

print(get_sheet_name(excel[n]), 'sheet表格缺少sheet') # 我读取的Excel默认是4个sheet 如果不对我可以将不符合要求的Excel找出来

error = get_excel(excel[n])

tips = 'sheet表格缺少sheet'

path = os.getcwd() # 在当前路径下写入log

name = 'error.txt'

with open(name, "a") as f:

f.write(str(error))

f.write(tips + '\n')

print('第' + str(n) + '个文件' + '转换成功')

except Exception as e:

print(f"excel name ===== >{excel[n]}") # 异常处理

print(f"error is {str(e)}")

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值