python openpyxl模块使用教程

这篇具有很好参考价值的文章主要介绍了python openpyxl模块使用教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python openpyxl模块使用教程,Python,python,数据库

安装 openpyxl 模块

pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

openpyxl 在只读取数据时 Excel 文件可以打开,但是 有修改 时则不允许打开

工作簿相关方法

  • openpyxl.Workbook() : 新建工作簿,配合 save 方法使用

  • openpyxl.load_workbook( path ) : 打开存在的工作簿

  • wb[ sheet_name ] : 获取指定名称的工作表对象

  • wb.get_sheet_by_name('Sheet1'): 获取指定名称的工作表对象

  • wb.sheetnames: 获取所有工作表名称,以列表形式返回(非函数)

  • wb.worksheets:获取所有工作表对象,以列表形式返回(非函数)

  • wb.create_sheet( title=None, index=None ) : 创建/新增工作表。title为工作表的名称 ;index为该工作表的位置,参数可不写,默认在最后增加名称为 Sheet的工作表

  • wb.copy_worksheet(sheet):在当前工作簿复制指定的工作表并返回复制后的工作表对象

  • wb.remove(sheet)删除指定的工作表

  • ws.save(path)保存到指定路径path的Excel文件中,若文件不存在会新建,若文件存在会覆盖(openpyxl 数据修改时必须调用此接口保存,否则数据不会保存

  • wb.index( worksheet ): 获取工作表的索引

  • wb.move_sheet( sheet, offset=0 ): 移动工作表

工作表对象

  • ws.title获取或设置工作表名
  • ws.max_row:工作表最大行数
  • ws.max_column:工作表最大列数
  • ws.append(list):表格末尾追加数据
  • ws.merge_cells(‘A2:D2’ / start_row= , end_row= , start_column= , end_column= )合并单元格
  • ws.unmerge_cells(‘A2:D2’ / start_row= , end_row= , start_column= , end_column= )解除合并单元格
  • ws.sheet_properties.tabColor = "1072BA": 设置/获取 sheet 标签按钮颜色
  • ws.delete_rows(1, ws.max_row): 清空工作表
  • ws.sheet_view.showGridLines = False: 不显示网格

单元格相关方法

1. 单元格对象获取

  • ws['A1']:根据坐标获取单个单元格对象
  • ws.cell( row, column, value=None ):根据行列获取单个单元格对象
  • ws[1]:获取第一行所有单元格对象,ws[‘1’]也可
  • ws['A']:获取第A列所有单元格对象
  • ws['A':'B']:获取从A到B列所有单元格对象,ws[‘A:B’]也可
  • ws[1:2]:获取从1到2行所有单元格对象,ws[‘1:2’]也可
  • ws['A1':'B2']:获取从A1到B2范围所有单元格对象,ws[‘A1:B2’]也可。
  • ws.values:获取所有单元格数据的可迭代对象,可以通过for循环迭代或通过list(ws.values)转换为数据列表
  • ws.rows:获取所有数据的格式组成的可迭代对象
  • ws.columns:获取所有数据的格式组成的可迭代对象
  • ws.iter_rows(min_row=None, max_row=None, min_col=None, max_col=None):获取指定边界范围并以的格式组成的可迭代对象,默认所有行
  • ws.iter_rows(values_only=True)获取 sheet 页中边界范围内所有数据内容,以列表形式返回
  • ws.iter_cols(min_col=None, max_col=None, min_row=None, max_row=None): 获取指定边界范围并以的格式组成的可迭代对象,默认所有列

单元格写入后一定要保存,否则Excel不会变化
1. 单个单元格数据读写

import openpyxl

source_path = 'test.xlsx'
source_wb = openpyxl.load_workbook(source_path )
sour_sheet = source_wb['Sheet1'] # 获取 Sheet1 对象

# 读/写  B2 单元格数据
sour_sheet['B2'].value = 12
cell_value = sour_sheet['B2'].value
print('B2 ', cell_value)

# 读/写 2行 2列 数据
sour_sheet.cell(2, 3).value = 34
cell_value = sour_sheet.cell(2, 3).value
print('2行3列 ', cell_value)

2. 多个单元格数据读写

import openpyxl

source_path = 'test.xlsx'
source_wb = openpyxl.load_workbook(source_path )
sour_sheet = source_wb['Sheet1'] # 获取 Sheet1 对象

test_data = [
    [1, 2 , 3],
    [4, 5 , 6],
    [7, 8 , 9],
]

# 写  A1:C3 单元格数据
cells_obj = sour_sheet['A1:C3']  # 获取此范围内单元格对象
index_row = 0
index_column = 0
for row_cells in cells_obj:
    for col_cell in row_cells:
        col_cell.value = test_data[index_row][index_column]
        index_column += 1
    index_row += 1
    index_column = 0

# 读 A1:C3 单元格数据
for row_cells in cells_obj:
    for col_cell in row_cells:
        print(col_cell.value)

2. 单元格属性

  • cell.value :获取或设置
  • cell.column数字列标,例:1
  • cell.column_letter字母列标,例:A
  • cell.row行号
  • cell.coordinate坐标,例如'A1'
  • cell.data_type数据类型, 's' = string字符串,'n' = number数值,会根据单元格值自动判断
  • cell.number_format单元格格式,默认'General'常规,详见excel自定义数据类型

3. 单元格样式

  • cell.font :获取或设置单元格Font对象 (字体名称,字体大小,是否加粗,字体颜色等)
  • cell.border : 获取或设置单元格边框
  • cell.alignment : 获取或设置单元格水平/垂直对齐方式
  • cell.fill:获取或设置单元格填充颜色
  • ws.row_dimensions[行号]:获取行对象(非行数据,包括行的相关属性、行高等)
  • ws.column_dimensions[字母列标]:获取列对象(非行数据,包括行的相关属性、列宽等)
  • get_column_letter(index):根据列的索引返回字母
  • column_index_from_string(string):根据字母返回列的索引
  • row_obj.height:获取或设置行高
  • column_obj.width:获取或设置列宽
  • ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4): 合并单元格
  • ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4) : 拆解单元格
  • ws.column_dimensions['A'].auto_size = True: 自适应第一列的宽度(实测无效)
  • ws.row_dimensions[1].auto_size = True: 自适应第 1 行的高度(实测无效)
  • ws.cell(row, column).has_style: 判断该单元格是否有特殊格式
  • ws.cell(row, column)._style: 复制该单元格所有格式,只能在本工作簿内复制

