美文网首页
python第三方库——xlwt3

python第三方库——xlwt3

作者: Davidham3 | 来源:发表于2016-01-30 20:54 被阅读3016次

    我们之前已经学习了xlrd这个库,这个库是读取excel表格内信息的,它并不能写入信息,这时候我们需要使用xlwt3这个库进行excel表格的写入。

    安装

    打开命令提示符,使用pip进行安装

    pip install xlwt3
    

    安装完后进入下一步:
    这个xlwt3的库,好像已经很久没有人维护了,所以有一个问题就是,你用pip安装的这个库,是有点问题的,需要咱们手动修改。

    打开python的安装目录,就是你的python的安装位置,我的在D盘,找到D:\Python34\Lib\site-packages\xlwt3\formula.py这个文件,右键点击,使用IDLE打开

    Edit with IDLE

    将其中的

    __slots__ = ["__init__",  "__s", "__parser", "__sheet_refs", "__xcall_refs"]
    

    修改为

    __slots__ = [ "__s", "__parser", "__sheet_refs", "__xcall_refs"]
    

    就是把第一个"__init__"删掉。

    `__slots__`
    保存,关闭。

    打开python shell
    使用import xlwt3,看看报不报错,没有报错说明修改成功。安装完成。

    使用

    1. 创建工作簿

    我们使用这个包主要是为了生成excel表格,将我们处理好的数据存到excel表格中。
    为此,我们需要的是xlwt3里面的Workbook这个类。
    先创建实例:

    import xlwt3
    file = xlwt3.Workbook()
    

    这样就创建完了一个实例。

    2.创建工作表

    我们知道,一个.xlsx文件或.xls文件称为一个工作簿,里面有好几张工作表,我们现在创建的这个Workbook()实例,它也是一个工作簿,我们要写入内容的话是要写进工作表里面的,这就需要我们创建一个工作表,工作表名是'test1'。

    table = file.add_sheet('test1',cell_overwrite_ok = True)
    

    使用的是Workbook下属的add_sheet方法,add_sheet,新建工作表。
    add_sheet(self, sheetname, cell_overwrite_ok=False)

    需要注意的是,这个方法有两个参数
    · 第一个是sheetname,这个是工作表的名字,必须要设置的
    · 另一个参数是cell_overwrite_ok,这个参数是覆写的意思,默认是False,如果你现在要写的单元格里面,已经有内容了,就不能写了,如果你要是写的话会报错的。当然,我们在使用的时候,最好是设置成True。也就是上面的那个写法。这样对同一个单元格写入两次的话就不会报错了,当然,只会保留最后一次写入的值。

    3.写入信息

    接下来可以写入信息了。
    事实上,我们刚才使用add_sheet这个方法后,创建出了一个Worksheet类的实例。这个类有两个方法是我们需要使用的,一个是write,另一个是write_merge。前者用来写入一个单元格的内容,后者用来写入一个合并单元格的内容。

    table.write_merge(0,0,0,2,'Student information')
    table.write(1,0,'number')
    table.write(1,1,'name')
    table.write(1,2,'score')
    
    write(self, r, c, label=b'', style=<xlwt3.style.XFStyle object at 0x00000000037D6358>)
    

    我们先看write方法,里面有四个参数,分别是r,c,label,style,
    · r是行
    · c是列
    · label是内容
    · style是格式
    上面写的table.write(1,0,'number')是在第二行的第一列写入'number'这个字符串。
    同理,另外两句分别是在第二行的第二列和第二行的第三列写入'name'和'score'这两个字符串。

    write_merge(self, r1, r2, c1, c2, label=b'', style=<xlwt3.style.XFStyle object at 0x00000000037D6358>)
    

    write_merge是写合并单元格的方法
    · r1是最上面的单元格所在的行数
    · r2是最下面的单元格所在的行数
    · c1是最左面的单元格所在的列数
    · c2是最右面的单元格所在的列数
    · label是要写入的内容
    · style是格式
    上面那个table.write_merge(0,0,0,2,'Student information'),是把第0行的第一列,第二列,第三列的单元格合并了,在里面写入'Student information'这个字符串。

    如果我们写入信息的时候,不加style这个参数,那么里面的信息就是最普通的,没有什么格式,颜色啊,粗体啊,边框啊,什么的。
    在xlwt3中,使用easyxf这个函数来设置单元格属性。

    titlestyle = xlwt3.easyxf('font: bold on, italic on, name 宋体, height 400, color red; align: vert centre, horiz centre; borders: top THIN,left THIN,right THIN,bottom THIN')
    

    比如这句当中,我们可以看到传入了一个字符串作为参数:
    'font: bold on, italic on, name 宋体, height 400, color red; align: vert centre, horiz centre; borders: top THIN,left THIN,right THIN,bottom THIN'
    分解来看,这个字符串有三部分:

    1. font:字体
      · bold on: 设置成粗体
      · italic on: 设置成斜体
      · name 宋体: 字体设置成宋体
      · height 400: 字号20
      · color red: 字体红色

    2. align:对齐
      · vert centre: 垂直居中
      · horiz centre: 水平居中

    3. borders:边框
      · top THIN: 上边框细线
      · left THIN: 左边框细线
      · right THIN: 右边框细线
      · bottom THIN: 底边框细线

    我们刚才不是用

    titlestyle = xlwt3.easyxf('font: bold on, italic on, name 宋体, height 400, color red; align: vert centre, horiz centre; borders: top THIN,left THIN,right THIN,bottom THIN')
    

    创建了一个单元格属性吗,红色20号宋体,粗体,斜体,四周有边框,居中。
    写入的使用加在作为style参数传入。

    table.write_merge(0,0,0,2,'Student information',titlestyle)
    table.write(1,0,'number')
    table.write(1,1,'name')
    table.write(1,2,'score')
    

    这样,我们就成功的设置单元格格式了。
    接下来我们设置列宽。

    table.col(0).width = 5293
    

    使用这个方法就能设置列宽了,里面的0代表第一列,列宽是20。我也不知道这个列宽是怎么换算的,只要设置5293的话就是20,大家可以根据换算设置自己想要的列宽。

    4. 保存

    最后一步,保存我们建立的工作簿。

    file.save('D:\\test_excel.xls')
    

    这里面就一个参数,你要保存的excel表格的文件名。需要加路径和后缀名的。需要注意的是,这个xlwt3只能保存成.xls的excel文件。

    test_excel.xls

    打开我们保存的excel表格。

    工作表名和列宽

    可以看到,工作表名是我们设置的test1,第一行的前三个单元格合并了,内容是'Student information',红色20号宋体,粗体,斜体,四周有边框,居中。第二行分别是number,name,score。

    file = xlwt3.Workbook()
    table = file.add_sheet('test1',cell_overwrite_ok = True)
    
    titlestyle = xlwt3.easyxf('font: bold on, italic on, name 宋体, height 400, color red; align: vert centre, horiz centre; borders: top THIN,left THIN,right THIN,bottom THIN')
    
    table.write_merge(0,0,0,2,'Student information',titlestyle)
    table.write(1,0,'number')
    table.write(1,1,'name')
    table.write(1,2,'score')
    
    table.col(0).width = 5293
    
    file.save('D:\\test_excel.xls')
    

    以上就是创建这个excel表格的流程。
    刚才上pypi发现,这个包好像就要被移除了,这样的话以后用pip就无法安装了。
    xlwt3 0.1.2 : Python Package Index

    xlwt3 0.1.2 : Python Package Index
    可以看到它在11年就停止更新了。推荐我们去使用xlwt-future
    我们可以使用pip install xlwt-future来安装,不知道好不好使。 xlwt-future 0.8.0 : Python Package Index
    不过,这两个包都只支持.xls格式,不支持保存为.xlsx格式,所以这两个包以后势必会被淘汰掉的。大家可以找找,看看有没有其他更好的包,之前在知乎上看别人推荐过PyXLL,这个也是处理excel的,可以免费试用30天,之后就得付费了。
    PyXLL: Excel functions written in Python

    以上就是关于xlwt3这个包的简单教程。

    相关文章

      网友评论

          本文标题:python第三方库——xlwt3

          本文链接:https://www.haomeiwen.com/subject/oxtskttx.html