Python操作Excel工作簿的示例代码(\ * .xlsx)

  


  

  

Excel作为流行的个人计算机数据处理软件,混迹于各个领域,在程序员这里也是常常被处理的对象,可以处理Excel格式文件的Python库还是挺多的,比如xlrd, xlwt, xlutils, openpyxl, xlwings等等,但是每个库处理Excel的方式不同,有些库在处理时还会有一些局限性。

  

接下来对比一下几个库的不同,然后主要记录一下xlwings这个库的使用,目前这是个人感觉使用起来比较方便的一个库了,其他的几个库在使用过程中总是有这样或那样的问题,不过在特定情况下使用也是挺不错的。

  


  

  

Excel被称为电子表格,其实际可以保存的格式分为很多种,但是“Excel工作簿(* .xlsx)”和“Excel 97 - 2003工作簿(* xls)”是其中比较常用的两种,可以认为xls格式的表格是03版Excel之前常用的格式,而.xlsx是03版之后,一般指07版Excel之后常用的格式。

  

一般的Excel程序对于上述的两种格式都可以打开编辑,也可以相互转化存储,不过还是建议在没有特殊要求的情况下使用新版本的格式,一方面新的稳定版本可能会修复之前的一些错误,同时也会带来进行一些优化。

  

我也是在写这篇总结之前才发现,一个空的.xlsx格式的文件大小有7 kb,而一个空的xls格式的文件大小有24 kb,当我分别写入一个相同的汉字后,两个文件大小变成了10 kb和30 kb,差距还是不小的,还有一个问题就是在将.xlsx格式的文件另存为xls格式时还会有兼容性提示,提醒用户有些设置可能会丢失,所以能选新版本还是尽量用新版本吧。

  


  

  

因为很多应用程序是不断迭代的,相对应的Python库也是不断迭代的,这里尽可能的给出版本号,不同的版本可能会有不同的问题:

  
      <李>操作系统:Windows 10随意版   <李> Python: 3.75   <李> xlrd: 1.2.0李   李1.3.0 <李> xlwt:版本   <李> xlutils: 2.0.0李   <李> openpyxl: 3.0.3李   <李> xlwings: 0.18.0李   
  

以上各个程序库使用之前自行安装就行,安装方法就不赘述了,不过可以提供一个可以快速安装镜像源,使用<代码> pip安装- https://pypi.doubanio.com/simple库名>   


  

  

关于使用Python具体操作Excel的方法可以分为三组,配合使用xlrd, xlwt, xlutils操作作为第一组,使用库openpyxl作为第二组,而xlwings作为第三组,这篇总结重点总结xlwings的使用,其他两组简单了解。

  

<强>
  

  

这一组操作Excel的库名字很形象,一个读,一个写,一个小工具,凑到一起就可以对Excel肆意妄为了、下面做个小练习,打开一个Excel文件然后修改第一个单元格的值,再另存为一个新文件,代码如下:

        进口xlrd   进口xlwt   进口xlutils.copy      def save_as_new_file (file_name new_file_name):   #打开Excel文件   rb=xlrd.open_workbook (file_name)   #创建一个可写入的副本   世行=xlutils.copy.copy (rb)   #获得第一个单页签   ws=wb.get_sheet (0)   第号一个单元格写入测试值   ws。写(0,0,测试值)   #另存为一个新文件   wb.save (new_file_name)      

上述代码无论是操作.xlsx文件还是操作xls文件都不会报的错,但是另存为的.xlsx格式的文件会打不开,同时你会发现正常存储的xls文件打开后格式全都没了,怎么办,改个参数试试,将打开文件的代码修改如下:

        rb=xlrd。open_workbook (file_name formatting_info=True)      

其中参数formatting_info=True就表示打开Excel时保留原有的格式,但是这是相对于xls格式的文件,对于.xlsx格式的文件直接跑出异常提高NotImplementedError (formatting_info=True尚未实施),就因为处理不了.xlsx格式的文件,我暂时没有使用这几个库操作Excel。

  

还有一点,这几个库操作单元格时,行和列的索引是从0开始的。

  


  

  

首先说这个库主要用来操作.xlsx格式的文件,对于xls格式的文件无法打开,会报openpyxl老xls文件格式不支持这样的错误,但是可以存储成这样的格式,再次打开时会有格式不匹配的警告,但是基础的数据还在,所以还是优先用来操作xls格式的文件吧。

  

写一个新文件的常见用法:

        从openpyxl进口工作簿   从openpyxl进口load_workbook   从openpyxl。风格导入字体、填充、对齐、PatternFill      def write_new_excel (file_name):   #创建一个excel文档   世行=工作簿()   #获得当前激活的表对象   ws=wb.active   #给A2单元格赋值   ws (A2的)='这是A2细胞”   #一行添加多列数据   ws。追加([1,2,'你好'])   #添加新的表   ws=wb.create_sheet (title=癗ewInfo”,指数=0)   #设置单元格的值   ws (“A1”)='这是新表”      #保存excel   wb.save (file_name)

Python操作Excel工作簿的示例代码(\ * .xlsx)