zoukankan      html  css  js  c++  java
  • 27 python操作excel模块(xlrd、xlwt、xlutils)

      1 导入
      2 import xlrd
      3 打开excel
      4 data = xlrd.open_workbook('demo.xls') #注意这里的workbook首字母是小写
      5 查看文件中包含sheet的名称
      6 data.sheet_names()
      7 得到第一个工作表,或者通过索引顺序 或 工作表名称
      8 table = data.sheets()[0]
      9 table = data.sheet_by_index(0)
     10 table = data.sheet_by_name(u'Sheet1')
     11 获取行数和列数
     12 nrows = table.nrows
     13 ncols = table.ncols
     14 获取整行和整列的值(数组)
     15 table.row_values(i)
     16 table.col_values(i)
     17 循环行,得到索引的列表
     18 for rownum in range(table.nrows):
     19 print table.row_values(rownum)
     20 
     21 
     22 单元格
     23 cell_A1 = table.cell(0,0).value
     24 cell_C4 = table.cell(2,3).value
     25 
     26 分别使用行列索引
     27 cell_A1 = table.row(0)[0].value
     28 cell_A2 = table.col(1)[0].value
     29 ##以上两种方式访问单元格,如果没有.value 则返回的为cell类的对象
     30 
     31 简单的写入
     32 row = 0
     33 col = 0
     34 ctype = 1 # 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
     35 value = 'lixiaoluo'
     36 xf = 0 # 扩展的格式化 (默认是0)
     37 table.put_cell(row, col, ctype, value, xf)
     38 t
     39 
     40 ###########################################
     41 导入xlwt
     42 
     43 import xlwt
     44 
     45 新建一个excel文件
     46 
     47 file = xlwt.Workbook("1.xls") #注意这里的Workbook首字母是大写,无语吧
     48 
     49 新建一个sheet
     50 
     51 table = file.add_sheet('sheet name')
     52 
     53 写入数据table.write(行,列,value)
     54 table.write(0,0,'test')
     55 
     56 如果对一个单元格重复操作,会引发
     57 returns error:
     58 # Exception: Attempt to overwrite cell:
     59 # sheetname=u'sheet 1' rowx=0 colx=0
     60 所以在打开时加cell_overwrite_ok=True解决
     61 
     62 table = file.add_sheet('sheet name',cell_overwrite_ok=True)
     63 
     64 保存文件
     65 file.save('demo.xls')
     66 
     67 另外,使用style
     68 style = xlwt.XFStyle() #初始化样式
     69 font = xlwt.Font() #为样式创建字体
     70 font.name = 'Times New Roman'
     71 font.bold = True
     72 style.font = font #为样式设置字体
     73 table.write(0, 0, 'some bold Times text', style) # 使用样式
     74 
     75 xlwt 允许单元格或者整行地设置格式。还可以添加链接以及公式。可以阅读源代码,那里有例子:
     76 dates.py, 展示如何设置不同的数据格式
     77 hyperlinks.py, 展示如何创建超链接 (hint: you need to use a formula)
     78 merged.py, 展示如何合并格子
     79 row_styles.py, 展示如何应用Style到整行格子中.
     80 
     81 ##########################################
     82 
     83 
     84 3.linux下保存用中文名保存正常,windos下坑爹乱码问题
     85 file.save('世界你好')#linux正常,win乱码
     86 
     87 file.save(u'世界你好'.encode('GBK'))# win正常
     88 
     89 ###############################################3333
     90 # coding=GB2312     //保证在windows下可以正常打开中文命名的文件
     91 import xlutils
     92 from xlutils.copy import copy  //必须使用此种方法,不能只有import xlutils 否则copy函数会无法使用
     93 
     94 ##使用此模板其实就是,
     95 xlutils.copy() 方法作用:
     96         //将xlrd.open_workbook()生成的xlrd.book.BOOK类对象    转化成   xlwt.Workbook.Wookbook类的对象
     97         //方便对一个已经存在EXCEL进行写操作  ,其实就是复制了一份BOOK
     98 
     99 ws = wb.get_sheet(0)        // 使用此方法获取的sheet对象具有write()的方法
    100 ws.write(0, 0, 'changed!')    //写操作
    101 wb.save('1.xls')            //保存操作
    102 ####注意:
    103     在对同一个旧文件进行读写操作时,如果读操作依赖于写操作后的数据,
    104     那么必须读操作时,必须在写操作保存之后save("xxx") ,重新打开open_workbook("xxx")
    105 
    106 
    107 ##例子:
    108 import xlrd
    109 import xlwt
    110 import xlutils
    111 from xlutils.copy import copy 
    112 
    113 workbook=xlrd.open_workbook("OCS平账表201611.xls")    //打开原数据的EXCEL
    114 print (type(workbook))
    115 table=workbook.sheets()[0]
    116 value=table.cell(39,0).value
    117 
    118 
    119 workbook2=xlrd.open_workbook("OCS平衡表201611.xls") //写入到另一个EXCEL中
    120 print (type(workbook2))
    121 workbooks=copy(workbook2)
    122 print (type(workbooks))
    123 table2 = workbooks.get_sheet(0)
    124 table2.write(0, 0, value)
    125 workbooks.save('2.xls')
  • 相关阅读:
    node 学习资源网址---存根
    组件通讯
    vue------反响代理
    基于angular4.0分页组件
    angular4.0 父子组建之间的相互通信
    h5 新增特性用法---持续更新
    h5可预览 图片ajax上传 (补更),后台数据获取方法---php
    原生js表单序列化----- FormData
    有意思的面试题汇总----持续更新
    原生ajax封装,数据初始化,
  • 原文地址:https://www.cnblogs.com/2mei/p/9254292.html
Copyright © 2011-2022 走看看