文章目录

  • 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库相关推荐

  1. python操作统计excel表格,生成新excel表格

    0.前言 因产品的同学试着用python统计Excel表格,但百度的程序又一直有各种问题, 所以叫我帮用python实现一个统计Excel表格程序:我之前也没有写过python操作Excel表格的程序 ...

  2. Python入门:对Excel数据处理的学习笔记【第十一章】openpyxl库的使用

    注:该学习笔记是根据曾志贤老师编写的<从Excel到Python,用Python轻松处理Excel数据>所学习整理的笔记. 第11章 openpyxl库的使用 目录 第11章 openpy ...

  3. 高效办公——Excel表格-03篇(Excel常用快捷键 以及 Excel快捷键结合公式的各种常见的办公例子)

    高效办公--Excel表格-03篇(Excel常用快捷键 以及 Excel快捷键结合公式的各种常见的办公例子) 1. command+E(Windows系统:ctrl+E)--快速分列/重组 2. 高 ...

  4. excel合并多个工作表_快速将多个Excel表格合并成一个Excel表格

    之前在微信群内有朋友问我如何快速将多个Excel表格合并成一个Excel表格,当时没有讲解清楚,今天专门来告诉大家如何快速合并Excel表格到一个工作表中. 在合并表格中,不外乎以下两种情况: 将多个 ...

  5. excel如何把多张表合并成一个表_如何快速把多个excel表格合并成一个excel表

    如何快速把多个excel表格合并成一个excel表呢? 首先,我们需要把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel文件. 用microsoft excel打开新建的e ...

  6. vue下载excel表格模板和导入excel表格数据

    vue下载excel表格模板和导入excel表格数据 vue制作excel表格模板给前端下载 vue制作excel表格模板给前端下载 最近有个需求,需要导入excel表格,并且还需要制作模板给用户下载 ...

  7. 跳过密码打开excel表格xlsx,忘记excel表格xlsx密码如何找回?

    excel表格xlsx解密,excel表格xlsx权限限制如何解除?[解密神器]excel表格xlsx软件解密工具,我一直在用「密码帝」 超级好用,百度搜索密码帝就可以了!非常简单手机电脑都可以用,一 ...

  8. python处理excel表格实例-python2 对excel表格操作完整示例

    本文实例讲述了python2 对excel表格操作.分享给大家供大家参考,具体如下: #!/usr/bin/env python2 # -*- coding: utf-8 -*- "&quo ...

  9. python操作excel表格-Python学习—对excel表格的操作

    安装对excel操作的模块:openpyxl 1.excel中的基本定义 工作簿(workbook):整个excel表哥文件称为一个工作簿 工作表(sheet):一个工作簿中有多个工作表 活动表(ac ...

最新文章

  1. selenium模拟H5触摸滑动之-TouchAction
  2. DXPerience6.x 使用体会(二)
  3. 大omega记号_什么是大欧米茄符号?
  4. react hooks_React Hooks简介
  5. mysql 性能 索引怎么用_MySQL索引使用方法和性能優化
  6. 诽谤、窃密、禁令、和解:文远知行创始团队纠纷暂时完结
  7. 数据中台公开课丨可以复用的中台架构建设经验与实践
  8. 免费计算机网络基础ppt,计算机网络基础
  9. c++ opencv数字图像处理:频率域滤波--同态滤波
  10. Java多线程编程-(17)-多线程异步调用之Future模式
  11. oppo9s刷机教程_OPPO R9s R9sk刷机教程 OPPO R9s R9sk卡刷升级教程
  12. 企业盈利能力五大指标之:总资产收益率
  13. 基于Simulink的高速跳频通信系统抗干扰性能
  14. 快速将网页内的公式粘贴到文档中
  15. 数仓 - 促销敏感度、评论敏感度
  16. 西门子博图指令(位逻辑运算指令二)
  17. 获取当前客户端ip,并且根据ip获取当前城市和天气
  18. java根据生日计算年龄工具类
  19. CentOS 8 中配置阿里云的 yum 源
  20. 文字在线转图片二维码的公用API接口

热门文章

  1. element-ui message 显示重叠问题
  2. 多模态语义检索 | 基于 MetaSpore 快速部署 HuggingFace 预训练模型
  3. java--快速输出sql语句
  4. Angular4中使用PrimeNG calendar
  5. 有一种选择叫女程(2)
  6. AMCL中odom数据处理
  7. 时空恋旅人 豆瓣影评
  8. 复变函数题目(持续更新)
  9. 自动化脚本腾讯云配置集群(三)批量修改host
  10. 周易六十四卦—水泽节卦