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

有很多不同的东西你可以写到电子表格,从简单的文本或数字值到复杂的公式,图表,甚至图像。

创建一个简单的电子表格

之前,大家看到了一个非常快速的例子,就是如何将 "Hello world!"写进电子表格中,所以大家可以从这个开始。

0b9d3c01d79c06abb022619dcdaeab03.png

上面代码中高亮的几行是最重要的写法:

第5行告诉你如何创建一个新的空工作簿。

第8行和第9行显示了如何向特定单元格添加数据。

第11行告诉你如何在完成后保存电子表格。

尽管上面这些代码表达非常简洁,但遇到更复杂情况的时候,熟知它们还是非常必要的。

你可以做的一件事是在你的Python文件或控制台中添加下面的方法来帮助即将到来的代码示例:

>>> def print_rows():...     for row in sheet.iter_rows(values_only=True):...         print(row)

只需调用print_rows(),就能轻松打印出所有的电子表格值。

电子表格的基本操作

在进入更高级的主题之前,最好先了解如何管理电子表格中最简单的元素。

  • 添加和更新单元格值

你已经学会了如何像这样的电子表格添加值:

sheet["A1"] = "value"

其实还有一种方法可以做到这一点:先选择一个单元格,然后改变其值。

>>> cell = sheet["A1"]>>> cell'Sheet'.A1>>>> cell.value'hello'>>> cell.value = "hey">>> cell.value'hey'

只有在调用workbook.save()后,新的值才会存储到电子表格中。

openpyxl会在添加值时创建一个单元格,前提是如果该单元格之前不存在。

>>> # Before, our spreadsheet has only 1 row>>> print_rows()('hello', 'world!')>>> # Try adding a value to row 10>>> sheet["B10"] = "test">>> print_rows()('hello', 'world!')(None, None)(None, None)(None, None)(None, None)(None, None)(None, None)(None, None)(None, None)(None, 'test')

当你试图向单元格B10中添加一个值时,你最终会得到一个有10行的元组,只是为了让你能得到那个测试值。

  • 管理行和列

在操作电子表格时,最常见的事情之一就是添加或删除行和列。openpyxl软件包允许你通过使用以下方法以一种非常直接的方式来完成这些操作:

  • .insert_rows()

  • .delete_rows()

  • .insert_cols()

  • .delete_cols()

以下这些方法中的每一个都可以接收两个参数:

  1. idx

  2. 数量

再用我们基本的hello_world.xlsx例子,让我们看看这些方法是如何工作的。

>>> print_rows()('hello', 'world!')>>> # Insert a column before the existing column 1 ("A")>>> sheet.insert_cols(idx=1)>>> print_rows()(None, 'hello', 'world!')>>> # Insert 5 columns between column 2 ("B") and 3 ("C")>>> sheet.insert_cols(idx=3, amount=5)>>> print_rows()(None, 'hello', None, None, None, None, None, 'world!')>>> # Delete the created columns>>> sheet.delete_cols(idx=3, amount=5)>>> sheet.delete_cols(idx=1)>>> print_rows()('hello', 'world!')>>> # Insert a new row in the beginning>>> sheet.insert_rows(idx=1)>>> print_rows()(None, None)('hello', 'world!')>>> # Insert 3 new rows in the beginning>>> sheet.insert_rows(idx=1, amount=3)>>> print_rows()(None, None)(None, None)(None, None)(None, None)('hello', 'world!')>>> # Delete the first 4 rows>>> sheet.delete_rows(idx=1, amount=4)>>> print_rows()('hello', 'world!')

你需要唯一需要记住的是,当插入新数据(行或列)时,插入发生在idx参数之前。如果你执行insert_rows(1),它会在现有的第一行之前插入一条新行。

对于列来说也是一样:当你调用insert_cols(2)时,它会在已经存在的第二列(B)之前插入一个新的列。

但是,当删除行或列时,.delete_...会从作为参数传递的索引开始删除数据。

例如,当执行delete_rows(2)时,它删除第2行,而当执行delete_cols(3)时,它删除第三列(C)。

  • 管理工作表格

工作表管理也是你需要了解的东西之一,尽管它可能是你不经常使用的东西。

