关于Python里xlwings库对Excel表格的操作(二十一)

发布时间:2023年12月27日

这篇小笔记主要记录如何【用“used_range.Shape”函数整个表格的行列总数】
前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。
【目录部分内容如下】【点击此处可进入目录】
(1)如何安装导入xlwings库;
(2)如何在Wps下使用xlwings中使用WPS对表格操作;
(3)如何安装导入xlwings库、如何用xlwings打开要操作的Excel表格;
(4)如何使用xlwings对Excel表格数据进行读取操作;
(5)如何使用xlwings对Excel表格进行“保存”或“另存为”操作;
(6) 如何使用xlwings对Excel表格进行写入数据操作;
(7)如何使用xlwings向Excel表格中写入Excel公式;
(8)如何使用xlwings库中的“name"函数和“replace”函数对工作表进行改名;

。。。。。。等等

【统计表格中单元格的总列数】
(1)Column_A1_0=Work_Sheet.range('A1').end('right').column
#Work_Sheet是指当前激活的工作表;

#range('A1').end('right').column是指用“range”函数中的“.end('right').column”方法获取单元格“A1"所在行“A1”单元格右侧的总列数。这里从“A1”向右统计所有的列数要.end('right')结合column。

【统计表格中单元格的总行数】
(2)Row_A1_0=Work_Sheet.range('A1').end('down').row
#Work_Sheet是指当前激活的工作表;

#range('A1').end('down').row是指用“range”函数中的“.end('down').row”方法获取单元格“A1"所在列“A1”单元格下方的总行数。这里从“A1”向下统计所有的行数要.end('right')结合row。
?

【用“used_range.Shape”函数整个表格的行列总数】
(3)
Shape_Sheet=Work_Sheet.used_range.shape

#Work_Sheet是指当前激活的工作表;

#用“used_range.Shape”函数整个表格的行列总数。

#注:统计出来的是以(行,列)形式的元组。

【举例说说更直观】

'''
【统计装单元格的行列】
    用“range”函数中的“.end('right').column”参数(方法)统计列;
    用“range”函数中的“.end('down').row”参数(方法)统计行;
    用“used_range.Shape”函数整个表格的行列总数。
最后保存操作。
'''
import xlwings as xw
app=xw.App(visible=False,add_book=False)
app.display_alerts=False               #关闭各种提示信息,可以提高运行速度
File_Name='E:/素材/学生成绩表.xls'
#打开要处理的Excel文件名
Work_Book=app.books.open(File_Name)      
#打开要处理的Excel文件中的工作簿
Work_Sheet=Work_Book.sheets[0]      
#打开要处理的Excel工作簿中的工作表;
#“[0]”是指定打开最靠前的第1份工作表,也可以把“0”写成要打开的指定要打开的“工作表的名称”;
#现在只打开这一个工作表也相当于激活这工作表,后面没有打开激活另一工作表,则所有操作只对现这工作表起作用。
 
Column_A1_0=Work_Sheet.range('A1').end('right').column
#用“range”函数中的“.end.column”方法获取单元格“A1"所在行右方直到最后有数据列的总列数。
Row_A1_0=Work_Sheet.range('A1').end('down').row
#用“range”函数中的“.end.column”方法获取单元格“A1"所在列下方直到最后有数据行的总行数。
print(f'单元格“A1”所在行共有:{Column_A1_0} 列')
print(f'单元格“A1”所在列共有:{Row_A1_0} 行')
 
Row_Ins_Data=[['20230005','孙七',77,77,77],['20230006','周八',88,88,88],['20230007','吴九',99,99,99],['20230008','郑十',100,100,100]]
#准备插入一行的数据
Row_Ins=Work_Sheet.range(f'A{Row_A1_0+1}').expand('right').value=Row_Ins_Data
#在表格最后插入一行,“Row_A1_0”是原来的行数加上“1”就是最后新增一行的行号
 
Column_Ins_Data=['物理',90,90,100,100,77,88,99,100]
#准备插入一列的数据
Column_Ins=Work_Sheet.range(f'{chr(65+Column_A1_0)}1').options(transpose=True).value=Column_Ins_Data
#在表格最后插入一列,“chr(65)”表示A也就A列,“chr(65+Column_A1_0)”表示从A列再向右数"Column_A1_0"列,在这实际上就是最后一列新增一列。
#方法“.options(transpose=True)”是指以这单元为开始按列(向下)填入数据,无此说明则默认是按行(向右)填入数据。
 
Column_A1_1=Work_Sheet.range('A1').end('right').column
#用“range”函数中的“.end.column”方法获取单元格“A1"所在行右方直到最后有数据列的总列数。
Row_A1_1=Work_Sheet.range('A1').end('down').row
#用“range”函数中的“.end.column”方法获取单元格“A1"所在列下方直到最后有数据行的总行数。
print(f'单元格“A1”所在行原共有:{Column_A1_0} 列,插入一列后共有:{Column_A1_1} 列。')
print(f'单元格“A1”所在列共有:{Row_A1_0} 行,插入一行后共有:{Row_A1_1} 行。')

Shape_Sheet=Work_Sheet.used_range.shape
#用“used_range.Shape”函数整个表格的行列总数。
print(f'表格的行列有:{Shape_Sheet} 【注:是(行,列)形式的元组】。')

Work_Book.save()
#保存改动的工作簿。若无保存,则上述操作会随着工作簿的关闭而作废不保存。
Work_Book.close()
#关闭工作簿。
app.quit()
#退出Office软件,不驻留后台。

【运行前的表格】

【运行后的表格】

【终端显示的结果】

文章来源:https://blog.csdn.net/AAA000666_666000/article/details/135244105
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。