02-openpyxl操纵表格

1. 打开Excel表格

1. 创建表格
from  openpyxl import  Workbook 
# 实例化
wb = Workbook()
# 激活 worksheet
ws = wb.active
2. 打开已存在Excel表格

通过调用方法load_workbook(filename)进行文件读取,该方法中还有一个read_only参数用于设置文件打开方式,默认为可读可写,该方法最终将返回一个workbook的数据对象

from openpyxl import load_workbook
wb = load_workbook('文件名称.xlsx')

2.获取工作表单

每一个Excel表格中都会有很多张sheet工作表,在对表格操作前需要先选定一张工作表。

"""注意:这里的wb,是一个使用load_workbook方法 获取到的一个对象"""

# 获取所有工作表名(返回一个列表)
sheets = wb.get_sheet_names()

# 获取某一特定的工作表
sheet = wb.get_sheet_by_name('Sheet2')
sheet = wb["表单名称"]

# 获取工作表的表名
sheet_name = sheet.title

# 一般来说,表格大多数用到的是打开时显示的工作表,这时可以用active来获取当前工作表
sheet = wb.active

3. 获取单元格数据

3.1 获取单元格对象
"""这里的sheet,即获取到的一个表单对象"""

# 通过sheet[列行名]获取
a = sheet['A2']

# 通过sheet.cell(row,column)获取,row是 行,column是列
b = sheet.cell(1, 2)  # 即sheet['B1']

这两种方法都是 获取到一个单元格对象:<Cell '注册登录'.B2>,类似这样的一个对象。

尤其注意:sheet.cell(row,column)来获取单元格对象,行列的下标都是从1开始的。

此时还不能获取到单元格内的具体数据。

3.2 获取单元格内的数据

要想获取到单元格内的具体数据,需要使用 单元格对象.value来获取。

b = sheet.cell(1, 2)
print(b.value)
3.3 修改单元格的值
# 针对具体的单元格 ,对其重新赋值,即是修改单元格的值。
sh.cell(row,colum).value = 新的值 

4. 按行获取数据

4.1 获取表单中的总行数和总列数
"""sh是获取到的表单对象"""

# 总行数
sh.max_row

# 总列数
sh.max_column
4.2 获取整行的数据
"""sh是一个 表单对象"""

sh.rows

sh.rows获取到的是一个生成器对象:<generator object Worksheet._cells_by_row at 0x00000000035212E0>,这个生成器对象中是每一行的数据,每一行数据又都是在一个元组中。

4.3 获取整列的数据
"""sh是一个 表单对象"""

sh.columns

同样的,获取到的是一个生成器对象,里面是每一列的数据 ,每一列的数据又都是在一个元组中。

4.4 从生成器中去出每一行,或是每一列的数据
for index in range(len(list(sh.rows))):
    # print(index, list(sh.rows)[index])
    print("*" * 20)
    for item in list(sh.rows)[index]:
        print(item.value)

对一个生成器对象,可以使用list()函数,将其转化成一个列表,然后就可以对这个列表通过下标进行取值。

由于获取到的每一个列表成员都是一个元组,所以需要再次对这个元组进行遍历,最后通过.value获取到具体的数据。

上一篇:C# CLosedXML四句代码搞定DataTable导出到Excel


下一篇:Winforn中通过NPOI导出Excel时通过XSSFClientAnchor和XSSFPicture添加图片