sgz_csdn 2023-06-08 17:07 采纳率: 0%
浏览 14

xlwings编辑报错 'Sheet' object is not callable

执行的时候老是有 以下报错,有没大拿能帮忙看下?

Traceback (most recent call last):
  File "E:/个人软件/pychrm/PycharmProjects/LTE网管脚本/sgz_xlwings.py", line 40, in <module>
    if ULogicalCell('K'+str(i2)).value == UUtranCellFDD.range('B'+str(ii2)).value:
TypeError: 'Sheet' object is not callable

import xlwings as xw
from openpyxl.utils import get_column_letter
app = xw.App(visible=True, add_book=False)
app.display_alerts = False    # 关闭一些提示信息,可以加快运行速度。 默认为 True。
app.screen_updating = True     # 更新显示工作表的内容。默认为 True。关闭它也可以提升
删除小区文件 = app.books.open(r'E:\ \11网管导出文件\W导出文件\ICM\服务小区\\删除小区模版.xlsx')      # 打开现有的工作簿
删除小区文件sheet = 删除小区文件.sheets['sheet1']
删除max_row = 删除小区文件sheet.used_range.last_cell.row  # 获取最大行数
UMTS文件 = app.books.open(r'E:\\11网管导出文件\W导出文件\ICM\服务小区\删除小区\已做好的脚本\版本1_删除小区脚本.xlsx')      # 打开现有的工作簿
UUtranCellFDD = UMTS文件.sheets['UUtranCellFDD']
uuc_nrows = UUtranCellFDD.used_range.last_cell.row  # 获取最大行数
uuc_ncol = UUtranCellFDD.used_range.last_cell.column  # 获取最大列
UUtranCellFDD_MAX索引 = get_column_letter(uuc_ncol + 1)
ULogicalCell = UMTS文件.sheets['ULogicalCell']
ulc_nrows = ULogicalCell.used_range.last_cell.row  # 获取最大行数
ulc_ncol = ULogicalCell.used_range.last_cell.column  # 获取最大列
ulc_MAX索引 = get_column_letter(ulc_ncol + 1)
for i in range(6, uuc_nrows):
    for ii in range(2,删除max_row):
        if UUtranCellFDD.range('F'+str(i)).value == 删除小区文件sheet.range('B'+str(ii)).value:
            if UUtranCellFDD.range('E'+str(i)).value == 删除小区文件sheet.range('A'+str(ii)).value:
                print(i,uuc_ncol+1)
                UUtranCellFDD.range(i,uuc_ncol+1).value = 0
UUtranCellFDD.range('A6:'+UUtranCellFDD_MAX索引+str(uuc_nrows),(uuc_nrows,uuc_ncol)).api.Sort(Key1=UUtranCellFDD.range(UUtranCellFDD_MAX索引+'6').api, Order1=1,Orientation=1)
for i3 in range(6, uuc_nrows):
    if UUtranCellFDD.range(i3,uuc_ncol+1).value != 0:
        break
UUtranCellFDD[str(i3)+':'+str(uuc_nrows)].delete()# 删除行
UUtranCellFDD[str(UUtranCellFDD_MAX索引)+':'+str(UUtranCellFDD_MAX索引)].delete()
uuc_nrows1 = UUtranCellFDD.used_range.last_cell.row  # 获取最大行数
for i2 in range(6, ulc_nrows):
    for ii2 in range(6,uuc_nrows1):
        if ULogicalCell('K'+str(i2)).value == UUtranCellFDD.range('B'+str(ii2)).value:
            ULogicalCell.range(i2,ulc_ncol+1).value = 0
ULogicalCell.range('A6:'+ulc_MAX索引+str(ulc_nrows),(ulc_nrows,ulc_ncol)).api.Sort(Key1=ULogicalCell.range(ulc_MAX索引+'6').api, Order1=1,Orientation=1)
# sheet.range('A1').api.EntireRow.Delete()#删除某个单元格所在的整行数据(以单元格'A1'为例)
for i4 in range(6, uuc_nrows):
    if ULogicalCell.range(i4,ulc_ncol+1).value != 0:
        break
