- 内容提要
- 作者简介
- 技术评审者简介
- 致谢
- 译者序 会编程的人不一样
- 前言
- 本书的读者对象
- 编码规范
- 什么是编程
- 本书简介
- 下载和安装 Python
- 启动 IDLE
- 如何寻求帮助
- 聪明地提出编程问题
- 小结
- 第一部分 Python 编程基础
- 第1章 Python 基础
- 第2章 控制流
- 第3章 函数
- 第4章 列表
- 第5章 字典和结构化数据
- 第6章 字符串操作
- 第二部分 自动化任务
- 第7章 模式匹配与正则表达式
- 第8章 读写文件
- 第9章 组织文件
- 第10章 调试
- 第11章 从 Web 抓取信息
- 第12章 处理 Excel 电子表格
- 第13章 处理 PDF 和 Word 文档
- 第14章 处理 CSV 文件和 JSON 数据
- 第15章 保持时间、计划任务和启动程序
- 第16章 发送电子邮件和短信
- 第17章 操作图像
- 第18章 用 GUI 自动化控制键盘和鼠标
- 附录A 安装第三方模块
- 附录B 运行程序
- 附录C 习题答案
12.5 写入 Excel 文档
OpenPyXL也提供了一些方法写入数据,这意味着你的程序可以创建和编辑电子表格文件。利用Python,创建一个包含几千行数据的电子表格是非常简单的。
12.5.1 创建并保存Excel文档
调用openpyxl.Workbook()函数,创建一个新的空Workbook对象。在交互式环境中输入以下代码:
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> wb.get_sheet_names() ['Sheet'] >>> sheet = wb.get_active_sheet() >>> sheet.title 'Sheet' >>> sheet.title = 'Spam Bacon Eggs Sheet' >>> wb.get_sheet_names() ['Spam Bacon Eggs Sheet']
工作簿将从一个工作表开始,名为Sheet。你可以将新的字符串保存在它的title属性中,从而改变工作表的名字。
当修改Workbook对象或它的工作表和单元格时,电子表格文件不会保存,除非你调用save()工作簿方法。在交互式环境中输入以下代码(让example.xlsx处于当前工作目录):
>>> import openpyxl >>> wb = openpyxl.load_workbook('example.xlsx') >>> sheet = wb.get_active_sheet() >>> sheet.title = 'Spam Spam Spam' >>> wb.save('example_copy.xlsx')
这里,我们改变了工作表的名称。为了保存变更,我们将文件名作为字符串传递给save()方法。传入的文件名与最初的文件名不同,例如'example_copy.xlsx',这将变更保存到电子表格的一份拷贝中。
当你编辑从文件中加载的一个电子表格时,总是应该将新的、编辑过的电子表格保存到不同的文件名中。这样,如果代码中有缺陷,导致新的保存到文件中数据不对或讹误,还有最初的电子表格文件可以处理。
12.5.2 创建和删除工作表
利用create_sheet() and remove_sheet()方法,可以在工作簿中添加或删除工作表。在交互式环境中输入以下代码:
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> wb.get_sheet_names() ['Sheet'] >>> wb.create_sheet() < Worksheet "Sheet1"> >>> wb.get_sheet_names() ['Sheet', 'Sheet1'] >>> wb.create_sheet(index=0, title='First Sheet') < Worksheet "First Sheet"> >>> wb.get_sheet_names() ['First Sheet', 'Sheet', 'Sheet1'] >>> wb.create_sheet(index=2, title='Middle Sheet') < Worksheet "Middle Sheet"> >>> wb.get_sheet_names() ['First Sheet', 'Sheet', 'Middle Sheet', 'Sheet1']
create_sheet()方法返回一个新的Worksheet对象,名为SheetX,它默认是工作簿的最后一个工作表。或者,可以利用index和title关键字参数,指定新工作表的索引或名称。
继续前面的例子,输入以下代码:
>>> wb.get_sheet_names() ['First Sheet', 'Sheet', 'Middle Sheet', 'Sheet1'] >>> wb.remove_sheet(wb.get_sheet_by_name('Middle Sheet')) >>> wb.remove_sheet(wb.get_sheet_by_name('Sheet1')) >>> wb.get_sheet_names() ['First Sheet', 'Sheet']
remove_sheet()方法接受一个Worksheet对象作为其参数,而不是工作表名称的字符串。如果你只知道要删除的工作表的名称,就调用get_sheet_by_name(),将它的返回值传入remove_sheet()。
在工作簿中添加或删除工作表之后,记得调用save()方法来保存变更。
12.5.3 将值写入单元格
将值写入单元格,很像将值写入字典中的键。在交互式环境中输入以下代码:
>>> import openpyxl >>> wb = openpyxl.Workbook() >>> sheet = wb.get_sheet_by_name('Sheet') >>> sheet['A1'] = 'Hello world!' >>> sheet['A1'].value 'Hello world!'
如果你有单元格坐标的字符串,可以像字典的键一样,将它用于Worksheet对象,指定要写入的单元格。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论