如果你回顾一下本教程中的代码示例,你会注意到下面这段反复出现的代码。

sheet = workbook.active

这是选择电子表格中默认工作表的方法。不过,如果你打开的电子表格有多张表,那么你总是可以像这样选择一个特定的表。

>>> # Let's say you have two sheets: "Products" and "Company Sales">>> workbook.sheetnames['Products', 'Company Sales']>>> # You can select a sheet using its title>>> products_sheet = workbook["Products"]>>> sales_sheet = workbook["Company Sales"]

你也可以很容易地改变一个表的标题:

>>> workbook.sheetnames['Products', 'Company Sales']>>> products_sheet = workbook["Products"]>>> products_sheet.title = "New Products">>> workbook.sheetnames['New Products', 'Company Sales']

如果你想创建或删除工作表,那么你也可以通过.create_sheet()和.remove()来实现:

>>> workbook.sheetnames['Products', 'Company Sales']>>> operations_sheet = workbook.create_sheet("Operations")>>> workbook.sheetnames['Products', 'Company Sales', 'Operations']>>> # You can also define the position to create the sheet at>>> hr_sheet = workbook.create_sheet("HR", 0)>>> workbook.sheetnames['HR', 'Products', 'Company Sales', 'Operations']>>> # To remove them, just pass the sheet as an argument to the .remove()>>> workbook.remove(operations_sheet)>>> workbook.sheetnames['HR', 'Products', 'Company Sales']>>> workbook.remove(hr_sheet)>>> workbook.sheetnames['Products', 'Company Sales']

你还可以用copy_worksheet()来复制一个工作表:

>>> workbook.sheetnames['Products', 'Company Sales']>>> products_sheet = workbook["Products"]>>> workbook.copy_worksheet(products_sheet)"Products Copy">>>> workbook.sheetnames['Products', 'Company Sales', 'Products Copy']

如果保存上述代码后打开电子表格,你会发现工作表Products Copy与工作表Products其实是重复的。

  • 冻结行和列

在处理大型电子表格时,你可能想做的事情是冻结一些行或列,这样当你向右或向下滚动时,它们仍然可见。

冻结数据可以让你关注重要的行或列,无论你在电子表格中滚动到哪里。

同样,openpyxl 也有办法通过使用工作表 freeze_panes 属性来实现这一目的。对于这个例子,回到我们的sample.xlsx电子表格,并尝试做以下操作:

>>> workbook = load_workbook(filename="sample.xlsx")>>> sheet = workbook.active>>> sheet.freeze_panes = "C2">>> workbook.save("sample_frozen.xlsx")

如果你在你最喜欢的电子表格编辑器中打开sample_frozen.xlsx电子表格,你会注意到第1行以及A和B列都被冻结了,无论你在电子表格中的哪个位置导航,这部分都是可见的。

这个功能很方便,可以将标题保持在视线范围内,这样你就可以随时知道每列代表什么。下面在是编辑器中的样子:

2029616167c665d1df004dc73545c7bc.png

请注意,你已经到了电子表格的最后,然而,你既能看到第1行,又能看到A和B列。

  • 添加过滤器

你可以使用 openpyxl 为你的电子表格添加过滤器和分类。然而,当你打开电子表格时,数据不会根据这些分类和过滤器重新排列。

这似乎是一个很无用的功能,但当你以编程方式创建一个电子表格,并将被别人发送和使用时,至少创建过滤器并允许人们在之后使用它还是不错的。

下面的代码是一个例子,说明如何在我们现有的sample.xlsx电子表格中添加一些过滤器。

>>> # Check the used spreadsheet space using the attribute "dimensions">>> sheet.dimensions'A1:O100'>>> sheet.auto_filter.ref = "A1:O100">>> workbook.save(filename="sample_with_filters.xlsx")

现在,当您在编辑器中打开电子表格时,您应该可以看到创建的过滤器。

9ef067e4fbd7e0554e5a693c9a39b828.png

如果你知道你要应用过滤器的电子表格的哪个部分,你就不必使用 sheet.dimensions

今天介绍了以下创建电子表格的基本操作,下一篇我们会继续深入了解如何添加公式,添加样式,进行条件格式化,添加图片,添加漂亮的图表,以及如何转换Python类到Excel电子表格。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纯css3实现的鼠标悬停动画按钮