openpyxl模块中与字体,颜色,背景,边框,字体,行宽,行高,单元格格式等相关的内容都放在了styles模块中

复制合并的单元格,只能一个个的复制单个单元格格式,再执行合并操作

1. 设置单元格字体格式、行高列宽、对齐格式

  • Font 类设置样式
    • name:字体名称。
    • size:字体大小。
    • color:颜色。
    • bold:加粗。
    • italic:斜体
    • underline:下划线
  • Alignment 类设置样式
    • horizontal:横向(左右)对齐方式。
      • 可选参数 'left' , 'centerContinuous' , 'center' , 'distributed' , 'right' , 'fill' , 'general' , 'justify'
    • vertical:竖向(上下)对齐方式。
      • 可选参数 'bottom' , 'center' , 'distributed' , 'top' , 'justify'
    • text_rotation=0: 文本旋转
    • wrap_text=False: 是否换行
    • shrink_to_fit = False: 是否缩小字体适应列宽
    • indent = 0 :缩进
  • border_style 控制边框样式
    • 'dashDot','dashDotDot', 'dashed','dotted', 'double','hair', 'medium', 'mediumDashDot', 'mediumDashDotDot', 'mediumDashed', 'slantDashDot', 'thick', 'thin'
from openpyxl.styles import Font, colors, Alignment # 导入必需的类
# Font对象表示字体样式,Alignment对象表示对齐方式
import openpyxl

source_path = 'test.xlsx'
source_wb = openpyxl.load_workbook(source_path )
sour_sheet = source_wb['Sheet1'] # 获取 Sheet1 对象

# 设置字体  设置 等线24号,加粗斜体,字体颜色红色
my_red = openpyxl.styles.colors.Color(rgb='00FF0000')
bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=my_red, bold=True)
sour_sheet['A1'].font = bold_itatic_24_font

# 设置对齐方式 设置B1中的数据垂直居中和水平居中
sour_sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')

# 设置行高和列宽 第2行行高
sour_sheet.row_dimensions[2].height = 40
# C列列宽
sour_sheet.column_dimensions['C'].width = 30

source_wb.save(source_path)

2. 设置单元格自动换行

遇到超长文本显示不全或者越格,可以通过自动换行解决

from openpyxl import Workbook
from openpyxl.styles import Alignment

# 创建一个新的Excel工作簿
wb = Workbook()
# 选择第一个工作表
ws = wb.active

# 在A1单元格中添加长文本
ws['A1'] = '这是一份非常长的文本,需要进行自动换行才能全部显示出来。'

# 设置A1单元格自动换行
ws['A1'].alignment = Alignment(wrap_text=True)

wb.save("文件名")

3. 写入整行数据

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
 
sheet = wb.create_sheet('sheet2')
lis = ['张三','在家','地址','学号','手机','昵称']
sheet.append(lis)
 
wb.save("test.xlsx")

4. 设置单元格边框

import openpyxl
from openpyxl.styles import Border, Side

wb = openpyxl.Workbook()        # 创建一个excel文件
sheet = wb.active               # 获得一个的工作表
sheet.title = "边框控制"

border = Border(left=Side(border_style='thin', color='000000'),
                right=Side(border_style='mediumDashed', color='000000'),
                top=Side(border_style='double', color='000000'),
                bottom=Side(border_style='dashed', color='000000'))

sheet['B2'].border = border

wb.save("test.xlsx")

4. 插入/删除 行列

  • ws.insert_rows(row_index,amount=1):在第row_index行上方插入amount列,默认插入1列
  • ws.insert_cols(col_index,amount=1):在第col_index列左侧插入amount列,默认插入1列
  • ws.delete_rows(row_index,amount=1):从row_index行开始向下删除amount行,默认删除1行
  • ws.delete_cols(col_index,amount=1):从col_index列开始向右删除amount行,默认删除1列

