本文作者:包子也沉默

详解Python操作Excel文件

包子也沉默 3年前 (2019-09-04) ( 09-04 ) 1400 1条评论
摘要: lrd.readthedocs.io/en/latest/ xlrd支持.xls,.xlsx文件的读 通过设置on_demand变量使open_workbook()函数只加载那些需要的sheet,从而节省时间和内存(该方法对.xlsx文件无效)。 xlrd.Book对象有一个unload_sheet方法,它将从内存中卸载工作表,由工作表索引或工作表名称指定(该方法对.xlsx文件无效) 2
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38405253/article/details/100512061

前言

本篇文章主要总结了一下利用python操作Excel文件的第三方库和方法。

虚拟化其实也很尴尬,对于Linux而言自然是改了就改了,但Windows你要怎么改?人家可是闭源的。写到这里,不禁会想起自己写过的代码,拆东墙补西墙可不值得提倡,要从根源上解决问题。而这个根源自然就是

常见库简介

1.xlrd

xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件。

、创建一个excel文件,并写入不同类的内容# -*- coding: utf-8 -*-from openpyxl import Workbookimport datetimeimport time

地址:http://xlrd.readthedocs.io/en/latest/

在虚拟机中运行这一事实,否则可能打破等价性(Equivalence)虚拟化需求条件。例如,x86处理器的特权级别存放在CS代码段寄存器内,GuestOS可以使用非特权push指令将CS寄存器压栈,然后

  • xlrd支持.xls,.xlsx文件的读

    xls文件的整个表(表有1个分页,页有2000行1200列的整数)。 用例4.读.xlsx文件的整个表(表有1个分页,页有2000行1200列的整数)。 用例5.写.xls文件的整个表(表有5

  • 通过设置on_demand变量使open_workbook()函数只加载那些需要的sheet,从而节省时间和内存(该方法对.xlsx文件无效)。

    设备驱动程序、网卡接口、显卡接口等外部设备进行访问。  显然,只有操作系统能够无限制的访问内存、磁盘、鼠键等外围硬件设备的数据,因为操作系统就是作为计算机硬件资源管理器而存在的,操作系统就是为了让多个

  • xlrd.Book对象有一个unload_sheet方法,它将从内存中卸载工作表,由工作表索引或工作表名称指定(该方法对.xlsx文件无效)

    echHyperMotion。云物互联公号主,现专注于探索云计算、边缘计算、SDN与物联网的深度结合应用场景。声明:本文首发于作者的CSDN博客,已获作者授权,原文:https://blog.csdn

2.xlwt

xlwt是一个用于将数据和格式化信息写入旧Excel文件的库(如.xls)。

。但需要注意的是,这一说法在后来被进一步细分为了狭义的硬件虚拟化技术,现今更加为人多熟知的硬件虚拟化是指:一种对计算机或操作系统的虚拟化,能够对用户隐藏真实的计算机硬件,表现出另一个抽象的计算平台。S

地址:https://xlwt.readthedocs.io/en/latest/

户机物理地址,硬件自动搜索VMM提供的关于该GuestOS的一个页表,翻译成主机物理地址,或产生缺页异常来触发VMexit。 支持高效的I/O虚拟化:I/O虚拟化需要考虑性能、可用性、可扩展性、可

  • xlwt支持.xls文件写。

    意组合为一个或多个(虚拟)计算机的配置环境。虚拟化技术打破了计算机内部实体结构间不可切割的障碍,使用户能够以比原本更好的配置方式来应用这些计算机硬件资源。而这些资源的虚拟形式将不受现有架设方式,地域或

3.xlutils

xlutils是一个处理Excel文件的库,依赖于xlrd和xlwt。

ea),主机状态区(HostStateArea)和执行控制区。VMentry时,硬件自动从客户机状态区加载GuestOS的上下文。并不需要保存VMM的上下文,原因与中断处理程序类似,因为VMM如果开始

地址:http://xlutils.readthedocs.io/en/latest/