今天给大家带来一款纯css3实现的鼠标悬停动画按钮。这款按钮鼠标经过前以正方形的形式&#xff0c;当鼠标经过的时候以动画的形式变成圆形。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <div><span></span></div> …

如何交到一个女朋友?

1 北京的路&#xff0c;上海的路和重庆的路2 这兔子是吃弹簧长大的吧&#xff01;3 猫和老鼠原来是真的4 把水凝胶珠投入有颜色的水&#xff0c;过一会儿之后...5 为了同学得分&#xff0c;老师有多努力你知道吗&#xff1f;6 不同年龄段爱用的表情7 来自一个幼儿园小男生的教学…

浅析 Dapr 里的云计算设计模式

Dapr 实际上是把分布式系统 与微服务架构实践的挑战以及k8s 这三个主题的全方位的设计组合&#xff0c;特别是Kubernetes设计模式 一书作者Bilgin Ibryam 提出的Multi-Runtime Microservices Architecture&#xff0c;中译参见敖小剑的博客: [译] 多运行时微服务架构。分布式系…

Linux Kickstart无人值守安装(上)

Linux Kickstart无人值守安装 在我们的网络维护生涯中&#xff0c;有不少朋友&#xff0c;感觉到自己在机械的做一件事情&#xff0c;在无聊、无趣和无奈中工作。尤其一些简单重复的操作更容易让大家感到工作的无趣。今天将给大家介绍如何大规模的部署RedHat Linux操作系统&…

path manipulation怎么解决_干货!终于!解决macOS下pyenv安装python3.8.2缺少tkinter模块的问题!...

前言&#xff1a;笔者不过是一个刚立下flag要学习Python的小白&#xff0c;&#xff08;这也是笔者的第一篇网文、知乎文&#xff0c;如果没用&#xff0c;求轻虐&#xff09;&#xff0c;为此还冲动傻傻地配了一台2019款13寸的MacBook Pro。电脑配置&#xff08;作为参考&…

如何给柱状图柱子添加阴影_【LeetCode日记】84. 柱状图中最大的矩形

题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。以上是柱状图的示例&#xff0c;其中每个柱子的宽度为 1&#xff0c;给定的高度为 [2,1,5,6,2…

VMWare虚拟机NAT上网方法 亲测可用

首先虚拟机的网卡要选择NAT 然后 在Virtual Network Editor中一定选上DHCP功能。 还要主机的服务必须开启。主机的VMnet8对应NAT模式&#xff0c;这个VMnet8的配置保持默认不要改&#xff0c;默认会有IP&#xff0c;不要设置成自动获取。 在虚拟机Windows系统的网卡设置必须自动…

用MATLAB三步完成机器人搭建

全世界只有3.14 % 的人关注了爆炸吧知识如果说机器人是一粒种子&#xff0c;那么《机器人大擂台》这档节目就是那个播种人。节目中&#xff0c;不同选手操纵着机器人&#xff0c;在擂台上各显神威 —— 冲撞、翻滚、撬杠、喷火等各种技能&#xff0c;总能令人眼花缭乱&#xff…

可以备份服务器文件的软件哪个好,文件备份软件哪个好?

对于一个企业而言&#xff0c;文件的价值是无可比拟的&#xff0c;无论是重要的文件、文档还是会议记录等等都是不可丢失的。一般而言&#xff0c;企业为了让文件更加安全&#xff0c;会进行文件的备份&#xff0c;企业文件备份传统方式就是租用或者购买一台服务器来进行数据或…

太妙了!微软670页《dotnet官方手册》火了,完整PDF开放下载!

本文档由微软技术专家编写&#xff0c;从1.1版本持续维护升级至今&#xff0c;开篇就详细对比了各版本中的差异&#xff0c;内容包含了ASP.NET Core、Blazor、WebAPI、SignalR、gRPC、EF Core、云原生&#xff0c;既是最权威的&#xff0c;也是最全面的&#xff0c;是学习跨平台…

(译)如何使用cocos2d制作基于tile地图的游戏教程:第一部分

