社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用 Python 操作 Excel 单元格(2)

Excel之家ExcelHome • 2 年前 • 340 次点击  

7.2.2扩展单元格区域

示例文件中的“数据透视表”工作表如图 7-4 所示。

以下示例代码使用 expand 函数实现扩展单元格区域,即由某个(或者多个)单元格扩展至单元格区域。 

代码解析

第 1 行代码导入 xlwings 模块,设置别名为 xw。

第 2 行代码导入 os 模块。

第 3 行代码指定 Excel 示例文件名称。

第 4 行代码使用 os 模块的 path.dirname 函数获取 Python 文件所在目录,其中 __file__ 属性返回Python 文件的全路径。

第 5 行代码使用 os 模块的 path.join 函数连接目录名和文件名获取全路径,其中 dest_path 为当前目录,file_name 为文件名。

第 6 行代码启动 Excel 应用程序(处于隐藏状态)。

第 7 行代码打开指定的 Excel 文件。

第 8 行代码使用名称引用工作表,并将工作表中 A3 单元格对象的引用赋值给变量 topleft。

第 9 行代码中 expand 函数的参数为“down”,即由单元格 A3 向下扩展至单元格 A12。

expand 函数的语法格式为 expand(mode),其中参数 mode 指定单元格区域扩展的方式,其可选值如表 7-2 所示。 

 

7.2.3定位区域中的边界单元格

示例文件中的“数据透视表”工作表如图 7-5 所示。 

代码解析

第 1 行代码导入 xlwings 模块,设置别名为 xw。

第 2 行代码导入 os 模块。

第 3 行代码指定 Excel 示例文件名称。

第 4 行代码使用 os 模块的 path.dirname 函数获取 Python 文件所在目录,其中 __file__ 属性返回Python 文件的全路径。

第 5 行代码使用 os 模块的 path.join 函数连接目录名和文件名获取全路径,其中 dest_path 为当前目录,file_name 为文件名。

第 6 行代码启动 Excel 应用程序(处于隐藏状态)。

第 7 行代码打开指定的 Excel 文件。

第 8 行代码使用名称引用工作表,并将工作表中 C8 单元格对象的引用赋值给变量 cell。

第 9 行代码使用 current_region 属性获取 C8 单元格的当前区域。

第 10~16 行代码输出单元格区域的相关信息。

第 10 行代码使用 address 属性获取当前区域的引用地址。

第 11 行代码使用 last_cell 属性定位当前区域的右下角单元格,此单元格有时被称为该单元格区域的“最后单元格”。

第 12 行代码中的 current_rng[0] 代表区域中的第一个单元格,即左上角单元格。

第 13~16 行代码使用 end 函数定位区域边界单元格。

end 函数的语法格式为 end(direction),其中参数 direction 指定定位方向,其可选值如表 7-4 所示。 

第 17 行代码关闭工作簿。

运行示例代码后,输出结果如下所示。 

7.2.4定位工作表中的数据区域

示例文件中的“数据透视表”工作表如图 7-6 所示。  

代码解析

第 1 行代码导入 xlwings 模块,设置别名为 xw。

第 2 行代码导入 os 模块。

第 3 行代码指定 Excel 示例文件名称。

第 4 行代码使用 os 模块的 path.dirname 函数获取 Python 文件所在目录,其中 __file__ 属性返回Python 文件的全路径。

第 5 行代码使用 os 模块的 path.join 函数连接目录名和文件名获取全路径,其中 dest_path 为当前目录,file_name 为文件名。

第 6 行代码启动 Excel 应用程序(处于隐藏状态)。

第 7 行代码打开指定的 Excel 文件。

第 8 行代码使用名称引用工作表,并将工作表对象的引用赋值给变量 wsheet。

第 9~10 行代码中的 wsheet.cells 代表工作表中的全部单元格(无论单元格是否被使用),shape 属性的返回值为包含两个元素的元组,对于 Excel 2007 及以上版本,返回值为“(1048576, 16384)”,第一个元素为总行数,第二个元素为总列数。

第 11~12 行代码输出结果如下所示。 

工作表的数据行数通常是不固定的,在代码中经常需要使用 end 函数定位数据区域范围,end 函数的详细讲解请参阅 7.2.3 小节。

第 14 行代码由第一列最后一个单元格(即 A1048576)向上查找(end 函数的参数设置为“up”),定位 A 列有数据的最后单元格。

由于 Excel 97-2003 格式工作簿 (*.xls) 与 Excel 2007 格式工作簿(*.xls*)的工作表最大行数和列数存在差异,因此代码中使用行号为 rows_cnt 的 A 列单元格作为起始位置,使代码具有更好的通用性。

第 15 行和第 19 行代码使用 address 属性返回单元格的引用地址。

与此类似,第17行代码由第一行最后一个单元格(即XFD1)向左查找(end函数的参数设置为“left”),定位第一行有数据的最后单元格。

第 18 行代码中 address 属性返回单元格的绝对引用(例如:$F$1),split 函数使用 $ 作为分隔符,将字符串拆分为数组,其中第二个元素为该列的列名。

第 16 行和第 20 行代码使用 row 属性和 column 属性返回单元格的行号和列号。

运行示例代码后,输出结果如下所示。 

好书推荐

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/166093