一个Excel电子表格文档称为一个工作薄。

每个工作薄可以包含多个工作表。

用户当前查看的表,称为活动表。

python没有自带openpyxl,所以必须安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
c:\python\Scripts>pip3.6 install openpyxl
Collecting openpyxl
  Downloading openpyxl-2.4.9.tar.gz (157kB)
    100% |████████████████████████████████| 163kB 183kB/s
Collecting jdcal (from openpyxl)
  Downloading jdcal-1.3.tar.gz
Collecting et_xmlfile (from openpyxl)
  Downloading et_xmlfile-1.0.1.tar.gz
Installing collected packages: jdcal, et-xmlfile, openpyxl
  Running setup.py install for jdcal ... done
  Running setup.py install for et-xmlfile ... done
  Running setup.py install for openpyxl ... done
Successfully installed et-xmlfile-1.0.1 jdcal-1.3 openpyxl-2.4.9
c:\python>python.exe
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import openpyxl
>>>

用openpyxl模块打开Excel文档

1
2
3
4
>>> import openpyxl
>>> wb=openpyxl.load_workbook('example.xlsx')
>>> type(wb)
<class 'openpyxl.workbook.workbook.Workbook'>

openpyxl.load_workbook()函数接受文件名,返回一个workbook数据类型的值。这个workbook对象代表这个Excel文件。

example.xlsx需要在当前工作目录,才能处理它。可以导入os,使用函数os.getcwd()确定当前工作目录,并用os.chdir()改变当前工作目录。

从工作薄中取得工作表

调用get_sheet_names()方法可以取得工作薄中所有表名的列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> import openpyxl
>>> wb=openpyxl.load_workbook('example.xlsx')
>>> wb.get_sheet_names()
['Sheet1''Sheet2''Sheet3']
>>> sheet=wb.get_sheet_by_name('Sheet3')
>>> sheet
<Worksheet "Sheet3">
>>> type(sheet)
<class 'openpyxl.worksheet.worksheet.Worksheet'>
>>> sheet.title
'Sheet3'
>>> anotherSheet=wb.get_active_sheet()
>>> anotherSheet
<Worksheet "Sheet3">

每个表由一个Worksheet对象表示,可以通过向工作薄方法get_sheet_by_name()传递表名字符串获得。

调用Workbook对象的get_active_sheet()方法,取得工作薄的活动表。

从表中取得单元格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> import openpyxl
>>> wb=openpyxl.load_workbook('example.xlsx')
>>> sheet=wb.get_sheet_by_name('Sheet1')
>>> sheet['A1']
<Cell 'Sheet1'.A1>
>>> sheet['A1'].value='apple'
>>> sheet['A1'].value
'apple'
>>> c=sheet['B1']
>>> c.value='juice'
>>> str(c.row)
'1'
>>> c.row
1
>>> c.column
'B'
>>> c.coordinate
'B1'

Cell对象的value属性,包含这个单元格中保存的值。

Cell对象也有row、column和coordinate属性,提供该单元格的位置信息。

第一行或第一列的整数是1,不是0。

1
2
3
4
5
6
7
8
9
10
11
>>> sheet.cell(row=1,column=2)
<Cell 'Sheet1'.B1>
>>> sheet.cell(row=1,column=2).value
'juice'
>>> for in range(1,8,2):
...     print(i,sheet.cell(row=i,column=2).value)
...
1 juice
3 None
5 None
7 None

可以通过Worksheet对象的get_highest_row()和get_highest_column()方法,确定表的大小。

get_highest_column()方法返回一个整数,而不是Excel中出现的字母。

列字母和数字之间的转换

要从字母转换到数字,就调用openpyxl.cell.column_index_from_string()函数。

要从数字转换到字母,就调用openpyxl.cell.get_column_letter()函数。

