Python之openpyxl模块的使用

此模块不是Python内置的模块需要安装,安装方法如下:

pip install openpyxl

注意:

此模块只支持offce 2010,即是电子表格后缀是*.xlsx

 1、openpyxl模块常用函数

import openpyxl

wb = openpyxl.load_workbook(‘example.xlsx‘)

##### 工作表常用操作
print(wb.active)  # 获取电子表格Worksheet是否有数据
print(wb.read_only)  # 是否是以只读方式打开
print(wb.encoding)  # 获取电子表格的编码
print(‘‘, wb.properties)  # 获取电子表格属性如:标题、作者、创建时间等
print(wb.worksheets)  # 获取工作表名
print(wb.get_sheet_names())  # 获取工作表的所有名字
print(wb.sheetnames)  # 获取工作表的所有名字跟wb.get_sheet_names()一样的功能
print(wb.get_sheet_by_name(‘Sheet1‘))  # 通过工作表的名字,获取Worksheet对象操作电子表格
print(wb.create_sheet(‘python创建的工作表‘))  # 创建的工作表,记得用save保存,才保存到硬盘上
print(wb.copy_worksheet(wb[‘Sheet1‘]))  # 复制工作表

#### 工作表的常用操作
sheet1_obj = wb[‘Sheet1‘]
print(sheet1_obj.title)  # 工作表的标题
print(sheet1_obj.dimensions)  # 获取表格大小,返回格式如:A1:D6
print(sheet1_obj.max_row)  # 表格最大行数
print(sheet1_obj.min_row)  # 表格最小行数
print(sheet1_obj.max_column)  # 表格最大列数
print(sheet1_obj.min_column)  # 表格最小列数
print(sheet1_obj.rows)  # 按行获取单元格(Cell对象)
print(sheet1_obj.columns)  # 按列获取单元格(Cell对象)
print(sheet1_obj.freeze_panes)  # 冻结窗格
print(sheet1_obj.values)  # 按行获取表格的内容(数据)
print(sheet1_obj.iter_rows())#迭代器方式,按行获取所有单元格(Cell对象)
print(sheet1_obj.iter_columns())#迭代器方式,按列获取所有单元格(Cell对象)
sheet1_obj.append([‘1列‘,‘2列‘,‘3列‘,‘4列‘]) #往工作表最后一行插入多列数据

#### 单元格的常用操作
sheet1_obj.merged_cells #合并单元格
sheet1_obj.unmerge_cells #取消合并单元格
print(sheet1_obj[‘A2‘].row)  # 获取行数
print(sheet1_obj[‘A2‘].column)  # 获取列数
print(sheet1_obj[‘B1‘].value) #获取单元格的值
wb.save(‘example.xlsx‘) #保存单元格

 2、利用openpyxl模块创建一张电子表格

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from openpyxl import Workbook

wb = Workbook()
# print(wb.get_sheet_names())  # 获取工作表的名字

ws = wb.get_sheet_by_name(‘Sheet‘)  # 获取Sheet工作表对象
# print(ws.title)  # 获取工作表的标题

ws.title = ‘Student‘  # 设置新的工作表

# 设置内容
ws[‘A1‘] = ‘Hello World‘

import datetime

ws[‘A2‘] = datetime.datetime.now()

wb.save(‘new_sample.xlsx‘)

 运行效果

 3、利用openpyxl模块对电子表格运算操作(求和数、平均数)

表格例子如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import openpyxl
from openpyxl.styles import Alignment

def process_worksheet(sheet):
    avg_column = sheet.max_column + 1  # 平均数,存放在最后一列
    sum_column = sheet.max_column + 2  # 求和,存放在最后第二列

    for row in sheet.iter_rows(min_row=2, min_col=2):
        scores = [cell.value for cell in row]  # 获取一行的值
        sum_score = sum(scores)  # 求一行的和
        avg_score = sum_score / len(scores)  # 求一行的平均数
        avg_cell = sheet.cell(row=row[0].row, column=avg_column)
        sum_cell = sheet.cell(row=row[0].row, column=sum_column)
        avg_cell.value = avg_score  # 定位到单元格,设置总分
        sum_cell.value = sum_score  # 定位到单元格,设置平均分

        # 设置对齐方式,水平是右对齐,垂直是居中
        align = Alignment(horizontal=‘left‘, vertical=‘center‘, wrap_text=True)
        avg_cell.alignment = align
        sum_cell.alignment = align

    # 设置平均分和总分的标题
    sheet.cell(row=1, column=avg_column).value = ‘平均分‘
    sheet.cell(row=1, column=sum_column).value = ‘总分‘

def main():
    wb = openpyxl.load_workbook(‘example.xlsx‘)
    sheet = wb.get_sheet_by_name(‘Sheet1‘)
    process_worksheet(sheet)
    wb.save(‘example.xlsx‘)

if __name__ == ‘__main__‘:
    main()

 运行效果

4、多张电子表格合并为一张电子表格

 准备3张电子表格

员工1.xlsx

员工2.xlsx

员工3.xlsx

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import openpyxl
import glob
import os

def merge_xlsx_files(xlsx_files):
    wb = openpyxl.load_workbook(xlsx_files[0])  # 打开第一张电子表格
    ws = wb.active  # 激活 worksheet
    ws.title = ‘merged result‘  # 合并结果

    for filename in xlsx_files[1:]:
        workbook = openpyxl.load_workbook(filename)
        sheet = workbook.active  # 激活 worksheet
        for row in sheet.iter_rows(min_row=2):  # 从第二行开启迭代
            values = [cell.value for cell in row]  # 返回一列的值,以列表类型
            ws.append(values)  # 把列表增加到新的表格里面
    return wb