5. 获取 sheet 页内所有数据内容

# enumerate(可迭代对象, start) 
# 将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
for i, row in enumerate(sheet.iter_rows(values_only=True), 1):
            d = list(row)
            print(f"行{i}",d, "\n")

6. 判断单元格是否有删除线

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')
ws = wb['Sheet1']
cell = ws.cell(row=1, column=1)  
print(cell.font.strike)  

使用openpyxl模块,假设test.xlsx中的Sheet1的A1单元格有删除线,cell.font.strike为True文章来源地址https://www.toymoban.com/news/detail-635833.html

7. 清除excel 单元格所有格式

def removeFormatting(ws):
    # ws is not the worksheet name, but the worksheet object
    for row in ws.iter_rows():
        for cell in row:
            cell.style = 'Normal'

到了这里,关于python openpyxl模块使用教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python:使用openpyxl读取Excel文件转为json数据

    openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files 文档 https://openpyxl.readthedocs.io/en/stable/ https://pypi.org/project/openpyxl/ 安装 环境 读取文件示例:将Excel文件读取为json数据 有如下一个文件 data.xlsx 实现代码 输出读取的json数据 读写示例

    2024年02月15日
    浏览(73)
  • 使用Python pymysql连接Mysql数据库-菜鸟教程

    1、安装pymysql模块 pip install pymysql 2、启动Mysql数据库服务 net start mysql80  3、连接数据库 运行结果如下  4、创建数据库表 执行成功后,在本地登录mysql数据库进行查看验证   5、数据库插入操作  执行程序后在本地查看验证  6、数据库查询操作 Python查询Mysql使用 fetchone() 方法

    2024年02月04日
    浏览(53)
  • Python 数据库应用教程:安装 MySQL 及使用 MySQL Connector

    Python可以用于数据库应用程序。 其中最流行的数据库之一是MySQL。 为了能够在本教程中尝试代码示例,您应该在计算机上安装MySQL。 您可以在 MySQL官方网站 下载MySQL数据库。 Python需要一个MySQL驱动程序来访问MySQL数据库。 在本教程中,我们将使用\\\"MySQL Connector\\\"驱动程序。 我们

    2024年02月05日
    浏览(66)
  • Python 安装mysql数据库模块

    先找到Python安装目录下的Script文件 2.当前路径下进入cmd命令窗口,输入pip3 install pymysql  3.如上图所示就是安装成功 1.点击File里的Settings 2.点击Project Interperter 里的+号 3.先搜索要安装的模块名 ,这里是pymysql,然后点击Install Package安装即可  4.安装成功后Project Interperter界面会

    2024年02月16日
    浏览(41)
  • 【Python入门教程】Python常用表格函数&操作(xlrd、xlwt、openpyxl、xlwings)

    ​          在我们使用Python时,避免不了与Excel打交道。同样Python的三方库和代码的简洁性也为我们处理大数据提供了便利。今天给大家介绍一下常用的处理表格的函数,同时还有一些常用的操作。                  这些都是我在使用Python处理Excel时用到的相关代

    2024年02月08日
    浏览(76)
  • Python:利用pymssql模块操作SQL server数据库

    python默认的数据库是 SQLlite,不过它对MySql以及SQL server的支持也可以。这篇文章,介绍下如何在Windows下安装pymssql库并进行连接使用。。。 环境:Windows_64位 版本:python3.6 一、简单介绍 pymssql是一个python的数据库接口,基于FreeTDS构建,对_mssql模块进行了封装,遵循python的DBAP

    2024年02月12日
    浏览(52)
  • Python数据库模块sqlite3操作实例(非常实用)

    当使用Python进行SQLite数据库操作时, sqlite3 模块是一个非常常用和强大的工具。它提供了一系列函数和方法,用于创建、连接、查询和管理数据库。下面是一些常见的用法示例:   sqlite-utils 、 sqlitebiter 和其他类似的库可以提供更高级的功能,包括预编译语句的执行优化和数

    2024年02月13日
    浏览(49)
  • Python数据库模块(sqlite3,SQLite3)

    创建数据库:在控制台sqlite3 name sqlite3.connect(database [,timeout ,other optional arguments]) 打开数据库;如果指数据库存在则返回一个连接对象,如果不存在则会创建一个数据库; connection.cursor() 创建一个cursor; cursor.execute(sql) 执行一个sql语句,该语句可以被参数化; connection.execut

    2024年03月19日
    浏览(61)
  • Python-使用openpyxl读取excel内容

    将下面的excel中的寄存器表单读入并构建一个字典 wb.sheetnames 会返回一个列表,列表中是每个工作表的名称,数据类型为str。执行上述代码后ws就是获取的工作表。 使用sheet.cell会返回cell对象,再使用cell.value才能返回单元格的值,执行上述代码的结果如下: 按行读取可以用

    2024年03月12日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包