免责申明&#xff08;必读&#xff01;&#xff09;&#xff1a;本博客提供的所有教程的翻译原稿均来自于互联网&#xff0c;仅供学习交流之用&#xff0c;切勿进行商业传播。同时&#xff0c;转载时不要移除本申明。如产生任何纠纷&#xff0c;均与本博客所有人、发表该翻译稿…

devexpress 中的checkboxlist怎么设置间距_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解

本篇文章主要为大家讲解了html中的h1标签的样式解析&#xff0c;但是如果不用css样式来做的话&#xff0c;那就只能在html4.01中显示了&#xff0c;所以我们还是尽快学习css层叠样式表吧&#xff0c;好了&#xff0c;现在让我们来说说这篇文章吧。HTML中的H标签(H1&#xff0c;…

终端如何粘贴快捷键_11 个“原来可以这样”的 Linux 终端命令

1. 命令行日常系快捷键如下的快捷方式非常有用&#xff0c;能够极大的提升你的工作效率&#xff1a;CTRL U - 剪切光标前的内容CTRL K - 剪切光标至行末的内容CTRL Y - 粘贴CTRL E - 移动光标到行末CTRL A - 移动光标到行首ALT F - 跳向下一个空格ALT B - 跳回上一个空格…

2020应届生「求职图鉴」,扎心了!

一场疫情&#xff0c;开启了2020应届生求职的地狱模式&#xff1a;实习&#xff0c;辞了考研&#xff0c;凉了论文&#xff0c;废了春招&#xff0c;歇了......别说拿高薪&#xff0c;有份工作都难&#xff01;当「想象」遇上「现实」&#xff0c;现在的你&#xff0c;还挺得住…

WCF发布到IIS7问题的解决方案

今天用VS2010开发了一个WCF服务进行一个简单测试&#xff0c;没想到这点小事竟然折腾了我2个小时。 为避免其他兄弟遇到相同的问题少走弯路做一下总结。 操作系统:Windows7 旗舰版 开发环境:VS2010 .NET Framework4.0 ASP.NET4.0 第一步&#xff1a;检查Windows7中IIS是否安装了…

flex布局_Flex布局,真香

作者: EcbJS https://blog.csdn.net/EcbJS/article/details/106466757?utm_sourceapp1.基本原理Flex 英文意思为&#xff0c;弯曲&#xff0c;屈伸&#xff0c;可以伸缩的布局&#xff0c;天生就是为了适配不同的分辨率。而且用法也很简单&#xff0c;首先只要告诉浏览器&…

字体编辑器_FontLab 7 ——字体编辑器

FontLab VI是一款专为Mac用户设计的字体编辑器。无论您是专家还是初学者&#xff0c;使用FontLab突破性的绘图工具和响应式轮廓操作都能够轻松设计&#xff0c;编辑和转换字体&#xff0c;让您的设计过程将更快&#xff0c;更高效&#xff01;功能介绍一、画画 下一代绘图神器&…

分享一个理工男必学的撩妹姿势

随着气温越来越高&#xff0c;空气中恋爱的酸臭味也越来越浓。。。是的&#xff0c;这意味着一个由谐音演变而来的“传统佳节”&#xff0c;也终于迎来了它的高光时刻。520可以说是每个直男都要经历的考验&#xff0c;说是“我爱你”的谐音&#xff0c;过得好是520&#xff0c;…

Docker小白到实战之Dockerfile解析及实战演示,果然顺手

前言使用第三方镜像肯定不是学习Docker的最终目的&#xff0c;最想要的还是自己构建镜像&#xff1b;将自己的程序、文件、环境等构建成自己想要的应用镜像&#xff0c;方便后续部署、启动和维护&#xff1b;而Dockerfile就是专门做这个事的&#xff0c;通过类似简单编码的形式…

转换实体类_利用Java反射机制进行Map和JavaBean间转换

Java中利用反射进行Map和JavaBean间转换在日常工作中&#xff0c;有时候我们可能会遇到以下这样的情况发生。例如&#xff1a;(1)后端接受一个参数Map param(可能是前端form维护的一个对象...)。(2)将一个对象个别属性(key)和对应值(value)存放到Map对象中。(3).......针对上面…