从表中取得行和列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> import openpyxl
>>> wb=openpyxl.load_workbook('example.xlsx')
>>> sheet=wb.get_sheet_by_name('Sheet1')
>>> tuple(sheet['A1':'C3'])
((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>), (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>), (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>))
>>> for in sheet['A1':'C3']:
...     for in i:
...             print(j.coordinate,j.value)
...     print('--- END OF ROW ---')
...
A1 apple
B1 juice
C1 cake
--- END OF ROW ---
A2 None
B2 nurse
C2 None
--- END OF ROW ---
A3 None
B3 None
C3 None
--- END OF ROW ---

总结:

1、导入openpyxl模块

2、调用openpyxl.load_workbook()函数

3、取得Workbook对象

4、调用get_active_sheet()或get_sheet_by_name()工作薄方法

5、取得Worksheet对象

6、使用索引或工作表的cell()方法,带上row和column关键字参数

7、取得Cell对象

8、读取Cell对象的value属性


【扩展】

1、Font对象

Font对象的style属性影响文本在单元格中的显示方式。

要设置字体风格属性,就向Font()函数传入关键字参数。

2、公式

1
2
>>> sheet['B10']='=sum(B1:B9)'
>>> wb.save('example.xlsx')       ##保存

3、调整行和列

Worksheet对象由row_dimensions和column_dimensions属性,控制行高和列宽。

1
2
3
>>> sheet.row_dimensions[1].height=70
>>> sheet.column_dimensions['B'].width=40
>>> wb.save('example.xlsx')

利用merge_cells()工作表方法,可以将一个矩形区域中的单元格合并为一个单元格。

要拆分单元格,就调用unmerge_cells()工作表方法。

1
2
>>> sheet.merge_cells('A1:D3')
>>> wb.save('example.xlsx')

在OpenPyXL中,每个Worksheet对象都有一个freeze_panes属性,可以设置为一个Cell对象或一个单元格坐标的字符串。

单元格上边的所有行和左边的所有列都会冻结,但单元格所在的行和列不会冻结。

要解冻所有的单元格,就将freeze_panes设置为None或‘A1’。

1
2
>>> sheet.freeze_panes='A2'  ##行1将永远可见
>>> wb.save('example.xlsx')

如果需要创建图标,需要做下列事情:

1、从一个矩形区域选择的单元格,创建一个Reference对象

2、通过传入Reference对象,创建一个Series对象

3、创建一个Chart对象

4、将Series对象添加到Chart对象

5、可选地设置Chart对象的drawing.top、drawing.left、drawing.width和drawing.height变量

6、将Chart对象添加到Worksheet对象

如果加载一个Workbook对象,然后马上保存到同样的.xlsx文件名中,实际上会删除其中的图表。

本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/2050824,如需转载请自行联系原作者

