使用xlwings筛选excel表格,报错元祖没有range 属性

import xlwings
import pandas
import datetime

# 启动excel程序
app = xlwings.App(visible=True, add_book=False)
# 打开’1.csv‘
workbook = app.books.open(r'D:\公司\逾期\1.csv')
worksheet = workbook.sheets

# 创建一个空DataFrame
table = pandas.DataFrame()

# 遍历当前工作表
for j in enumerate(worksheet):
    # 读取当前工作表数据
    values = j.range('A1').options(pandas.DataFrame, header=1, index=False, expand='table').value
    # 将数据合并到前面创建的DataFrame中
    table = table.append(data, ignore_index=True)

# 筛选’当前连续逾期天数‘是'1'的数据
aDay = table[table['当前连续逾期天数'] == '1']

someDay = table[table['当前连续逾期天数'] > '1']
#
# # 获取当天日期
# today=datetime.date.today()
#
# 打开’扫码付逾期‘表格
wbExcel = app.books.open(r'D:\公司\逾期\扫码付逾期.xlsx')
# 在’扫码付逾期‘表里新增工作表,以当天日期作为工作表名
nWorksheet = wbExcel.sheets.add(today)
# 在新工作表中写入筛选值为1的数据
nWorksheet['A1'].options(index=False).value = aDay
# 获取当前工作表数据区域右下角的单元格
lastCell = nWorksheet('A1').expand('table').last_cell
# 获取数据区域最后一行的行号
lastRow = lastCell.row()
# 在新工作表中写筛选值大于1的数据
nWorksheet[str[lastRow] + '3'].options(index=False).value = someDay
wbExcel.save()
app.quit()

 

for j in enumerate(worksheet):
改成

for i,j in enumerate(worksheet):
或者
for j in worksheet:
 

xlwings版本更新一下。

enumerate返回的是一个元组,(下标,内容)。

你可以改为j[1],表示内容。

其实你可以for j in worksheet:就行。