eet1中的A1单元格赋值为zekewb["sheet1 Title" ]["A1"] = "zeke"# 复制一个sheetsource = wb["sheet1 Title"]target = w

  • xlutils支持.xls文件。

    s的映射表。发生缺页异常的地址总是GuestLinearAddress,VMM先去GuestOS中的页表检查原因,如果页表项已经建立,即对应的GuestPhysicalAddress存在,说明尚未建立

  • 支持Excel操作。

    持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作,并使用xlwt保存数据,而xlwt只能写入.xls文件(另一个可以写入.xls文件的库

    n.net/csdnnews/article/details/100179293作者| 范桂飓责编|屠敏出品|CSDN博客前言 我已经想不起来是从什么时候开始的,突然就对计算机历史产生了浓厚的兴趣。于

    储地址和物理存储地址转换的页表;此外,还需要在VMM模拟磁盘设备控制器、网络适配器等等各种I/O外设接口。如此依赖,GuestOS就不知道自己其实是个虚拟机了呀,它收到了欺骗。可以想象得到,全虚拟化这

    用来隔离进程和资源。是Docker最初使用的容器技术支撑。2008年9月4日,RedHat收购以色列公司Qumranet,并着手使用KVM替换在RedHat中的使用的Xen。2009年9月,红帽发布R

    分析的工作。综合考虑,xlwings的表现最佳,正如其名,xlwings——MakeExcelFly!便捷性比较本测试目前只是针对Excel文件的读写,并未涉及Excel操作,单从读写的便捷性来讲,各

4.xlwings

xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。

状态都需要恢复,例如主机CR3寄存器中存放的是VMM设置的页表物理地址,而不是GuestOS设置的值。pCPU直接运行GuestOS的机器指令时,由于GuestOS运行在低特权级别(Ring1),如果

地址:http://docs.xlwings.org/en/stable/index.html

用Python,也可在python中调用Excel的库。地址:http://docs.xlwings.org/en/stable/index.html xlwings支持.xls读,支持.xlsx文件

  • xlwings支持.xls读,支持.xlsx文件读写。

    以后版本 VirtualPC2005 KVM     ps:这里我特意将类型I和II的顺序调转,至于为什么,从实现案例可以看出类型I已然是时代的选择。再一个,老实说我确实为这个事实感到震惊,平

  • 支持Excel操作。

    持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作,并使用xlwt保存数据,而xlwt只能写入.xls文件(另一个可以写入.xls文件的库

    n.net/csdnnews/article/details/100179293作者| 范桂飓责编|屠敏出品|CSDN博客前言 我已经想不起来是从什么时候开始的,突然就对计算机历史产生了浓厚的兴趣。于

    储地址和物理存储地址转换的页表;此外,还需要在VMM模拟磁盘设备控制器、网络适配器等等各种I/O外设接口。如此依赖,GuestOS就不知道自己其实是个虚拟机了呀,它收到了欺骗。可以想象得到,全虚拟化这

    用来隔离进程和资源。是Docker最初使用的容器技术支撑。2008年9月4日,RedHat收购以色列公司Qumranet,并着手使用KVM替换在RedHat中的使用的Xen。2009年9月,红帽发布R

    分析的工作。综合考虑,xlwings的表现最佳,正如其名,xlwings——MakeExcelFly!便捷性比较本测试目前只是针对Excel文件的读写,并未涉及Excel操作,单从读写的便捷性来讲,各

  • 支持VBA。

    须使用纯软件实现的方式构造VMM。VMware首创了这项技术,一举稳坐虚拟化龙头老大。全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统

    enpyxl还支持VBA文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用xlsxwriter需要从零开始。6.DataNitro作为插件内嵌到Excel中,可完全替代VBA,在Exce

     ChristopherStrachey大型机和小型机的虚拟化1960年,为了应对物理学领域的计算需求,美国启动Atlas超级计算机(SuperComputer)项目。同期的英国全国只有16台计算机,

4、强大的转换器可以处理大部分数据类型,包括在两个方向上的numpy array和pandas DataFrame。

每个控制寄存器的每一位都有对应的掩码,控制GuestOS是否可以直接写相应的位,或是触发VMexit。同时VMCS中包括影子控制寄存器,GuestOS读取控制寄存器时,硬件将影子控制寄存器的值返回给G

5.openpyxl

openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库。

 ws1["A"]:    print(cell.value)# 从A列到C列,获取每一个值print(ws1["A:C"])for column in ws1["A:C"]:    for cell

地址:https://openpyxl.readthedocs.io/en/stable/

是一个特权寄存器,某些操作系统会频繁设置(LinuxKernel只在初始化阶段为每个处理器的TPR设置相同的值)。 显然,基于Trap-And-Emulate处理方式的全虚拟化虽能够以纯软件的方式完成

  • openpyxl支持.xlsx文件的读写。

    e("myexcel.xls")#----xlutils库#打开excel文件book = xlrd.open_workbook("myexcel.xls")#复制一份

  • 支持Excel操作。

    持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作,并使用xlwt保存数据,而xlwt只能写入.xls文件(另一个可以写入.xls文件的库

    n.net/csdnnews/article/details/100179293作者| 范桂飓责编|屠敏出品|CSDN博客前言 我已经想不起来是从什么时候开始的,突然就对计算机历史产生了浓厚的兴趣。于

    储地址和物理存储地址转换的页表;此外,还需要在VMM模拟磁盘设备控制器、网络适配器等等各种I/O外设接口。如此依赖,GuestOS就不知道自己其实是个虚拟机了呀,它收到了欺骗。可以想象得到,全虚拟化这

    用来隔离进程和资源。是Docker最初使用的容器技术支撑。2008年9月4日,RedHat收购以色列公司Qumranet,并着手使用KVM替换在RedHat中的使用的Xen。2009年9月,红帽发布R

    分析的工作。综合考虑,xlwings的表现最佳,正如其名,xlwings——MakeExcelFly!便捷性比较本测试目前只是针对Excel文件的读写,并未涉及Excel操作,单从读写的便捷性来讲,各

  • 加载大.xlsx文件可以使用read_only模式。

    in32包; win32com不是独立的扩展库,而是集成在其他库中,安装pypiwin32或者pywin32包即可使用; DataNitro是Excel的插件,安装需到官网下载。 基本功能:由

  • 写入大.xlsx文件可以使用write_only模式。

    softDOS的PC需要1,500美金,而使用SoftPC模拟,就可以直接在大型工作站上运行MicrosoftDOS了。1989年,InsigniaSolutions发布了Mac版的SoftPC,使苹

6.xlsxwriter

xlsxwriter是一个用于创建Excel .xlsx文件的库。

作系统虚拟化(OS-levelvirtualization)是一种在服务器操作系统中使用的、没有VMM层的轻量级虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程(容器),不同

地址:https://xlsxwriter.readthedocs.io/

员工,创建了五座新工厂。即便如此,当时的出货时间仍被不断顺延。吉恩·阿姆达尔是系统主架构师,当时的项目经理佛瑞德·布鲁克斯(FrederickP.Brooks,Jr.)事后根据这项计划的开发经验,写出

  • xlswriter支持.xlsx文件的写。

    一个著名的全虚拟化的VMM,但是它使用了一种被称为动态二进制翻译(BinaryTranslation)的技术把对特权状态的访问转换成对影子状态的操作,从而避免了低效的Trap-And-Emulate的

  • 支持VBA。

    须使用纯软件实现的方式构造VMM。VMware首创了这项技术,一举稳坐虚拟化龙头老大。全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统

    enpyxl还支持VBA文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用xlsxwriter需要从零开始。6.DataNitro作为插件内嵌到Excel中,可完全替代VBA,在Exce

     ChristopherStrachey大型机和小型机的虚拟化1960年,为了应对物理学领域的计算需求,美国启动Atlas超级计算机(SuperComputer)项目。同期的英国全国只有16台计算机,

  • 写入大.xlsx文件时使用内存优化模式。

    ckEMUlator)的第一个版本。基于二进制翻译的全虚拟化此时,虚拟化技术的共同目标就是将x86架构转变为通用的共享硬件基础架构,使应用程序运行环境在隔离性、移动性和操作系统类型方面都有选择的空间。

7.win32com

win32com库存在于pywin32中,是一个读写和处理Excel文件的库。

将会一直更新下去! 最后 对于篇幅较长的文章,我都习惯使用三句话来进行总结: 虚拟化的发展:纵观虚拟化技术的发展历史,可以看到它始终如一的目标就是实现对IT资源的充分利用。 虚拟化与云计算:虚拟化

地址:http://pythonexcels.com/python-excel-mini-cookbook/

质是一个多用户交互式操作系统。其中,“分时”的含义是将CPU占用切分为多个极短(e.g.1/100sec)的时间片,每个时间片都执行着不同的任务。通过对这些时间片的轮询,就可以将一个CPU“伪装”(虚

  • win32com支持.xls,.xlsx文件的读写,支持.xlsx文件的写。

    中操作模式的转换发生频率相当高,因此系统的整体性能受到明显损害。一种可行的方案是为VMM和每个虚拟机分配一个全局唯一ID,TLB的每一项附加该ID信息来索引线性地址的翻译。 提供内存管理单元(MM

  • 支持Excel操作。

    持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作,并使用xlwt保存数据,而xlwt只能写入.xls文件(另一个可以写入.xls文件的库

    n.net/csdnnews/article/details/100179293作者| 范桂飓责编|屠敏出品|CSDN博客前言 我已经想不起来是从什么时候开始的,突然就对计算机历史产生了浓厚的兴趣。于

    储地址和物理存储地址转换的页表;此外,还需要在VMM模拟磁盘设备控制器、网络适配器等等各种I/O外设接口。如此依赖,GuestOS就不知道自己其实是个虚拟机了呀,它收到了欺骗。可以想象得到,全虚拟化这

    用来隔离进程和资源。是Docker最初使用的容器技术支撑。2008年9月4日,RedHat收购以色列公司Qumranet,并着手使用KVM替换在RedHat中的使用的Xen。2009年9月,红帽发布R

    分析的工作。综合考虑,xlwings的表现最佳,正如其名,xlwings——MakeExcelFly!便捷性比较本测试目前只是针对Excel文件的读写,并未涉及Excel操作,单从读写的便捷性来讲,各

8.DataNitro

DataNitro是一个内嵌在Excel中的插件。

ration模式,恢复VMM的运行,这种转换称为VMexit。VMXrootoperation模式下软件的行为与在没有VT-x技术的处理器上的行为基本一致;而VMXnon-rootoperation模

地址:https://datanitro.com/docs/

Title"# 设定sheet的插入位置 默认插在后面ws2 = wb.create_sheet("Mysheet", 0)ws2.title = "Mysheet"# 设定sheet的标签的背景颜色

  • DataNitro支持.xls,.xlsx文件的读写。

    ss),并不是最终的主机物理地址(HostPhysicalAddress)。当GuestOS发生缺页异常时,VMM需要知道缺页异常的原因,是Guest进程试图访问没有权限的地址,或是客户机线性地址(G

  • 支持Excel操作。

    持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作,并使用xlwt保存数据,而xlwt只能写入.xls文件(另一个可以写入.xls文件的库

    n.net/csdnnews/article/details/100179293作者| 范桂飓责编|屠敏出品|CSDN博客前言 我已经想不起来是从什么时候开始的,突然就对计算机历史产生了浓厚的兴趣。于

    储地址和物理存储地址转换的页表;此外,还需要在VMM模拟磁盘设备控制器、网络适配器等等各种I/O外设接口。如此依赖,GuestOS就不知道自己其实是个虚拟机了呀,它收到了欺骗。可以想象得到,全虚拟化这

    用来隔离进程和资源。是Docker最初使用的容器技术支撑。2008年9月4日,RedHat收购以色列公司Qumranet,并着手使用KVM替换在RedHat中的使用的Xen。2009年9月,红帽发布R

    分析的工作。综合考虑,xlwings的表现最佳,正如其名,xlwings——MakeExcelFly!便捷性比较本测试目前只是针对Excel文件的读写,并未涉及Excel操作,单从读写的便捷性来讲,各

  • 支持VBA。

    须使用纯软件实现的方式构造VMM。VMware首创了这项技术,一举稳坐虚拟化龙头老大。全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统

    enpyxl还支持VBA文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用xlsxwriter需要从零开始。6.DataNitro作为插件内嵌到Excel中,可完全替代VBA,在Exce

     ChristopherStrachey大型机和小型机的虚拟化1960年,为了应对物理学领域的计算需求,美国启动Atlas超级计算机(SuperComputer)项目。同期的英国全国只有16台计算机,

  • 收费

    xlsx文件无效)。 xlrd.Book对象有一个unload_sheet方法,它将从内存中卸载工作表,由工作表索引或工作表名称指定(该方法对.xlsx文件无效) 2.xlwtxlwt是一个用于将

9.pandas

pandas通过对Excel文件的读写实现数据输入输出

,GeraldJ.Popek和RobertP.Goldberg还在论文中介绍了两种Hypervisor类型,分别是类型I和类型II。类型II(寄居或托管Hypervisor):VMM运行在传统的操作系

地址:http://pandas.pydata.org/

ces(AWS)开始以Web服务的形式向企业提供IT基础设施服务,现在通常称为云计算。ps:虚拟化和云计算不解的渊源自此开始了。2007年1月,Sun公司发布了开源虚拟化软件VirtualBox。同年

  • pandas支持.xls,.xlsx文件的读写。

    。Multi-Processing解决了应用程序因等待外部设备而导致处理器空转问题,同时也解决了用户如何调试(Debug)代码的问题。即便在现在看来,多道程序的理念仍是操作系统在“并发”领域中的隗宝。

  • 支持只加载每个表的单一工作页。

    其它严重错误就处于Shutdown状态,等等。执行控制区用于存放可以操控VMentry和VMexit的标志位,包括: External-interruptexiting:用于设置是否外部中断可以触发V

 

常来触发VMexit。 支持高效的I/O虚拟化:I/O虚拟化需要考虑性能、可用性、可扩展性、可靠性和成本等多种因素。最简单的方式是VMM为虚拟机模拟一个常见的I/O设备,该设备的功能由VMM用软件

用场景。声明:本文首发于作者的CSDN博客,已获作者授权,原文:https://blog.csdn.net/Jmilk/article/details/99675664。【END】5G之后,中国的人工

本代码importxlrd#读取数据import xlwt #写入数据import xlutils #操作excel#----xlrd库#打开excel文件workbook = xlrd.open_w

)# 注意如果原文件有一些图片或者图标,则保存的时候可能会导致图片丢失wb.save("test5.xlsx")wb.close()5、操作批量的单元格# -*- coding: utf-8 -*-f

详解Python操作Excel文件

 

常来触发VMexit。 支持高效的I/O虚拟化:I/O虚拟化需要考虑性能、可用性、可扩展性、可靠性和成本等多种因素。最简单的方式是VMM为虚拟机模拟一个常见的I/O设备,该设备的功能由VMM用软件

用场景。声明:本文首发于作者的CSDN博客,已获作者授权,原文:https://blog.csdn.net/Jmilk/article/details/99675664。【END】5G之后,中国的人工

本代码importxlrd#读取数据import xlwt #写入数据import xlutils #操作excel#----xlrd库#打开excel文件workbook = xlrd.open_w

)# 注意如果原文件有一些图片或者图标,则保存的时候可能会导致图片丢失wb.save("test5.xlsx")wb.close()5、操作批量的单元格# -*- coding: utf-8 -*-f

提醒及注意:

的特权汇编指令时,HostOS产生异常(GeneralProtectionException),执行控制权重新从GuestOS转到VMM手中。VMM事先分配一个变量作为影子CR3寄存器给GuestOS

  • xlutils 仅支持 xls 文件,即2003以下版本;

    s://datanitro.com/docs/ DataNitro支持.xls,.xlsx文件的读写。 支持Excel操作。 支持VBA。 收费 9.pandaspandas通过对Exce

  • win32com 与 DataNitro 仅支持 windows 系统;

    ,平均每18-24个月翻一番。   Wintel联盟:即微软与英特尔的合作,自20世纪80年代以来,Wintel联盟就主导着全球PC市场。   GNU/Linux:开源上帝。  随着x86服务器和桌面

  • xlwings 安装成功后,如果运行提示报错“ImportError: no module named win32api”,请再安装 pypiwin32 或者 pywin32 包;

    够长盛不衰,长远的洞察力至关重要。操作系统虚拟化(容器)2013年3月15日,在加利福尼亚州圣克拉拉召开的Python开发者大会上,DotCloud的创始人兼首席执行官SolomonHvkes在一场仅

  • win32com 不是独立的扩展库,而是集成在其他库中,安装 pypiwin32 或者 pywin32 包即可使用;

    现了多个具有突破性的虚拟化概念,包括部分硬件共享(partialhardwaresharing)、时间共享(timesharing)、内存分页(memorypaging)以及实现了虚拟内存管理的VMM

  • DataNitro 是 Excel 的插件,安装需到官网下载。

    地设置需要转发的虚拟中断或异常,在VMentry时,硬件自动调用GuestOS的中断和异常处理程序,大大简化VMM的设计。同时,GuestOS对中断的屏蔽及解除可以不触发VMexit,从而提高了性能。

基本功能:

由于设计目的不同,每个模块通常着重于某一方面功能,各有所长。

activerows = []for row in ws.iter_rows():    rows.append(row)# 所有行print(rows)# 获取第一行print(rows[0])# 

1.xlwings

可结合 VBA 实现对 Excel 编程,强大的数据输入分析能力,同时拥有丰富的接口,结合 pandas/numpy/matplotlib 轻松应对 Excel 数据处理工作。

收购。同年,微软收购Connectix公司获得VirtualPC虚拟化技术。相较于全虚拟化,半虚拟化VMM只需要模拟部分底层硬件,因此GuestOS不做修改是无法在虚拟机中运行的,甚至运行在虚拟机中的

2.openpyxl

简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有,图表功能是其一大亮点,缺点是对 VBA 支持的不够好。

sx")6.6DataNitro基本代码#单一单元格赋值Cell("A1").value = "data"#单元区域赋值CellRange("A1:B2

3.pandas

数据处理是 pandas 的立身之本,Excel 作为 pandas 输入/输出数据的容器。

、IDT等特权资源的设置,防止GuestOS运行在Ring0级,同时又要保护降级后的GuestOS不受Guest进程的主动攻击或无意破坏。 特权级别名(RingAlias):特权级别名是指Gues

4.win32com

从命名上就可以看出,这是一个处理 windows 应用的扩展,Excel 只是该库能实现的一小部分功能。该库还支持 office 的众多操作。需要注意的是,该库不单独存在,可通过安装 pypiwin32 或者 pywin32 获取。

是该领域的先驱,功能特点中规中矩,比较大的缺点是仅支持xls文件。读写测试测试用例 用例1.读.xls文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。 用例2.读.xlsx文件

5.xlsxwriter

拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。

法的内存数据操作,同时也避免了应用程序错误操作计算机的物理设备。一般的,CPU都会划分为用户态和内核态,而x86CPU更是细分为了Ring0~3四种执行状态。 Ring0核心态(KernelMode)

6.DataNitro

作为插件内嵌到 Excel 中,可完全替代 VBA,在 Excel 中使用 python 脚本。既然被称为 Excel 中的 python,协同其他 python 库亦是小事一桩。然而,这是付费插件…

考文档https://www.ibm.com/developerworks/cn/linux/l-cn-vt/index.html作者:范桂飓,九州云(99Cloud)OpenStack研发工程师,曾

7.xlutils

基于 xlrd/xlwt,老牌 python 包,算是该领域的先驱,功能特点中规中矩,比较大的缺点是仅支持 xls 文件。

拟化技术的应用和发展源于大型机对分时系统的需求。这种通过硬件的方式来生成多个可以运行独立操作系统软件的虚拟机实例,解决了早期大型计算机只能单任务处理而不能分时多任务处理的问题。由于这种虚拟化技术是基于

读写测试

测试用例

  • 用例1. 读.xls文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。

    控制主机物理内存,因此GuestOS中的线性地址的翻译同时牵涉到VMM和GuestOS的地址空间,而硬件只能看到其中的一个。Intel和AMD提出了各自的解决方案,分别叫做EPT(ExtendedPa

  • 用例2. 读.xlsx文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。

    ,最是难写,笔者碍于能力有限,还望大家多指点一二。 什么是虚拟化? 在计算机科学中,虚拟化技术(Virtualization)是一种资源管理(优化)技术,将计算机的各种物理资源(e.g.CPU、内存以

  • 用例3. 读.xls文件的整个表(表有1个分页,页有2000行1200列的整数)。

    相关的性能开销,也极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。又因为VMM和GuestOS共享底层的处理器资源,所以硬件需要一个物理内存区域来自动保存或恢复彼此执行的上下文

  • 用例4. 读.xlsx文件的整个表(表有1个分页,页有2000行1200列的整数)。

    eet"])# 获取全部sheet的名字,遍历sheet名字print(wb.sheetnames)for i in wb.sheetnames:    print(i)print("*"*50)fo

  • 用例5. 写.xls文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。

    adowPageTable),维护GuestLinearAddress到HostPhysicalAddress的映射,主机CR3寄存器存放这个影子页表的物理内存地址。VMM同时维护一个GuestOS全

  • 用例6. 写.xlsx文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。

    性能中庸。win32com拥有最棒的读写性能,但该库存在于pywin32的库中,自身没有完善的文档,使用略吃力。xlwings拥有和win32com不相伯仲的读写性能,强大的转换器可以处理大部分数据类

  • 用例7. 写.xls文件的整个表(表有1个分页,页有2000行1200列的整数)。

    (同时还必须模拟特权指令的执行过程)。全虚拟化的工作原理:虚拟机是对真实计算环境的抽象和模拟,VMM需要为每个虚拟机分配一套数据结构来管理它们状态,包括vCPU的全套寄存器,物理内存的使用情况,虚拟设

  • 用例8. 写.xlsx文件的整个表(表有1个分页,页有2000行1200列的整数)。

    lsxlutils是一个处理Excel文件的库,依赖于xlrd和xlwt。地址:http://xlutils.readthedocs.io/en/latest/ xlutils支持.xls文件。

测试结果

详解Python操作Excel文件

注:

Machine,基于内核的虚拟机),支持KVM的前提是CPU必须要支持虚拟化技术。2008年第一季度,微软同时发布了WindowsServer2008R2及虚拟化产品Hyper-V。2008年6月,L

  1. xlwt和pandas每个工作页最多写入256列,因此测试用例修改为每页有2000行256列的整数.

    iseinwritingthesoftwaretocontroleitherthetime-sharingormulti-programming.IfIhadIshouldnothavebeensoe

  2. xlutils读写依赖于xlrd和xlwt,不单独测试。

    adow:通过CR8访问TaskPriorityRegister(TPR)的时候,使用VMCS中的影子TPR,可以避免触发VMexit。同时执行控制区还有一个TPR阈值的设置,只有当GuestOS设置

  3. openpyxl测试两种模式,一是普通加载写入,二是read_only/write_only模式下的加载写入。

    ] = 1ws1["A2"] = 2ws1["A3"] = 3ws1["B1"] = 4ws1["B2"] = 5ws1["B3"] = 6ws1["C1"] = 7ws1["C2"] = 8ws1[

  4. DataNitro要收费,且需依托Excel使用,本次不测试。

    (cycle)。又比如,处理器本地高级可编程中断处理器(LocalAPIC)上有一个操作系统可修改的任务优先级寄存器(Task-PriorityRegister),IO-APIC将外部中断转发到TPR

性能比较

单从读写的性能上考虑,win32com的性能是最好的,xlwings其次。

et.cell_value(0,0)#----xlwt库#新建excelwb = xlwt.Workbook()#添加工作薄sh = wb.add_sheet("Sheet1")#写入

openpyxl虽然操作Excel的功能强大,但读写性能过于糟糕,尤其是写大表时,会占用大量内存(把我的4G内存用完了),开启read_only和write_only模式后对其性能有大幅提升,尤其是对读的性能提升很大,使其几乎不耗时(0.01秒有点夸张,不过确实是加载上了)。

sicalAddress)并填入物理CR3寄存器,最后返回到GuestOS中。随后VMM还将处理复杂的GuestOS缺页异常(PageFault)。简单来说就是全虚拟化需要在VMM中模拟出一颗包含了控

pandas把Excel当作数据读写的容器,为其强大的数据分析服务,因此读写性能表现中规中矩,但其对Excel文件兼容性是最好的,支持读写.xls,.xlsx文件,且支持只读表中单一工作页。同样支持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作,并使用xlwt保存数据,而xlwt只能写入.xls文件(另一个可以写入.xls文件的库是pandas,且这两个写入的Excel文件最多只能有256列,其余库就我目前的了解均只能写入.xlsx文件),性能一般。

意: xlutils仅支持xls文件,即2003以下版本; win32com与DataNitro仅支持windows系统; xlwings安装成功后,如果运行提示报错“ImportError:

xlsxwriter功能单一,一般用来创建.xlsx文件,写入性能中庸。win32com拥有最棒的读写性能,但该库存在于pywin32的库中,自身没有完善的文档,使用略吃力。xlwings拥有和win32com不相伯仲的读写性能,强大的转换器可以处理大部分数据类型,包括二维的numpy array和pandas DataFrame,可以轻松搞定数据分析的工作。

些难题就是新时代赋予虚拟化技术的历史任务,整个80~90年代,虚拟化技术及公司如同雨后春笋般涌现。1987年:InsigniaSolutions公司演示了一个称为SoftPC的软件模拟器,这个模拟器允

综合考虑,xlwings的表现最佳,正如其名,xlwings——Make Excel Fly!

其说是技术的创新,还不如说是一次组合式的创新。2014年6月,Docker发布了第一个正式版本v1.0。同年,Redhat和AWS就宣布了为Docker提供官方支持。在传统操作系统中,所有用户的进程本

便捷性比较

本测试目前只是针对Excel文件的读写,并未涉及Excel操作,单从读写的便捷性来讲,各库的表现难分上下,但是win32com和xlwings这两个库可以在程序运行时实时在打开的Excel文件中进行操作,实现过程的可视化,其次xlwings的数据结构转换器使其可以快速的为Excel文件添加二维数据结构而不需要在Excel文件中重定位数据的行和列,因此从读写的便捷性来比较,仍是xlwings胜出。

M(VirtualMachineMonitor)一词,被认为是世界上第一个支持虚拟机的系统。1964年:IBM推出了著名的System/360。你或许有所耳闻,System/360的开发过程被视为了计

代码示例

最后,附上一些演示代码,大家可自行体会下不同模块的使用。

技术除支持广泛的传统操作系统类型之外,还支持64位客户操作系统。硬件辅助虚拟技术提高了虚拟机的性能以及兼容性。需要注意的是,上文中我们提到了全虚拟化、半虚拟化和硬件辅助的全虚拟化,但这种分类实际上并不

6.1 xlwings基本代码

import xlwings as xw
#连接到excel
workbook = xw.Book(r"path/myexcel.xlsx")#连接excel文件
#连接到指定单元格
data_range = workbook.sheets("Sheet1").range("A1")
#写入数据
data_range.value = [1,2,3]
#保存
workbook.save()

6.2 xlsxwriter基本代码

import xlsxwriter as xw
#新建excel
workbook  = xw.Workbook("myexcel.xlsx")
#新建工作薄
worksheet = workbook.add_worksheet()
#写入数据
worksheet.write("A1",1)
#关闭保存
workbook.close()

6.3 xlutils基本代码import xlrd #读取数据

import xlwt #写入数据
import xlutils #操作excel
#----xlrd库
#打开excel文件
workbook = xlrd.open_workbook("myexcel.xls")
#获取表单
worksheet = workbook.sheet_by_index(0)
#读取数据
data = worksheet.cell_value(0,0)
#----xlwt库
#新建excel
wb = xlwt.Workbook()
#添加工作薄
sh = wb.add_sheet("Sheet1")
#写入数据
sh.write(0,0,"data")
#保存文件
wb.save("myexcel.xls")
#----xlutils库
#打开excel文件
book = xlrd.open_workbook("myexcel.xls")
#复制一份
new_book = xlutils.copy(book)
#拿到工作薄
worksheet = new_book.getsheet(0)
#写入数据
worksheet.write(0,0,"new data")
#保存
new_book.save()

6.4 win32com基本代码

import win32com.client as wc
#启动Excel应用
excel_app = wc.Dispatch("Excel.Application")
#连接excel
workbook = excel_app.Workbooks.Open(r"e:/myexcel.xlsx" )
#写入数据
workbook.Worksheets("Sheet1").Cells(1,1).Value = "data"
#关闭并保存
workbook.SaveAs("newexcel.xlsx")
excel_app.Application.Quit()

6.5 openpyxl基本代码

import openpyxl
# 新建文件
workbook = openpyxl.Workbook()
# 写入文件
sheet = workbook.activesheet["A1"]="data"
# 保存文件
workbook.save("test.xlsx")

6.6 DataNitro基本代码

#单一单元格赋值
Cell("A1").value = "data"
#单元区域赋值
CellRange("A1:B2").value = "data"

openpyxl具体使用

1、 创建一个excel 文件,并写入不同类的内容

1]print(rows[len(rows) - 1])# 获取第后一行和最后一列的单元格对象print(rows[len(rows) - 1][len(rows[0]) - 1])# 获取第后一行和

# -*- coding: utf-8 -*-
from openpyxl import Workbook
import datetime
import time

# 创建文件对象
wb = Workbook()
# 获取第一个sheet
ws = wb.active

# 在第1行第A列,写入数字23333
ws["A1"] = 23333
# 写入中文(unicode中文也可以)
ws["B1"] = "你好!"+"欢迎使用openpyxl"

# 在下一行,写入多个单元格
ws.append([1, 2, 3])

# 写入一个当前时间
ws["A2"] = datetime.datetime.now()

# 写入一个自定义的时间格式
ws["A3"] = time.strftime("%Y{y}%m{m}%d{d}%H{h}%M{f}%S{s}", time.localtime()).format(y="年", m="月", d="日", h="时", f="分", s="秒")

# 保存文件,注意文件覆盖
wb.save("test.xlsx")
# 关闭流
wb.close()

2、创建sheet

到这里,不禁会想起自己写过的代码,拆东墙补西墙可不值得提倡,要从根源上解决问题。而这个根源自然就是——CPU。既然全虚拟化性能低的主要原因是花费了太多的精力去捕获CPU异常并模拟CPU行为,那么如果C

from openpyxl import Workbook

wb = Workbook()

# 创建一个sheet
ws1 = wb.create_sheet("sheet1")
# 设定一个sheet的名字
ws1.title = "sheet1 Title"
# 设定sheet的插入位置 默认插在后面
ws2 = wb.create_sheet("Mysheet", 0)
ws2.title = "Mysheet"
# 设定sheet的标签的背景颜色
ws1.sheet_properties.tabColor = "1072BA"

# 获取某个sheet对象
print(wb["sheet1 Title"])
print(wb["Mysheet"])

# 获取全部sheet的名字,遍历sheet名字
print(wb.sheetnames)
for i in wb.sheetnames:
    print(i)

print("*"*50)

for sheet in wb:
    print(sheet.title)

# 将sheet1中的A1单元格赋值为zeke
wb["sheet1 Title" ]["A1"] = "zeke"
# 复制一个sheet
source = wb["sheet1 Title"]
target = wb.copy_worksheet(source)

wb.save("test2.xlsx")
wb.close()

3、操作单元格

openpyxl import Workbookimport datetimeimport time# 创建文件对象wb = Workbook()# 获取第一个sheetws = wb.active#

# -*- coding: utf-8 -*-
from openpyxl import Workbook

wb = Workbook()
# 创建一个sheet
ws1 = wb.create_sheet("Sheet1")

# 将A1单元格赋值为123.11
ws1["A1"] = 123.11
# 将B2单元格赋值为你好
ws1["B2"] = "你好"
# 将第4行第2列的单元赋值为10
temp = ws1.cell(row=4, column=2, value=10)

print(ws1["A1"].value)
print(ws1["B2"].value)
print(temp.value)

wb.save("test3.xlsx")
wb.close()

4、操作已存在的文件

的特权级别存放在CS代码段寄存器内,GuestOS可以使用非特权push指令将CS寄存器压栈,然后pop出来检查该值。又如,GuestOS在低特权级别时读取特权寄存器GDT、LDT、IDT和TR,并不

# -*- coding: utf-8 -*-
from openpyxl import Workbook
from openpyxl import load_workbook

# 打开test5.xlsx文件
wb = load_workbook("test5.xlsx")
# 猜测格式类型
wb.guess_types = True
ws = wb.active
ws["A1"] = "12%"
print(ws["A1"].value)

# 注意如果原文件有一些图片或者图标,则保存的时候可能会导致图片丢失
wb.save("test5.xlsx")
wb.close()

5、操作批量的单元格

个表(表有1个分页,页有2000行1200列的整数)。 用例5.写.xls文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。 用例6.写.xlsx文件的整个表(表有5个分页,

# -*- coding: utf-8 -*-
from openpyxl import Workbook

wb = Workbook()
# 创建一个sheet
ws1 = wb.create_sheet("Sheet")

ws1["A1"] = 1
ws1["A2"] = 2
ws1["A3"] = 3

ws1["B1"] = 4
ws1["B2"] = 5
ws1["B3"] = 6

ws1["C1"] = 7
ws1["C2"] = 8
ws1["C3"] = 9

# 操作单列
print(ws1["A"])
for cell in ws1["A"]:
    print(cell.value)

# 从A列到C列,获取每一个值
print(ws1["A:C"])
for column in ws1["A:C"]:
    for cell in column:
        print(cell.value)

# 从第1行到第3行,获取每一个值
row_range = ws1[1:3]
print(row_range)
for row in row_range:
    for cell in row:
        print(cell.value)

print("*"*50)

# 从第1行到第3行,从第1列到第3列
for row in ws1.iter_rows(min_row=1, min_col=1, max_col=3, max_row=3):
    for cell in row:
        print(cell.value)

# 获取所有行
print(ws1.rows)
for row in ws1.rows:
    print(row)

print("*"*50)

# 获取所有列
print(ws1.columns)
for col in ws1.columns:
    print(col)

wb.save("test4.xlsx")
wb.close()

6、获取所有的行(列)对象:

鼠键等外围硬件设备的数据,因为操作系统就是作为计算机硬件资源管理器而存在的,操作系统就是为了让多个普通应用程序可以更简单、安全的运行在同一台计算机上而存在的“特殊的应用程序”。 Ring3用户态(Us

# coding=utf-8
from openpyxl import Workbook
from openpyxl import load_workbook

# 打开test5.xlsx文件
wb = load_workbook("test5.xlsx")
ws = wb.active
rows = []
for row in ws.iter_rows():
    rows.append(row)

# 所有行
print(rows)
# 获取第一行
print(rows[0])
# 获取第一行第一列的单元格对象
print(rows[0][0])
# 获取第一行第一列的单元格对象的值
print(rows[0][0].value)
# 获取最后行 print rows[-1]
print(rows[len(rows) - 1])
# 获取第后一行和最后一列的单元格对象
print(rows[len(rows) - 1][len(rows[0]) - 1])
# 获取第后一行和最后一列的单元格对象的值
print(rows[len(rows) - 1][len(rows[0]) - 1].value)

cols = []
for col in ws.iter_cols():
    cols.append(col)
# 所有列
print(cols)
# 获取第一列
print(cols[0])
# 获取第一列的第一行的单元格对象
print(cols[0][0])
# 获取第一列的第一行的值
print(cols[0][0].value)
print("*" * 30)
# 获取最后一列
print(cols[len(cols) - 1] )
# 获取最后一列的最后一行的单元格对象
print(cols[len(cols) - 1][len(cols[0]) - 1])
# 获取最后一列的最后一行的单元格对象的值
print(cols[len(cols) - 1][len(cols[0]) - 1].value)

wb.close()

 

常来触发VMexit。 支持高效的I/O虚拟化:I/O虚拟化需要考虑性能、可用性、可扩展性、可靠性和成本等多种因素。最简单的方式是VMM为虚拟机模拟一个常见的I/O设备,该设备的功能由VMM用软件

用场景。声明:本文首发于作者的CSDN博客,已获作者授权,原文:https://blog.csdn.net/Jmilk/article/details/99675664。【END】5G之后,中国的人工

本代码importxlrd#读取数据import xlwt #写入数据import xlutils #操作excel#----xlrd库#打开excel文件workbook = xlrd.open_w

)# 注意如果原文件有一些图片或者图标,则保存的时候可能会导致图片丢失wb.save("test5.xlsx")wb.close()5、操作批量的单元格# -*- coding: utf-8 -*-f


 

推荐阅读(点击即可跳转阅读)

是指:一种对计算机或操作系统的虚拟化,能够对用户隐藏真实的计算机硬件,表现出另一个抽象的计算平台。System/360TheMythicalMan-Month:EssaysonSoftwareEngi

 

常来触发VMexit。 支持高效的I/O虚拟化:I/O虚拟化需要考虑性能、可用性、可扩展性、可靠性和成本等多种因素。最简单的方式是VMM为虚拟机模拟一个常见的I/O设备,该设备的功能由VMM用软件

用场景。声明:本文首发于作者的CSDN博客,已获作者授权,原文:https://blog.csdn.net/Jmilk/article/details/99675664。【END】5G之后,中国的人工

本代码importxlrd#读取数据import xlwt #写入数据import xlutils #操作excel#----xlrd库#打开excel文件workbook = xlrd.open_w

)# 注意如果原文件有一些图片或者图标,则保存的时候可能会导致图片丢失wb.save("test5.xlsx")wb.close()5、操作批量的单元格# -*- coding: utf-8 -*-f

1. SpringBoot内容聚合

2. 面试题内容聚合

3. 设计模式内容聚合

4. Mybatis内容聚合

5. 多线程内容聚合

Javaç¥é³å®æ¹å¬ä¼å·

文章版权声明:除非注明,否则均为本站原创文章,转载或复制请以超链接形式并注明出处。
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

发表评论

快捷回复:

评论列表 (有 1条评论, 1400人围观) 参与讨论
网友昵称:iamkazun
iamkazun 游客 2020-08-14 1楼 回复
我也是用xlwings,支持xlsx
其他的都保存都会使图片丢失,我只是想修改数据,图片其他的什么都保留。