首页 > python教程

Python获取excel内容及相关操作代码实例

时间:2020-08-19 python教程 查看: 902

Python没有自带openyxl,需要安装: pip install openyxl

打开excel文档: openyxl.load_workbook(excel地址) - 打开现有excel文件

openyxl.Workbook() - 新建一个excel文件

返回一个工作博对象

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
print(type(wb)) #

openpyxl.load_workbook()函数,传入一个存在的excel文件名称/excel文件名称+文件路径,返回一个workbook对象。

从workbook对象中获取工作表

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
# print(type(wb))  # <class 'openpyxl.workbook.workbook.Workbook'>
# 工作簿对象.sheetnames  - 获取当前工作簿中所有表的名字
# print(wb.sheetnames) ['Sheet1', 'Sheet2', 'Sheet3']
# 工作簿对象.active  - 获取当前活动表对应的Worksheet对象
# print(wb.active)  <Worksheet "Sheet1">
# 工作簿对象[表名]  - 根据表名获取指定表对象
# print(wb["Sheet2"]) <Worksheet "Sheet2">
# 表对象.title  - 获取表对象的表名
ws = wb["Sheet1"]
# print(ws.title)  Sheet1
# 表对象.max_row  - 获取表中最多有多少行
# print(ws.max_row)  15
# 表对象.max_column  - 获取表有多少列
print(ws.max_column) # 3

从表中取得单元格

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 表对象['列号行号']  - 获取指定列的指定行对应的单元格对象(单元格对象是 Cell 类的对象,列号是从A开始,行号是从1开始)
a = ws["A1"]
# print(a) # <Cell 'Sheet1'.A1>
# 单元格对象.value  - 获取单元格中的内容
print(a.value)
# 单元格对象.row - 获取行号(数字1开始)
print(a.row)
# 单元格对象.column  - 获取列号(数字1开始)
print(a.column)
# 单元格对象.coordinate  - 获取位置(包括行号和列号)
print(a.coordinate)
# 表对象.iter_rows() - 一行一行的取
row_s = ws.iter_rows()
for a in row_s:
  for i in a:
    print(i.value)
# 表对象.iter_cols()  - 列表一列的取
col_s = ws.iter_cols()
for c in col_s:
  for j in c:
    print(j.value)

用字母来指定列时会出现列Z之后用两个字母代替,可以调用表的cell()方法,传入整数作为行数和列数,第一行或者第一列的整数是1,而不是0

表对象.cell(行号,列号)

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 获取第二列的所有内容
max_row = ws.max_row
for row in range(1, max_row + 1):
  cell = ws.cell(row, 2)
  print(cell.value)

从表中取得列和行

取电子表格中一行、一列或一个矩形区域中的所有 Cell 对象

表对象[位置1:位置2] 获取指定范围内的所有单元格

import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
max_row = ws.max_row
column = get_column_letter(max_row)
# 获取第一列所有单元格对象
row2 = ws["A1":f"{column}1"]
ss = [(cell.coordinate, cell.value) for cells in row2 for cell in cells]
print(ss)


import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
max_cols = ws.max_column
column = get_column_letter(max_cols)
# 获取第一片区域所有单元格对象
row2 = ws["A1":f"{column}3"]
ss = [(cell.coordinate, cell.value) for cells in row2 for cell in cells]
print(ss)

创建并保存Excel文档

openpyxl.Workbook() - 创建空的Excel文件对应的工作薄对象

工作薄对象.save(文件路径) - 保存文件

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 修改sheet的名称
ws.title = "hello_world"
wb.save("test.xlsx")

创建和删除sheet

工作薄对象.create_sheet(title, index) - 在指定工作薄中的指定位置(默认是最后)创建指定名字的表,并返回表对象

工作薄对象.remove(表对象) - 删除工作薄中的指定表

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
wb.create_sheet()
print(wb.sheetnames)
wb.create_sheet("test1")
print(wb.sheetnames)
wb.create_sheet("test2", index=0)
print(wb.sheetnames)
wb.remove(wb["test2"])
print(wb.sheetnames)
wb.save("test.xlsx")

将数据写入表格中

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["hello_world"]
# 方式一
ws["A4"] = "hello_world"
# 方式二
ws.cell(4, 5).value = "hello_test"
wb.save("test.xlsx")

设置单元格样式

用表格展示数据的时候,有的时候需要对不同的数据以不同的风格进行展示从而达到分区或者强调的作用。

import openpyxl
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment

# 1.打开工作薄
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["hello_world"]
# 2.设置单元格字体样式
"""
Font(
  name=None,   # 字体名,可以用字体名字的字符串
  strike=None,  # 删除线,True/False
  color=None,   # 文字颜色
  size=None,   # 字号
  bold=None,   # 加粗, True/False
  italic=None,  # 倾斜,Tue/False
  underline=None # 下划线, 'singleAccounting', 'double', 'single', 'doubleAccounting'
)
"""
# 1:创建字体对象
font1 = Font(
  size=20,
  italic=True,
  color="ff0000",
  bold=True,
  strike=True
)
# 2:设置指定单元格的字体
# 单元格对象.font = 字体对象
ws["B2"].font = font1

# 3:设置单元格填充样式
"""
PatternFill(
  fill_type=None,  # 设置填充样式: 'darkGrid', 'darkTrellis', 'darkHorizontal', 'darkGray', 'lightDown', 'lightGray', 'solid', 'lightGrid', 'gray125', 'lightHorizontal', 'lightTrellis', 'darkDown', 'mediumGray', 'gray0625', 'darkUp', 'darkVertical', 'lightVertical', 'lightUp'
  start_color=None # 设置填充颜色
)
"""
fill = PatternFill(
  fill_type="solid",
  start_color="ffff00"
)
ws["B2"].fill = fill

# 设置单元格对齐样式
al = Alignment(
  horizontal="right",  # 水平向方: center 靠左:left 靠右: right
  vertical="top"     # 垂直方向: center, top, bottom
)
ws["B2"].alignment = al

# 设置边框样式
# 设置边对象(四个边可以是一样的也可以不同,如果不同就创建多个Side对象)
side = Side(border_style="thin", color="0000ff")
# 设置边框对象(left、right、top、bottom表示的是边框的四个边,这儿四个边使用的是一个边对象)
db = Border(left=side, right=side, top=side, bottom=side)
ws["B2"].border = db

# 设置单元格的宽度和高度
# 设置指定列的宽度
ws.column_dimensions["A"].width = 20
# 设置指定行的高度
ws.row_dimensions[1].height = 45

wb.save("test.xlsx")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持python博客。

展开全文
上一篇:Python利用命名空间解析XML文档
下一篇:使用Python将语音转换为文本的方法
输入字:
相关知识
Python 实现图片色彩转换案例

我们在看动漫、影视作品中,当人物在回忆过程中,体现出来的画面一般都是黑白或者褐色的。本文将提供将图片色彩转为黑白或者褐色风格的案例详解,感兴趣的小伙伴可以了解一下。

python初学定义函数

这篇文章主要为大家介绍了python的定义函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助

图文详解Python如何导入自己编写的py文件

有时候自己写了一个py文件,想要把它导入到另一个py文件里面,所以下面这篇文章主要给大家介绍了关于Python如何导入自己编写的py文件的相关资料,需要的朋友可以参考下

python二分法查找实例代码

二分算法是一种效率比较高的查找算法,其输入的是一个有序的元素列表,如果查找元素包含在列表中,二分查找返回其位置,否则返回NONE,下面这篇文章主要给大家介绍了关于python二分法查找的相关资料,需要的朋友可以参考下