def get_all_xlsx_files(path):
    """指定后缀名,获取所有跟后缀相关的文件类型,返回列表"""
    xlsx_files = glob.glob(os.path.join(path, ‘*.xlsx‘))
    sorted(xlsx_files, key=str.lower)  # 排序
    return xlsx_files

def main():
    path = os.path.join(os.path.dirname(os.getcwd()), ‘临时测试‘, ‘excels‘)  # 目录自行配置
    xlsx_files = get_all_xlsx_files(path)
    wb = merge_xlsx_files(xlsx_files)
    wb.save(‘merge_data.xlsx‘)  # 保存数据到硬盘

if __name__ == ‘__main__‘:
    main()

 运行效果(硬盘多出一张电子表格 merge_data.xlsx)

原文地址:https://www.cnblogs.com/ygbh/p/12196208.html

时间: 2024-11-02 23:40:06

Python之openpyxl模块的使用的相关文章

python之openpyxl模块

一 .Python操作EXCEL简介 1.1 Python官方库操作excel 官方用xlrd:(读excel)表,xlrd读大表效率高于openpyxl:用xlwt:(写excel)表:xlrd和xlwt对版本上兼容不太好,很多新版excel有问题. 1.2 第三方库操作excel 第三方库openpyxl(可读写excel表),专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容易 注意:如果文字编码是"gb2312" 读取后就会显示乱码,请先转成Un

python之openpyxl模块操作

import openpyxl #写 # book = openpyxl.Workbook() # sheet = book.active #默认的sheet # #sheet2 = book.get_sheet_by_name('sheet1') # # sheet.append( ['id','username','password','error_count']) # # sheet.append( [1,'wyj','123456',0]) # # sheet.append( [2,'w

python中使用openpyxl模块时报错: File is not a zip file

python中使用openpyxl模块时报错: File is not a zip file. 最大的原因就是不是真正的 xlsx文件, 如果是通过 库xlwt  新建的文件,或者是通过自己修改后缀名得到的 xlsx文件,都会报错,我遇到的解决办法基本都是自己使用 office 新建一个xlsx文件,网上说的是由于新版 office 加密的原因,只能通过 office 的软件才能建立真正的xlsx文件. 同时来自网友的经验:#Python大坑:openpyxl和(xlrd,xlwt)不可混用!#

python openpyxl模块实现excel的读取,新表创建及原数据表追加新数据

当实际工作需要把excel表的数据读取出来,或者把一些统计数据写入excel表中时,一个设计丰富,文档便于寻找的模块就会显得特别的有吸引力,本文对openpyxl模块的一些常见用法做一些记录,方便工作中查询(好记性不如烂笔头) author:he    qq:760863706    python:3.5    date:2018-9-14 1:安装openpyxl pip install openpyxl 1 2:excel表读取数据(.xlsx) import openpyxlfilepat

python3操作Excel openpyxl模块的使用

python 与excel 安装模块 本例子中使用的模块为: openpyxl 版本为2.4.8 安装方法请参看以前发表的文章(Python 的pip模块安装方法) Python处理Excel表格 使用模块:openpyxl(2.4.8) 基本使用方法 1.首先导入模块:import openpyxl 2.打开一个已经存在的excel文件: wb=openpyxl.load_workbook('example.xlsx') (文件和脚本放在同一个目录下,如果不是的话需要加上路径 wb=wpenp

openpyxl模块(excel操作)

openpyxl模块介绍 openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档.其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能. 安装openpyxl模块 pip3 install openpyxl openpyxl基本用法 想要操作Excel首先要了解Excel 基本概念,Excel中列以字幕命名,行以数字命名,比如左上角第一个单

包、logging模块、hashlib模块、openpyxl模块、深浅拷贝

包.logging模块.hashlib模块.openpyxl模块.深浅拷贝 一.包 1.模块与包 模块的三种来源: 1.内置的 2.第三方的 3.自定义的 模块的四种表现形式: 1.py文件 2.共享库 3.文件夹(一系列模块的结合体),即包 4.C++编译的连接到Python内置的 2.模块的导入过程 先产生一个执行文件的名称空间 1.创建模块文件的名称空间 2.执行模块文件中的代码,将产生的名字放入模块的名称空间中 3.在执行文件中拿到一个指向模块名称空间的名字 3.什么是包 它是一系列模块

python操作excel----openpyxl模块

openpyxl模块支持.xls和.xlsx格式的excel创建,但是只支持.xlsx格式的读取操作,不支持.xls的读取(可以使用xlrd模块来读取,写入操作也可使用xlwt模块),也可使用pandas模块对excel进行读写操作. openpyxl创建新的excel 1 import openpyxl 2 3 #创建工作簿 4 book=openpyxl.Workbook() 5 6 # 创建表 7 table1=book.create_sheet(title="联系电话",ind

Python中subprocess 模块 创建并运行一个进程

python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex cmd = "cat test.txt; rm test.txt" call(cmd, shell=True) 运行之后: 1:打开并浏览了test.txt文件 2:删除了test.txt文件 from subprocess import call import shlex cmd = &