ULogicalCell[str(i4)+':'+str(ulc_nrows)].delete()# 删除行
ULogicalCell[str(ulc_MAX索引)+':'+str(ulc_MAX索引)].delete()
UMTS文件.save()
UMTS文件.close()
删除小区文件.close()


  • 写回答

2条回答 默认 最新

  • 开发技术控 2023-06-08 17:14
    关注

    这个错误是因为你试图调用Excel工作表Sheet对象的range()方法,但是Sheet对象不是可调用的。
    range()方法实际上属于Excel工作簿Workbook对象,而不是Sheet对象。
    所以,正确的代码应该是:

    import xlwings as xw 
    from openpyxl.utils import get_column_letter
    app = xw.App(visible=True, add_book=False)
    app.display_alerts = False    
    app.screen_updating = True     
        
    删除小区文件 = app.books.open(r'E:\ \11网管导出文件\W导出文件\ICM\服务小区\\删除小区模版.xlsx')      
    删除小区文件sheet = 删除小区文件.sheets['sheet1']
    删除max_row = 删除小区文件sheet.used_range.last_cell.row  
    
    UMTS文件 = app.books.open(r'E:\\11网管导出文件\W导出文件\ICM\服务小区\删除小区\已做好的脚本\版本1_删除小区脚本.xlsx')      
    UUtranCellFDD = UMTS文件.sheets['UUtranCellFDD']
    uuc_nrows = UUtranCellFDD.used_range.last_cell.row  
    uuc_ncol = UUtranCellFDD.used_range.last_cell.column
    UUtranCellFDD_MAX索引 = get_column_letter(uuc_ncol + 1)
    ULogicalCell = UMTS文件.sheets['ULogicalCell'] 
    ulc_nrows = ULogicalCell.used_range.last_cell.row
    ulc_ncol = ULogicalCell.used_range.last_cell.column
    ulc_MAX索引 = get_column_letter(ulc_ncol + 1)
    
    for i in range(6, uuc_nrows): 
        for ii in range(2,删除max_row):
            if UUtranCellFDD.range('F'+str(i)).value == 删除小区文件sheet.range('B'+str(ii)).value:
                if UUtranCellFDD.range('E'+str(i)).value == 删除小区文件sheet.range('A'+str(ii)).value:
                    print(i,uuc_ncol+1)
                    UUtranCellFDD.range(i,uuc_ncol+1).value = 0
                    
    UUtranCellFDD.range('A6:'+UUtranCellFDD_MAX索引+str(uuc_nrows),(uuc_nrows,uuc_ncol)).api.Sort(Key1=UUtranCellFDD.range(UUtranCellFDD_MAX索引+'6').api, Order1=1,Orientation=1)
    
    for i3 in range(6, uuc_nrows): 
        if UUtranCellFDD.range(i3,uuc_ncol+1).value != 0:
            break 
    UUtranCellFDD[str(i3)+':'+str(uuc_nrows)].delete()
    UUtranCellFDD[str(UUtranCellFDD_MAX索引)+':'+str(UUtranCellFDD_MAX索引)].delete() 
    uuc_nrows1 = UUtranCellFDD.used_range.last_cell.row  
    
    for i2 in range(6, ulc_nrows):
        for ii2 in range(6,uuc_nrows1): 
            if ULogicalCell('K'+str(i2)).value == UUtranCellFDD.range('B'+str(ii2)).value:
                ULogicalCell.range(i2,ulc_ncol+1).value = 0
                
    ULogicalCell.range('A6:'+ulc_MAX索引+str(ulc_nrows),(ulc_nrows,ulc_ncol)).api.Sort(Key1=ULogicalCell.range(ulc_MAX索引+'6').api, Order1=1,Orientation=1)      
    
    for i4 in range(6, ulc_nrows): 
        if ULogicalCell.range(i4,ulc_ncol+1).value != 0:
            break
    ULogicalCell[str(i4)+':'+str(ulc_nrows)].delete()
    ULogicalCell[str(ulc_MAX索引)+':'+str(ulc_MAX索引)].delete()
    
    UMTS文件.save()  
    UMTS文件.close()
    删除小区文件.close()
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月8日

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,