excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Python利用openpyxl处理Excel文件(单元格及行列具体操作)

前面章节主要梳理学习了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如果我想打印电子表格呢?电子表格页面如何设置?我们下一章节梳理探讨这些问题。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接