excel表格_excel函数公式大全_execl从入门到精通
Python利用openpyxl处理Excel文件(单元格及行列具体操作)2024-02-22 17:07:57
前面章节主要梳理学习了openpyxl的基本操作及单元格样式设置等相关内容,另外也穿插讲解了部分单元格行列操作的知识点。通过实战项目演示,进一步加深了印象,整个过程我们不难发现,对于使用openpyxl操作Excel文件,行列遍历及单元格的定位操作是整个过程的重要技巧和先决条件,因此,这节我们着重讲解openpyxl对于单元格及行列遍历的具体操作。
一、单元格及行列操作相关方法
from openpyxl import load_workbook
wb = load_workbook(“test.xlsx”)
ws = wb[wb.sheetnames[0]]
创建了worksheet工作表实例用ws表示工作表实例,后面不再说明。
(一)获取单元格
总结获取单元格有两种方式:
1.ws[行列名] # 列名使用英文字母
2.ws.cell(row, column) # 列名使用数字
列字母数字转化函数
col_number = openpyxl.utils.column_index_from_string(char)
col_char = openpyxl.utils.get_column_letter(number)
工作表列字母数字转化演示(二)设置单元格的大小(行高和列宽)
# 调整列宽
ws.column_dismensions[‘A’].width = 40.0
# 调整行高
ws.row_dismensions[1].height = 60.0
wb.save(“test.xlsx”)
(三)合并\取消合并单元格
ws.merge_cells(“A1:A2”)
ws.cell(1, 1).value = “合并单元格内容”
ws.unmerge_cells(“A1:D1”)
# 注意设置样式时只设置左上角单元格的样式即可
from openpyxl.styles import Font, Alignment
font = Font(name=u’宋体’, size=28, bold = True)
align = Alignment(horizontal=’center’, vertical=’center’)
合并单元格并设置单元格样式(四)插入行列
ws.insert_rows(n) # 在第n行插入一行
ws.insert_cols(m,n) # 从第m列开始插入n列
(五)删除行列
ws.delete_cols(m, n) # 从第m列开始,删除n列
ws.delete_rows(n) # 删除第n行
上述两种方式删除行(列)后,下(后)面的表格将自动上(前)移。
(六)行列遍历
处理Excel表格有时(大多数)需要对表格进行遍历查找,行列遍历两种方式:
1.ws.max_row获得表格的最大行数,取得遍历次数,使用for循环遍历
for row in range(2, ws.max_row + 1):
# 一般第一行是表头,所以从2开始,range()不含右边界
for cell in row:
print(cell)
2. openpyxl中提供了行列生成器(ws.rows和ws.columns),这两个生成器里面存储了每一行(列)的数据,每一行由一个tuple包裹,便于对行列进行遍。
for row in ws.rows:
for cell in row:
print(cell)
由于ws.rows或ws.columns是生成器类型,不能直接调用,使用时往往将其转化未list类型,然后索引遍历获得某一行(列)的内容
for cell in list(ws.rows)[0]:
print(cell.value)
上面例子打印第一行的内容
此外,还可以使用sheet[行列值: 行列值]来对给定单元格范围进行遍历。
for area_date in sheet[‘A1’:’H8’]:
for cell in area_date:
print(cell.value)
上面的例子打印A1到H8范围内的内容
二、综合实例
我们通过一个实例来回顾下上面的知识点和前面章节的样式内容。接前几章的例子,Excel电子表格中创建一个100×100的乘法表,命名为“漂亮的电子表格”,设置背景色为红色,单元格加上边框,单元格内容居中显示,单元格字体设置为“Times New Roman”,大小8,白色。对表格的行列作出如下设置:单数行蓝色填充、双数行黄色填充、行列相等的单元格蓝色填充、内容是3的倍数的单元格用红色填充。在第一行加上标题,题目为“乘法表”,合并单元格使标题居中显示,标题应用样式字体“宋体”,大小22,加粗显示。
不赘述,直接上代码。
import openpyxl
from openpyxl.styles import PatternFill, Alignment, Border, Side, Font
from openpyxl.styles.colors import RED, BLUE, YELLOW, GREEN, BLACK, WHITE
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "漂亮的电子表格"
ws.sheet_properties.tabColor = RED
font = Font(name="Times New Roman", size=8, color=WHITE)
alignment=Alignment(horizontal='center', vertical='center')
thin = Side(border_style="thin", color=BLACK)
border = Border(top=thin, left=thin, right=thin, bottom=thin)
# 单数行
r_single_fill = PatternFill(fill_type='solid',fgColor=BLUE)
# 双数行
r_double_fill = PatternFill(fill_type='solid',fgColor=YELLOW)
# 行列相等
r_c_fill = PatternFill(fill_type="solid",fgColor=GREEN)
# 3的倍数
three_fill = PatternFill(fill_type="solid",fgColor=RED)
for r in range(1, 101):
for c in range(1, 101):
cell = ws.cell(row = r, column = c, value = r * c)
cell.font = font
cell.alignment = alignment
cell.border = border
if cell.row % 2 != 0:
cell.fill = r_single_fill
elif cell.row % 2 == 0:
cell.fill = r_double_fill
if cell.row == cell.column:
cell.fill = r_c_fill
if cell.value % 3 == 0:
cell.fill = three_fill
wb.save("test.xlsx")
程序运行结果展示:漂亮的Excel表格三、总结展望
怎么样,电子表格五颜六色,只有你想不到,没有python+openpyxl做不到的,因此,只要熟练掌握单元格和行列的操作,你就能定位到任何Excel电子表的位置,然后进行各种设置和统计,是不是很方便?但前提是要熟练掌握哦!
可爱的python如果我想打印电子表格呢?电子表格页面如何设置?我们下一章节梳理探讨这些问题。
标签: r怎么读取excel文件