处理Excel电子表格相关推荐

  1. 计算机用电子表格验证方案,Excel电子表格的验证1.PDF

    Excel电子表格的验证1.PDF IZ STUDIO IZ STUDIO OMCL 指南:计算机化系统验证 附录 1:Excel 电子表格的验证 1 Excel 电子表格的验证 注:本指南及其附录中 ...

  2. 介绍一款开源的类Excel电子表格软件

     Excel一直以霸主的地位,占领了Windows桌面表格软件市场No 1,与此同一时候,Office套装产品差点儿成为了IT行业的标配办公技能.有无相似Excel的桌面程序,绿色版,实现主要的数 ...

  3. 在PHP中创建和编辑Excel电子表格

    要使用纯PHP创建或编辑Excel电子表格,我们将使用PHPExcel库,它可以读写许多电子表格格式,包括xls,xlsx,ods和csv.在我们继续之前,仔细检查您的服务器上是否有PHP 5.2或更 ...

  4. 网页中模拟Excel电子表格实例分享

    2019独角兽企业重金招聘Python工程师标准>>> 原文来自http://www.6excel.com/doc/20049 一.电子表格中用到的快捷键: ← → ↑ ↓  :左, ...

  5. npoi生成的表格数字左上角_如何用openpyxl自动化编写Excel电子表格 进阶篇 下

    自动化Excel进阶技能之一:添加图片 尽管Excel电子表格中并不经常都是插入图片的,但是添加了图片以及图片里插入里url链接,这还是相当实用的.我们可以用它来做品牌宣传,或者让Excel表格更加个 ...

  6. excel表格大学计算机知识,大学计算机基础excel电子表格

    大学计算机基础excel电子表格 Excel 2003电子表格 Office 2003 Office 2003 软件之二软件之二 主要内容 一.Excel 2003的基本知识 二.Excel 2003 ...

  7. asp.net添加删除表格_如何用openpyxl自动化编写Excel电子表格

    有很多不同的东西你可以写到电子表格,从简单的文本或数字值到复杂的公式,图表,甚至图像. 创建一个简单的电子表格 之前,大家看到了一个非常快速的例子,就是如何将 "Hello world!&q ...

  8. 计算机应用基础形考作业3Excel,国家开放大学《计算机应用基础》考试与答案形考任务模块3 模块3 Excel 电子表格系统—客观题答案(2020年整理).pptx...

    国家开放大学<计算机应用基础>考试与答案形考任务模块3 模块3 Excel 电子表格系统-客观题答案(2020年整理).pptx 学 海 无 涯 Excel 2010 上机操作题(共 5 ...

  9. java excil表格开发_JAVA导出Excel电子表格的方法

    JAVA导出Excel电子表格的方法 package com.qingruxu.excel; import java.io.File; import java.io.IOException; impo ...

  10. php 上传 excel xlsx_在PHP中创建和编辑Excel电子表格

    要使用纯PHP创建或编辑Excel电子表格,我们将使用PHPExcel库,该库可以读取和写入许多电子表格格式,包括xls,xlsx,ods和csv.在继续之前,请仔细检查服务器上是否装有PHP 5.2 ...

最新文章

  1. 【OpenCV 4开发详解】图像卷积
  2. Boost:变量类型boost :: any的单元测试
  3. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
  4. 带你自学Python系列(二):Python列表总结-思维导图
  5. 华为正式开源数据虚拟化引擎 openLooKeng
  6. 1100名达摩院“扫地僧”加持,阿里云的下一个十年
  7. 一个系统管理员的自白
  8. eclipse 创建 javaWeb 项目 如何 配置 tomcat
  9. 【笔记】人工智能 一种现代方法 人工智能 一种现代方法 第5章 对抗搜索
  10. Web前端:2022年7大React组件库
  11. 【Genotype(基因串) 玩具取名】题解
  12. 程序员的自我修养之数学基础05:线性方程组解的情况(矩阵的初等变换和高斯消元法)
  13. 深入浅出mysql_深入浅出MySQL读书笔记(一)
  14. 123457123456#0#-----com.yuming.baoBaoAiXueXi01hanzi--前拼后广--幼儿园宝宝学汉字
  15. 将项目从 SVN 迁移到 GIT
  16. 拼音首字母缩写在线翻译源码
  17. linux mint安装搜狗输入法
  18. 147. Python语言 的 Flask框架项目前导 之 Flask数据库 第三章 :SQLAlchemy-ORM 介绍
  19. CEA抗体对丨CalBioreagents 中英文说明书
  20. python爬取四川建设行业数据共享平台

热门文章

  1. 框架 php_PHP四大主流框架的优缺点总结
  2. 腾讯云服务器CentOS 7安装Tomcat并部署JSP站点统计进入站点人数
  3. Linux 系统编程技巧与概念 第12章 基于 TLV 传输
  4. vscode 智能提示失效
  5. 服务器上把计算机放桌面,远程服务器这么显示在电脑桌面
  6. html中使用style设置背景
  7. 硬件加密芯片的使用及适配(CC020加密芯片)
  8. 不同笔记本电脑BIOS的进入方法:
  9. 数据集查找神器!100个大型机器学习数据集都汇总在这了 | 资源
  10. 雷军振臂一呼:1亿小爱同学激活是不是中国第一?百度硬刚:我才是