#Work_Sheet是指当前激活的工作表;
#range('A1').end('right').column是指用“range”函数中的“.end('right').column”方法获取单元格“A1"所在行“A1”单元格右侧的总列数。这里从“A1”向右统计所有的列数要.end('right')结合column。
#Work_Sheet是指当前激活的工作表;
#range('A1').end('down').row是指用“range”函数中的“.end('down').row”方法获取单元格“A1"所在列“A1”单元格下方的总行数。这里从“A1”向下统计所有的行数要.end('right')结合row。
【举例说说更直观】
'''
【统计装单元格的行列】
用“range”函数中的“.end('right').column”参数(方法)统计列;
用“range”函数中的“.end('down').row”参数(方法)统计行;
最后保存操作。
'''
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','洪七',88,99,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,99]
#准备插入一列的数据
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} 行。')
Work_Book.save()
#保存改动的工作簿。若无保存,则上述操作会随着工作簿的关闭而作废不保存。
Work_Book.close()
#关闭工作簿。
app.quit()
#退出Office软件,不驻留后台。
【运行前的表格】
【运行后的表格】
【终端显示的结果】