Python读取Excel的数据

借助第三方库实现读取/修改excel表格内的数据:常见的为 xlrd 和 openpyxl

只是读取excel的数据:xlrd,需要读取/写入数据:openpyxl,所以选择用openpyxl

# 安装第三方库
pip install openpyxl

流程

正常打开一个excel文件的流程:找到文件-双击打开-选择某个表-进行添加/修改-修改/写入就保存文件/只读取就不管-不用了就关闭

from openpyxl import load_workbook

# 找到文件,双击打开文件
workbook = load_workbook(filename="我是文件名.xlsx")

# 选择表名为Sheet1的表
# 指定表名获取表对象
sheet = workbook["Sheet1"]

# 通过索引获取表对象,0开始
sheet = workbook[0]

# 选中某个单元格
cells = sheet ["A1"]

# 获取对应单元格的数据(如果有)
values = cells.value

# 修改/写入就保存文件
workbook.save(filename="我是文件名.xlsx")

# 添加/修改结束了要关掉文件
workbook.close()

写入/修改数据

from openpyxl import load_workbook

workbook = load_workbook(filename="我是文件名.xlsx")

# 存在即修改,不存在则为写入
# 方式一:通过位置,指定单元格插入
sheet ["A1"] = "写入的内容"

# 方式二:通过坐标,某一行某一列获取位置插入
sheet.cell(row=2, column=1,value="写入的内容") // sheet.cell(row=2, column=1).value="写入的内容"

workbook.save(filename="我是文件名.xlsx")

workbook.close()

插入行列,删除行列

from openpyxl import load_workbook

workbook = load_workbook(filename="我是文件名.xlsx")

sheet = workbook["Sheet1"]

# 在第6行的位置插入1行
sheet.insert_rows(6) 
# 两个参数 
# 在第几行插入:idx
# 插入多少行:amount默认等于1

# 在第6行的位置插入4行
sheet.insert_rows(idx=6,amount=4)

# 插入列同理
# 在第6列的位置插入1行
sheet.insert_cols(6)
# 在第6列的位置插入4行
sheet.insert_cols(idx=6,amount=4)

# 删除行
sheet.delete_rows(idx=6, amount=1)

# 删除列
sheet.delete_cols(idx=6, amount=1)

workbook.save(filename="我是文件名.xlsx")

workbook.close()

获取所有表名

from openpyxl import load_workbook

workbook = load_workbook(filename="我是文件名.xlsx")

workbook_list = wb_obj.sheetnames # 列表形式返回

for sheet in workbook_list :
   print(sheet)

最大最小行列

print(sheet.max_row)
print(sheet.min_row)
print(sheet.max_column)
print(sheet.min_column)

行列切片读取数据

Python读取Excel的数据_第1张图片

通过注释可得:

从excel表中按行生成单元格。使用行和列的索引指定循环范围。

如果未指定参数,则范围从A1开始。

如果工作表中没有单元格,将返回空元组。

返回一个内容对象

from openpyxl import load_workbook

wb = load_workbook(filename="./biao.xlsx")
sh = wb["sheet1"]
# 默认情况
print(sh.iter_rows())
# 
wb.close()

-----------------------------------------
from openpyxl import load_workbook

wb = load_workbook(filename="./biao.xlsx")
sh = wb["sheet1"]
# 转成一个容易理解的内容
print(list(sh.iter_rows()))
[(, , )]
wb.close()

-----------------------------------------
from openpyxl import load_workbook

wb = load_workbook(filename="./biao.xlsx")
sh = wb["sheet1"]
# 将数据可视化,默认为values_only=False
print(list(sh.iter_rows(values_only=True)))
[('id', 'name', 'age')]
wb.close()

列切片也是如此,只需要将 iter_rows替换成 iter_cols 即可

修改文字的大小颜色字体等

from openpyxl import load_workbook
from openpyxl.styles import Font,colors

wb = load_workbook(filename="./biao.xlsx")
sh = wb["sheet1"]

# 指定单元格字体颜色,
sheet['A1'].font = Font(
        color=colors.RED,  # 设置颜色
        size=66,           # 设置大小
        bold=True,         # 设置是否加粗
        italic=True        # 设置是否倾斜
    )

"""
除此之外还有许多可以进行设置,以下为Font类方法中init方法
def __init__(self, name=None, sz=None, b=None, i=None, charset=None,
                 u=None, strike=None, color=None, scheme=None, family=None, size=None,
                 bold=None, italic=None, strikethrough=None, underline=None,
                 vertAlign=None, outline=None, shadow=None, condense=None,
                 extend=None):
有许多参数均可以调整使用,主题,下划线等
"""

封装一个读取excel表格数据的方法

from openpyxl import load_workbook

wb = load_workbook(filename="./biao.xlsx")
sh = wb["sheet1"]
# 将数据可视化,默认为values_only=False
data = list(sh.iter_rows(values_only=True))
print(data)
# [('id', 'name', 'age'), (1, '张三', 33), (2, '李四', 44), (3, '王五', 55)]
wb.close()

封装方法:

class ReadExcel:

    def __init__(self,FileName):
        self.workbook = load_workbook(filename=FileName)

    def read_execl(self, SheetName):
        try:
            sheet = self.workbook[SheetName]
            datas = list(sheet.iter_rows(values_only=True))

            # 这里可以对数据进行处理,根据使用需求自行处理

            return datas
        except Exception as e:
            print(f"读取{SheetName}表有误", e)
        finally:
            self.workbook.close()

你可能感兴趣的:(excel)