Python简单读写Xls格式文档的方法示例

 更新时间:2018年08月17日 14:23:59   作者:sulin  
这篇文章主要介绍了Python简单读写Xls格式文档的方法,结合实例形式分析了Python中xlrd和xlwt模块的安装及针对xls格式文档的相关读写操作实现技巧,需要的朋友可以参考下

本文实例讲述了Python简单读写Xls格式文档的方法。分享给大家供大家参考,具体如下:

1. 模块安装

使用pip install命令安装,
即:

pip install xlrd

pip install xlwt

如下图:

2. python 代码

import xlrd
import xlwt
import datetime 
def set_style(name,height,format,bold=False):
  style = xlwt.XFStyle()
  if format.strip()!='':
    style.num_format_str =format
  font = xlwt.Font()
  font.name=name
  font.bold=bold
  font.color_index=4
  font.height=height
  alignment = xlwt.Alignment()
  #HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
  alignment.horz = xlwt.Alignment.HORZ_CENTER
  #VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
  alignment.vert = xlwt.Alignment.VERT_CENTER
  style.alignment = alignment
  style.font=font
  return style
def set_colstyle(sheet,cindex):
  col=sheet.col(cindex)
  col.width =256*20
  #col.height =100
def writeXls(path):
  wb = xlwt.Workbook()
  sheet = wb.add_sheet('测试',cell_overwrite_ok=True)
  set_colstyle(sheet,3)
  #标题
  heads=['姓名','学科','分数','日期']
  for h in range(0,len(heads)):
    sheet.write(0,h,heads[h],set_style('Arial',300,'',True))
  #数据
  sheet.write_merge(1,2,0,0,'张三',set_style('Arial',300,'',False))
  sheet.write(1,1,'语文',set_style('Arial',240,'',False))
  sheet.write(1,2,85,set_style('Arial',240,'',False))
  sheet.write(1,3,datetime.date.today(),set_style('Arial',240,'yyyy/mm/dd',False))
  sheet.write(2,1,'数学',set_style('Arial',240,'',False))
  sheet.write(2,2,85,set_style('Arial',240,'',False))
  sheet.write(2,3,datetime.date.today(),set_style('Arial',240,'yyyy/mm/dd',False))
  sheet.write_merge(3,4,0,0,'李四',set_style('Arial',300,'',False))
  sheet.write(3,1,'语文',set_style('Arial',240,'',False))
  sheet.write(3,2,95,set_style('Arial',240,'',False))
  sheet.write(3,3,datetime.date.today(),set_style('Arial',240,'yyyy/mm/dd',False))
  sheet.write(4,1,'数学',set_style('Arial',240,'',False))
  sheet.write(4,2,95,set_style('Arial',240,'',False))
  sheet.write(4,3,datetime.date.today(),set_style('Arial',240,'yyyy/mm/dd',False))
  wb.save(path)
def ismerge(sheet,merge,r,c):
  #merge=sheet.merged_cells
  for m in merge:
    if r>=m[0] and r<m[1] and c==m[2]:
      r=m[0]
      c==m[2]
      break
  return r,c
def readXls(path):
  wb=xlrd.open_workbook(path,formatting_info=True)
  #sheetname=wb.sheet_names()[0]
  sheet=wb.sheet_by_index(0)
  rows=sheet.nrows
  cols=sheet.ncols
  merge=sheet.merged_cells
  #merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range),
  #其中[row,row_range)包括row,不包括row_range
  print('--------------------------------------------------------------------')
  for r in range(0,rows):
    listStr = []
    for c in range(0,cols):
      merg=ismerge(sheet,merge,r,c)
      if (sheet.cell(merg[0],merg[1]).ctype==3):
        data_value=xlrd.xldate_as_tuple(sheet.cell_value(merg[0],merg[1]),wb.datemode)
        #print(datetime.date(*data_value[:3]).strftime('%Y/%m/%d'))
        listStr.append(datetime.date(*data_value[:3]).strftime('%Y/%m/%d'))
      else:
        #print(sheet.cell_value(merg[0],merg[1]))
        listStr.append(sheet.cell_value(merg[0],merg[1]))
      #print(sheet.cell(merg[0],merg[1]).value)
      #print(sheet.cell(r,c).ctype)
    print(' |\t'.join(str(s) for s in listStr if s not in [None]))
    print('--------------------------------------------------------------------')
if __name__ == '__main__':
  #writeXls('H:\测试.xls')
  readXls('H:\测试.xls')

3.效果展示

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python操作Excel表格技巧总结》、《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 30秒学会30个超实用Python代码片段【收藏版】

    30秒学会30个超实用Python代码片段【收藏版】

    许多人在数据科学、机器学习、web开发、脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言。本文将简要介绍30个简短的、且能在30秒内掌握的代码片段,感兴趣的朋友一起看看吧
    2019-10-10
  • Pytorch:dtype不一致问题(expected dtype Double but got dtype Float)

    Pytorch:dtype不一致问题(expected dtype Double but&

    这篇文章主要介绍了Pytorch:dtype不一致问题(expected dtype Double but got dtype Float),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Python脚本实现网卡流量监控

    Python脚本实现网卡流量监控

    这篇文章主要介绍了Python脚本实现网卡流量监控,本文直接给出实现代码,需要的朋友可以参考下
    2015-02-02
  • Windows系统下安装Python的SSH模块教程

    Windows系统下安装Python的SSH模块教程

    这篇文章主要介绍了Windows系统下安装Python的SSH模块教程,本文涵盖了pycrypto、ecdsa、paramiko、OpenSSH、SSH等模块的安装,需要的朋友可以参考下
    2015-02-02
  • Python爬虫过程解析之多线程获取小米应用商店数据

    Python爬虫过程解析之多线程获取小米应用商店数据

    这篇文章主要介绍了Python爬虫过程解析之多线程获取小米应用商店数据,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python的异常问题(Python Exception)

    Python的异常问题(Python Exception)

    这篇文章主要介绍了Python的异常问题(Python Exception),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python绘制3D曲面图的示例代码

    Python绘制3D曲面图的示例代码

    Python提供了多种库和工具,使得创建和定制3D曲面图变得简单,本文将介绍如何使用Matplotlib和mpl_toolkits.mplot3d库绘制3D曲面图,感兴趣的可以了解下
    2024-04-04
  • python 获取list特定元素下标的实例讲解

    python 获取list特定元素下标的实例讲解

    下面小编就为大家分享一篇python 获取list特定元素下标的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 使用PySpark实现数据清洗与JSON格式转换的实践详解

    使用PySpark实现数据清洗与JSON格式转换的实践详解

    在大数据处理中,PySpark 提供了强大的工具来处理海量数据,特别是在数据清洗和转换方面,本文将介绍如何使用 PySpark 进行数据清洗,并将数据格式转换为 JSON 格式的实践,感兴趣的可以了解下
    2023-12-12
  • python解决OpenCV在读取显示图片的时候闪退的问题

    python解决OpenCV在读取显示图片的时候闪退的问题

    这篇文章主要介绍了python解决OpenCV在读取显示图片的时候闪退的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论