zoukankan      html  css  js  c++  java
  • python模块:xlsxwriter和xlrd相结合读取、写入excel文件

    python模块简单说明:

    xlsxwriter:负责写入数据

    xlrd:负责读取数据

     

    xlsxwriter 官方文档:http://xlsxwriter.readthedocs.org

     

    本实例是刚写出来的,目前比较粗糙。

    写这实例主要是结合平时工作内容,把手动操作改成自动化。

    平时线上更新游戏版本号后,需要把版本号记录到一个excel文件中,每次更新都要修改,比较蛋疼,虽然版本号在数据库中也有存在,但还是要往excel记录一份。

    这些代码目前只是测试代码,从原excel中读取所有内容,然后修改,再重成新的excel(其实我代码中并没有修改,只是把内容读出来,再写回去,唯一的就是做了些表格属性设定吧,其实我放到运维工具上后,就会结合平台,及数据库,去修改要修改的数据)。

    1. #coding=utf-8
    2. #/usr/bin/env python
    3. import xlsxwriter,xlrd
    4. import sys,os.path
    5. fname = 'zm6.xlsx'
    6. if not os.path.isfile(fname):
    7.     print u'文件路径不存在'
    8.     sys.exit()
    9. data = xlrd.open_workbook(fname)            # 打开fname文件
    10. data.sheet_names()                          # 获取xls文件中所有sheet的名称
    11. table = data.sheet_by_index(0)              # 通过索引获取xls文件第0个sheet
    12. nrows = table.nrows                         # 获取table工作表总行数
    13. ncols = table.ncols                         # 获取table工作表总列数
    14. workbook = xlsxwriter.Workbook('zm6.xlsx')  #创建一个excel文件
    15. worksheet = workbook.add_worksheet()        #创建一个工作表对象
    16. worksheet.set_column(0,ncols,22)            #设定列的宽度为22像素
    17. #border:边框,align:对齐方式,bg_color:背景颜色,font_size:字体大小,bold:字体加粗
    18. top = workbook.add_format({'border':1,'align':'center','bg_color':'cccccc','font_size':13,'bold':True})
    19. green = workbook.add_format({'border':1,'align':'center','bg_color':'green','font_size':12})
    20. yellow = workbook.add_format({'border':1,'bg_color':'yellow','font_size':12})
    21. red = workbook.add_format({'border':1,'align':'center','bg_color':'red','font_size':12})
    22. blank = workbook.add_format({'border':1})
    23. for i in xrange(nrows):
    24.     worksheet.set_row(i,22)                 #设定第i行单元格属性,高度为22像素,行索引从0开始
    25.     for j in  xrange(ncols):
    26.         cell_value = table.cell_value(i,j,) #获取第i行中第j列的值
    27.         if i == 0:
    28.             format = top
    29.         elif i == 3 or i == 6:
    30.             format = blank
    31.         else:
    32.             if j == 0 or j == 2:
    33.                 format = yellow
    34.             elif j == 1:
    35.                 format = red
    36.             elif j == 3:
    37.                 format = green
    38.                 green.set_num_format('yyyy-mm-dd')  #设置时间格式
    39.         worksheet.write(i,j,cell_value,format)      #把获取到的值写入文件对应的行列
    40.         format.set_align('vcenter')                 #设置单元格垂直对齐
    41. workbook.close()

    看完代码,再来看我修改之前,即原始的excel文件内容:

    python xlsxwriter修改之前

    python xlsxwriter修改之前

     

    读取内容后,新生成的excel文件内容:

    python xlsxwriter修改之后

    python xlsxwriter修改之后

     

    这些代码格式属性,是因为我特意根据原来的文件格式制定的,所以在代码中,能看到好几个if语句。

    正因为这样,看到的前后图对比,很相像。

  • 相关阅读:
    Template、ItemsPanel、ItemContainerStyle、ItemTemplate(包括ListBox的Item子项是横向排列)
    特殊字符处理(WPF)
    DataGrid的组成论述(WPF)
    DataGrid合并单元格(wpf)
    WPF各种控件详解——(WPF从我炫系列)
    C# WPF DataGrid 隔行变色及内容居中对齐
    WPF中的事件及冒泡事件和隧道事件(预览事件)的区别
    迭代式返回 IEnumerable<T>
    react className 样式控制
    React setState更新数组中的某个元素Element item
  • 原文地址:https://www.cnblogs.com/cmderq/p/9130898.html
Copyright © 2011-2022 走看看