Python自动化办公——对excel的操作

pip install xlrd(读)

1.导入:import xlrd
2.打开文件:book = xlrd.open_workbook(文件位置+文件名)
3.根据sheet名称获取工作薄:sheet = book.sheet_by_name('Sheet5')
4.获取行数:rows = sheet.nrows
5.获取列数:cols = sheet.ncols
6. 按行获取值:for r in range(rows):
                             row_vaule = sheet.row_values(r)
7.按列获取值: for c in range(cols):
                             col_vuale = sheet.col_values(c)
8.按行列获取值:sheet.cell(行,列)    注:行列第一行下标从0开始

pip install xlwt(写,不支持xlsx格式)

    1.导入:import xlwt
    2.初始化并创建一个工作簿:book = xlwt.Workbook()
    3.sheet = book.add_sheet('Sheet5',cell_overwrite_ok = True) #同一个单元格重复写入数据设置,book.add_sheet('Sheet5',cell_overwrite_ok = True)
    4.按行列写入:sheet.write(行,列,'内容')
    5.合并信息并写入样式:sheet.write_merge(开始行,结束行,开始列,结束列,'内容',self.styleExcle(2,3)) #self.styleExcle(2,3)自定义函数,2,3为参数,详见下面的实例
    6.保存:book.save(文件位置+文件名)

pip install xlutils(结合读写可修改excel)

    1.导入:from xlutils.copy import copy   import os
    2.打开文件:book = xlrd.open_workbook(filename)
    3.复制excel:newbook = copy(book)
    4.打开第一个工作薄:sheet = newbook.get_sheet(0)
    5.修改第2行,第一列的值:sheet.write(1,0,'xiugren')
    6.保存文件:newbook.save(copefilename)
    7.删除旧文件:os.remove(filename)
    8.重命名新文件名为旧文件名:os.rename(copefilename,filename)

文件路径

xlwt写文件位置

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xlrd
import xlwt
from xlutils.copy import copy
import os

'''
xlwt:只支持xls不支持xlsx
          如果写入数据时,打开了exl会报PermissionError: [Errno 13] Permission denied: 异常
'''
class excel():  
    #编辑Excel样式,字体加粗加红
    def styleExcle(self,fontclour,patternclour):
        #初始化样式
        style = xlwt.XFStyle()
        #为样式创建字体
        font = xlwt.Font()
        font.colour_index = fontclour #2为红色 3为绿色
        #font.bold = True #粗体
        #font.height = 400# 字体大小
        #font.italic = True # 斜体
        #font.struck_out =True # 横线(比如:在一个字中 画上一横)
        style.font= font
        
        #设置背景颜色
        pattern = xlwt.Pattern()
        #设置背景颜色的模式
        pattern.pattern = xlwt.Pattern.SOLID_PATTERN
        #背景颜色
        pattern.pattern_fore_colour= patternclour#2为红色 3为绿色
        style.pattern = pattern
        return style
    
    #xlwt(写)
    def wirteExcle(self,filename,data):
        #初始化并创建一个工作簿
        book = xlwt.Workbook()
        #创建一个名为sheetname的表单
        sheet = book.add_sheet('Sheet5',cell_overwrite_ok = True)
        
        #同一个单元格重复写入数据设置,book.add_sheet('Sheet5',cell_overwrite_ok = True)
        #默认 cell_overwrite_ok = False 表示禁止重复写入,重写抛出异常raise Exception(msg)Exception: Attempt to overwrite cell:  
        c=1
        for students in data:
            #标题
            sheet.write(0,0,'姓名')
            sheet.write(0,1,'年龄')
            #内容(行,列,值)第一行=0,第一列=0
            sheet.write(c,0,students['name'])
            sheet.write(c,1,students['age'])
            c+=1
        #(开始行,结束行,开始列,结束列,合并信息)
        sheet.write_merge(c,c,0,1,'学生信息',self.styleExcle(2,3))
            
        #将工作簿以filename命名并保存
        book.save(filename)
    
    #xlutils(结合读写可修改excel)
    def updateExcle(self,filename,copefilename):
        book = xlrd.open_workbook(filename)#打开文件
        newbook = copy(book)#复制excel
        sheet = newbook.get_sheet(0)#打开第一个工作薄
        sheet.write(1,0,'xiugren')#修改第2行,第一列的值
        newbook.save(copefilename)#保存文件
        os.remove(filename)#删除文件
        os.rename(copefilename,filename)#重命名
        
    #xlrd(读) 
    def readExcle(self,filename):
        print('---------------------开始-读------------------------------------------')
        book = xlrd.open_workbook(filename)#打开文件
        sheetname =book.sheet_names()#查看文件中包含sheet的名称
        sheet = book.sheet_by_name('Sheet5')#根据sheet名称获取工作薄
        #sheet = file.sheets()[0] #获取第一个sheet
        #sheet = file.sheet_by_index(0)#获取第一个sheet
        #cell_A1 = sheet.cell(0,0).value#获取第1行第1列的值
        #row_A1 = sheet.row(0)[1].value#获取第1行第2列的值
        #col_A2 = sheet.col(1)[2].value#获取第2列第2行的值
        #print(cell_A1,row_A1,col_A2)
        
        rows = sheet.nrows#获取行数
        cols = sheet.ncols#获取列数
        
        print('按行打印值,返回list值,一行一个list')
        for r in range(rows):
            row_vaule = sheet.row_values(r)
            print(r,row_vaule)
        print('按列打印值,返回list值,一列一个list')   
        for c in range(cols):#默认从0开始,如果从1开始(1,cols)
            col_vuale = sheet.col_values(c)
            print(c,col_vuale)
        print('按第二行,第二列打印值')  
        print(sheet.cell(1,1))
        print('---------------------结束-读------------------------------------------')
if __name__=='__main__':
    str= [{'name':'zhangshan','age':19},
      {'name':'lisi','age':28},
      {'name':'wangwu','age':59}]
        
    exl = excel()
    exl.wirteExcle('D:\excel\pythonexcel.xls',str)
    exl.readExcle('D:\excel\pythonexcel.xls')
    exl.updateExcle('D:\excel\pythonexcel.xls','D:\excel\pythonexcel1.xls')

文件内容

在这里插入图片描述

读取文件内容,控制台打印信息

---------------------开始-读------------------------------------------
按行打印值,返回list值,一行一个list
0 ['姓名', '年龄']
1 ['zhangshan', 19.0]
2 ['lisi', 28.0]
3 ['wangwu', 59.0]
4 ['学生信息', '']
按列打印值,返回list值,一列一个list
0 ['姓名', 'zhangshan', 'lisi', 'wangwu', '学生信息']
1 ['年龄', 19.0, 28.0, 59.0, '']
按第二行,第二列打印值
number:19.0
---------------------结束-读------------------------------------------


最后这里免费分享给大家一份Python全台学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包【点击这里】领取!

Python所有方向的学习路线图,清楚各个方向要学什么东西
100多节Python课程视频,涵盖必备基础、爬虫和数据分析
100多个Python实战案例,学习不再是只会理论
华为出品独家Python漫画教程,手机也能学习
历年互联网企业Python面试真题,复习时非常方便
请添加图片描述
请添加图片描述

  • 17
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值