Python5.操作excel表格 xlrd库与excel的com接口和openpyxl库
文章目录
- 1.读取excel
- 2.写入excel
- 3.文字 颜色、字体、大小修改
- 4.COM接口修改excel内容
pip install xlrd==1.2.0
1.读取excel
#读取excel
import xlrd
book = xlrd.open_workbook("income.xlsx")
print(f"包含表单数量 {book.nsheets}") #输出:包含表单数量 3
print(f"表单的名分别为: {book.sheet_names()}") #输出:表单的名分别为: ['2018', '2017', '2016']
#表单索引从0开始,获取第一个表单对象
book.sheet_by_index(0)
#获取名为2018的表单对象
book.sheet_by_name('2018')
#获取所有的表单对象,放入一个列表返回
book.sheets()
import xlrd
book = xlrd.open_workbook("income.xlsx")
#表单索引从0开始,获取第一个表单对象
sheet = book.sheet_by_index(0)
print(f"表单名:{sheet.name} ") #输出:表单名:2018
print(f"表单索引:{sheet.number}") #输出:表单索引:0
print(f"表单行数:{sheet.nrows}") #输出: 表单行数:13
print(f"表单列数:{sheet.ncols}") #输出: 表单列数:2
#行号、列号都是从0开始计算
print(f"单元格A1内容是: {sheet.cell_value(rowx=0, colx=0)}") #输出:单元格A1内容是: 月份
print(f"第一行内容是: {sheet.row_values(rowx=0)}") #输出:第一行内容是: ['月份', '收入']
print(f"第一列内容是: {sheet.col_values(colx=0)}") #输出:第一列内容是: ['月份', 1.0, 2.0, '3*', 4.0, 5.0, 6.0, '7*', 8.0, 9.0, 10.0, 11.0, 12.0]#收入在第2列,求出收入的相加总和
incomes = sheet.col_values(colx=1,start_rowx=1)
print(f"2018年总收入为: {sum(incomes)}") #输出:2018年总收入为: 361302.0
import xlrd
book = xlrd.open_workbook("income.xlsx")
#表单索引从0开始,获取第一个表单对象
sheet = book.sheet_by_index(0)
#计算第一列单元格末尾包含"*"字符,第二列的数字输入之和
#定义包含星号的月份收入
toSubstract = 0
#月份在第1列,获取第一列的值
monthes = sheet.col_values(colx=0)
#遍历第一列的值
for row,month in enumerate(monthes):#如果第一列是str类型,并且以*结束if type(month) is str and month.endswith('*'):#获取这个以*结尾的行的,所在第2列的值income = sheet.cell_value(row,1)print(month,income) #输出:3* 30105.0 7* 30109.0toSubstract += income
print("带*月份的收入总和是:%2.f" % toSubstract) #输出:带*月份的收入总和是:60214
#计算一共有三张sheet表,第二列所有的收入之和,除去第一列内容结尾包含"*"字符的收入除外
import xlrd
#一共有三张sheet表
#打开工作簿
book = xlrd.open_workbook("income.xlsx")#得到所有sheet对象,以list列表返回sheet对象
book1 =book.sheets()
#三张表的总收入之和
incomes = 0
#第0张表的第一列带"*"字符的总收入之和
toSubstract = 0
#第1张表的第一列带"*"字符的总收入之和
toSubstract1 = 0
#第2张表的第一列带"*"字符的总收入之和
toSubstract2 = 0
for i in range(0,3):#三张表的所有总输入之和,从第2行第2列开始incomes += sum(book1[i].col_values(colx=1,start_rowx=1))
print(f"三张表的所有收入之和{incomes}") #输出:三张表的所有收入之和842394.0
#第0张表的第一列带"*"字符的总收入之和
monthes = book1[0].col_values(colx=0)
for row,month in enumerate(monthes):if type(month) is str and month.endswith('*'):income = book1[0].cell_value(row,1)toSubstract += income
print(f"第0张表结尾带*字符的收入之和{toSubstract}") #输出:第0张表结尾带*字符的收入之和60214.0
#第1张表的第一列带"*"字符的总收入之和
monthes1 = book1[1].col_values(colx=0)
for row,month in enumerate(monthes1):if type(month) is str and month.endswith('*'):income = book1[1].cell_value(row,1)toSubstract1 += income
print(f"第1张表结尾带*字符的收入之和{toSubstract1}") #输出:第1张表结尾带*字符的收入之和20774.0
#第2张表的第一列带"*"字符的总收入之和
monthes2 = book1[2].col_values(colx=0)
for row,month in enumerate(monthes2):if type(month) is str and month.endswith('*'):income = book1[2].cell_value(row,1)toSubstract2 += income
print(f"第2张表结尾带*字符的收入之和{toSubstract2}") #输出:第2张表结尾带*字符的收入之和19374.0
print(f"三张表总共第一列结尾除去*的收入之和是{incomes-toSubstract-toSubstract1-toSubstract2}")
#输出:三张表总共第一列结尾除去*的收入之和是742032.0
2.写入excel
#安装openpyxl
pip install openpyxl #写入excel
import openpyxl
#创建一个Excel workbook 对象
book = openpyxl.Workbook()
#创建时,会自动产生一个sheet,通过active获取
sh = book.active
#修改当前 sheet 标题为 工资表
sh.title = '工资表'
#增加一个名为 '年龄表' 的sheet,放在最后
sh1 = book.create_sheet('年龄表-最后')
#增加一个 sheet,放在最前
sh2 = book.create_sheet('年龄表-最前',0)
#增加一个 sheet,指定为第2个表单
sh3 = book.create_sheet('年龄表2',1)
#根据名称获取某个sheet对象
sh = book['工资表']
#给第一个单元格A1写入内容
sh['A1'] = '你好'
#根据行号列号第2行第2列单元格写入内容:白月黑羽, # 注意和 xlrd 不同,是从 1 开始
sh.cell(2,2).value = '白月黑羽'
#保存文件
book.save('信息.xlsx')#获取A1单元格内容
print(sh['A1'].value) #输出:你好
#获取第2行第2列的内容
print(sh.cell(2, 2).value) #输出:白月黑羽
import openpyxl
name2Age = {'张飞' : 38,'赵云' : 27,'许褚' : 36,'典韦' : 38,'关羽' : 39,'黄忠' : 49,'徐晃' : 43,'马超' : 23,
}#创建一个Excel workbook 对象
book = openpyxl.Workbook()
#创建时,会自动产生一个sheet,通过active获取
sh = book.active
#标题命名为"年龄表"
sh.title = '年龄表'
#写标题栏
sh['A1'] = '姓名'
sh['B1'] = '年龄'
#写入内容,从第2行开始
row = 2
#遍历name2Age
for name,age in name2Age.items():#第2行,第1列值是namesh.cell(row, 1).value = name#第2行,第2列值是agesh.cell(row, 2).value = age#行自动加1row += 1
#保存文件
book.save('信息.xlsx')
import openpyxl
name2Age = [['张飞' , 38 ] ,['赵云' , 27 ] ,['许褚' , 36 ] ,['典韦' , 38 ] ,['关羽' , 39 ] ,['黄忠' , 49 ] ,['徐晃' , 43 ] ,['马超' , 23 ]
]
#创建一个Excel workbook 对象
book = openpyxl.Workbook()
#创建时,会自动产生一个sheet,通过active获取
sh = book.active
#标题命名为"年龄表"
sh.title = '年龄表'
#写标题栏
sh['A1'] = '姓名'
sh['B1'] = '年龄'
#遍历name2Age
for row in name2Age:# 添加到下一行的数据sh.append(row)
#保存文件
book.save('信息1.xlsx')
#修改excel中的内容:
import openpyxl
#加载 excel 文件
wb = openpyxl.load_workbook('income.xlsx')
#得到表名称为"2017"的sheet对象
sheet = wb['2017']
#修改A1单元格内容为"修改一下"
sheet['A1'] = '修改一下'#插入行、插入列
#在第2行的位置插入1行空白
sheet.insert_rows(2)
#在第3行的位置插入3行空白
sheet.insert_rows(3,3)
#在第2列的位置插入1列空白
sheet.insert_cols(2)
#在第2列的位置插入3列空白
sheet.insert_cols(2,3)#删除行、删除列
#在第2行的位置删除1行
sheet.delete_rows(2)
#在第3行的位置删除3行
sheet.delete_rows(3,3)
#在第2列的位置删除1列
sheet.delete_cols(2)
#在第3列的位置删除3列
sheet.delete_cols(3,3)
#指定不同的文件名,可以另存为别的文件income-1.xlsx
wb.save('income-1.xlsx')
3.文字 颜色、字体、大小修改
#文字 颜色、字体、大小修改
import openpyxl
#导入Font对象 和 colors 颜色常量
from openpyxl.styles import Font,colors#加载 excel 文件
wb = openpyxl.load_workbook('income.xlsx')
#得到表名称为"2018"的sheet对象
sheet = wb['2018']#指定单元格字体颜色,
sheet['A1'].font = Font(color="981818", #指定颜色为红色size=15, # 设定文字大小bold=True, # 设定为粗体italic=True # 设定为斜体)#指定第3行所有文字颜色为红色
font = Font(color="981818")
for y in range(1, 100): # 第 1 到 100 列sheet.cell(row=3, column=y).font = font#指定第2列所有文字加粗
font = Font(bold=True)
for x in range(1, 100): # 第 1 到 100 行sheet.cell(row=x, column=2).font = font#指定不同的文件名,可以另存为别的文件income-1.xlsx
wb.save('income-1.xlsx')
#背景色修改
import openpyxl
#导入Font对象 和 colors 颜色常量
from openpyxl.styles import PatternFill
#导入加载图片功能
from openpyxl.drawing.image import Image#加载 excel 文件
wb = openpyxl.load_workbook('income.xlsx')
#得到表名称为"2018"的sheet对象
sheet = wb['2018']#指定A1单元格背景色红色
sheet['A1'].fill = PatternFill("solid", "E39191")
#指定第2行背景颜色
fill = PatternFill("solid", "E39191")
for y in range(1, 100): # 第 1 到 100 列sheet.cell(row=2, column=y).fill = fill#在第1行,第4列的位置插入图片
sheet.add_image(Image('2.jpg'), 'D1')#指定不同的文件名,可以另存为别的文件income-1.xlsx
wb.save('income-1.xlsx')
4.COM接口修改excel内容
#Excel COM接口修改excel内容
第一步:安装 pip install pywin32import win32com.clientexcel = win32com.client.Dispatch("Excel.Application")
#可以让excel 可见
excel.Visible = True
#这里填写要修改的Excel文件的绝对路径
workbook = excel.Workbooks.Open(r"C:\Users\Administrator\PycharmProjects\days\income.xlsx")
#得到 2017表单对象
sheet = workbook.Sheets('2017')
#修改表单第1行第1列单元格内容
sheet.Cells(1,1).Value="你好"
#保存内容
workbook.Save()
#关闭该Excel文件
workbook.Close()
#excel进程退出
excel.Quit()
#释放相关资源
sheet = None
book = None
excel.Quit()
excel = None
Python5.操作excel表格 xlrd库与excel的com接口和openpyxl库相关推荐
- python操作统计excel表格,生成新excel表格
0.前言 因产品的同学试着用python统计Excel表格,但百度的程序又一直有各种问题, 所以叫我帮用python实现一个统计Excel表格程序:我之前也没有写过python操作Excel表格的程序 ...
- Python入门:对Excel数据处理的学习笔记【第十一章】openpyxl库的使用
注:该学习笔记是根据曾志贤老师编写的<从Excel到Python,用Python轻松处理Excel数据>所学习整理的笔记. 第11章 openpyxl库的使用 目录 第11章 openpy ...
- 高效办公——Excel表格-03篇(Excel常用快捷键 以及 Excel快捷键结合公式的各种常见的办公例子)
高效办公--Excel表格-03篇(Excel常用快捷键 以及 Excel快捷键结合公式的各种常见的办公例子) 1. command+E(Windows系统:ctrl+E)--快速分列/重组 2. 高 ...
- excel合并多个工作表_快速将多个Excel表格合并成一个Excel表格
之前在微信群内有朋友问我如何快速将多个Excel表格合并成一个Excel表格,当时没有讲解清楚,今天专门来告诉大家如何快速合并Excel表格到一个工作表中. 在合并表格中,不外乎以下两种情况: 将多个 ...
- excel如何把多张表合并成一个表_如何快速把多个excel表格合并成一个excel表
如何快速把多个excel表格合并成一个excel表呢? 首先,我们需要把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel文件. 用microsoft excel打开新建的e ...
- vue下载excel表格模板和导入excel表格数据
vue下载excel表格模板和导入excel表格数据 vue制作excel表格模板给前端下载 vue制作excel表格模板给前端下载 最近有个需求,需要导入excel表格,并且还需要制作模板给用户下载 ...
- 跳过密码打开excel表格xlsx,忘记excel表格xlsx密码如何找回?
excel表格xlsx解密,excel表格xlsx权限限制如何解除?[解密神器]excel表格xlsx软件解密工具,我一直在用「密码帝」 超级好用,百度搜索密码帝就可以了!非常简单手机电脑都可以用,一 ...
- python处理excel表格实例-python2 对excel表格操作完整示例
本文实例讲述了python2 对excel表格操作.分享给大家供大家参考,具体如下: #!/usr/bin/env python2 # -*- coding: utf-8 -*- "&quo ...
- python操作excel表格-Python学习—对excel表格的操作
安装对excel操作的模块:openpyxl 1.excel中的基本定义 工作簿(workbook):整个excel表哥文件称为一个工作簿 工作表(sheet):一个工作簿中有多个工作表 活动表(ac ...
最新文章
- selenium模拟H5触摸滑动之-TouchAction
- DXPerience6.x 使用体会(二)
- 大omega记号_什么是大欧米茄符号?
- react hooks_React Hooks简介
- mysql 性能 索引怎么用_MySQL索引使用方法和性能優化
- 诽谤、窃密、禁令、和解:文远知行创始团队纠纷暂时完结
- 数据中台公开课丨可以复用的中台架构建设经验与实践
- 免费计算机网络基础ppt,计算机网络基础
- c++ opencv数字图像处理:频率域滤波--同态滤波
- Java多线程编程-(17)-多线程异步调用之Future模式
- oppo9s刷机教程_OPPO R9s R9sk刷机教程 OPPO R9s R9sk卡刷升级教程
- 企业盈利能力五大指标之:总资产收益率
- 基于Simulink的高速跳频通信系统抗干扰性能
- 快速将网页内的公式粘贴到文档中
- 数仓 - 促销敏感度、评论敏感度
- 西门子博图指令(位逻辑运算指令二)
- 获取当前客户端ip,并且根据ip获取当前城市和天气
- java根据生日计算年龄工具类
- CentOS 8 中配置阿里云的 yum 源
- 文字在线转图片二维码的公用API接口