zoukankan      html  css  js  c++  java
  • python Xls文档读写

    1.模块安装

        

        

    2.python 代码

      1 import  xlrd
      2 import  xlwt
      3 import  datetime 
      4 
      5 def set_style(name,height,format,bold=False):
      6     style = xlwt.XFStyle()
      7     if  format.strip()!='':
      8         style.num_format_str =format
      9     font  = xlwt.Font()
     10     font.name=name
     11     font.bold=bold
     12     font.color_index=4
     13     font.height=height
     14     alignment = xlwt.Alignment()
     15     #HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
     16     alignment.horz = xlwt.Alignment.HORZ_CENTER
     17     #VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
     18     alignment.vert = xlwt.Alignment.VERT_CENTER
     19     style.alignment = alignment
     20     style.font=font
     21     return style
     22     
     23 def set_colstyle(sheet,cindex):
     24     col=sheet.col(cindex)
     25     col.width =256*20
     26     #col.height =100
     27     
     28 def  writeXls(path):
     29     wb = xlwt.Workbook()
     30     sheet = wb.add_sheet('测试',cell_overwrite_ok=True)
     31     set_colstyle(sheet,3)
     32     #标题
     33     heads=['姓名','学科','分数','日期']
     34     for  h  in range(0,len(heads)):
     35         sheet.write(0,h,heads[h],set_style('Arial',300,'',True))
     36 
     37     
     38     #数据
     39     
     40     sheet.write_merge(1,2,0,0,'张三',set_style('Arial',300,'',False))
     41     sheet.write(1,1,'语文',set_style('Arial',240,'',False))
     42     sheet.write(1,2,85,set_style('Arial',240,'',False))
     43     sheet.write(1,3,datetime.date.today(),set_style('Arial',240,'yyyy/mm/dd',False))
     44     sheet.write(2,1,'数学',set_style('Arial',240,'',False))
     45     sheet.write(2,2,85,set_style('Arial',240,'',False))
     46     sheet.write(2,3,datetime.date.today(),set_style('Arial',240,'yyyy/mm/dd',False))
     47 
     48     sheet.write_merge(3,4,0,0,'李四',set_style('Arial',300,'',False))
     49     sheet.write(3,1,'语文',set_style('Arial',240,'',False))
     50     sheet.write(3,2,95,set_style('Arial',240,'',False))
     51     sheet.write(3,3,datetime.date.today(),set_style('Arial',240,'yyyy/mm/dd',False))
     52     sheet.write(4,1,'数学',set_style('Arial',240,'',False))
     53     sheet.write(4,2,95,set_style('Arial',240,'',False))
     54     sheet.write(4,3,datetime.date.today(),set_style('Arial',240,'yyyy/mm/dd',False))
     55     
     56 
     57     wb.save(path)
     58 
     59 def ismerge(sheet,merge,r,c):
     60     #merge=sheet.merged_cells
     61     for m in merge:
     62        if r>=m[0] and r<m[1] and c==m[2]:
     63            r=m[0]
     64            c==m[2]
     65            break
     66         
     67     return r,c
     68 
     69 def  readXls(path):
     70     wb=xlrd.open_workbook(path,formatting_info=True)
     71     #sheetname=wb.sheet_names()[0]
     72     sheet=wb.sheet_by_index(0)
     73     rows=sheet.nrows
     74     cols=sheet.ncols
     75     merge=sheet.merged_cells
     76     #merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range),
     77     #其中[row,row_range)包括row,不包括row_range
     78     
     79     print('--------------------------------------------------------------------')
     80     for r in range(0,rows):
     81         listStr = []
     82         
     83         for c in range(0,cols):
     84             merg=ismerge(sheet,merge,r,c)
     85             if (sheet.cell(merg[0],merg[1]).ctype==3):
     86                 data_value=xlrd.xldate_as_tuple(sheet.cell_value(merg[0],merg[1]),wb.datemode)
     87                 #print(datetime.date(*data_value[:3]).strftime('%Y/%m/%d'))
     88                 listStr.append(datetime.date(*data_value[:3]).strftime('%Y/%m/%d'))
     89             else:
     90                 #print(sheet.cell_value(merg[0],merg[1]))
     91                 listStr.append(sheet.cell_value(merg[0],merg[1]))
     92             #print(sheet.cell(merg[0],merg[1]).value)
     93             #print(sheet.cell(r,c).ctype)
     94 
     95         print(' |	'.join(str(s) for s in listStr if s not in [None]))
     96         print('--------------------------------------------------------------------')
     97     
     98 if __name__ == '__main__':
     99 
    100     #writeXls('H:测试.xls')
    101     readXls('H:测试.xls')
    102     
    103     
    104 
    105     
    106     
    107     

    3.效果展示

  • 相关阅读:
    22 element-ui之Form表单el-form标签
    21 Vue的section组件
    21 Vue2.0 的transition组件
    Spring注解之组件注册
    Mybatis自动提交失败:Setting autocommit to false on JDBC Connection
    用STM32定时器测量信号频率——测频法和测周法[原创cnblogs.com/helesheng]
    mac ssh 总是自动断开
    cmake 简易教程
    mac 安装 mongodb
    新手程序员一般有如下特点
  • 原文地址:https://www.cnblogs.com/linsu/p/8960766.html
Copyright © 2011-2022 走看看