zoukankan      html  css  js  c++  java
  • python简单处理excel方法

    python自带xlrd和xlwt模块用来处理excel,但总觉得xlwt模块用着别扭,于是按自己的习惯重新封装了一个

     1 # coding=utf-8
     2 
     3 import xlrd   # 读模块
     4 import xlwt   # 写模块
     5 
     6 
     7 def read_excel():
     8     """
     9         读取excel文件方法说明(此函数只是对xlrd用法的说明,看看就好。xlrd已经很好用了)
    10     :return:
    11     """
    12     # 打开excel文件
    13     data = xlrd.open_workbook('123.xls')
    14 
    15     # 获取文件内的表名
    16     print(data.sheet_names())
    17 
    18     # 获取指定表的两种方法
    19     sh = data.sheet_by_index(0)  # 索引法
    20     sh = data.sheet_by_name(u'Sheet1')  # 表名法
    21 
    22     # 获取表的行数
    23     print(sh.nrows)
    24     # 获取表的列数
    25     print(sh.ncols)
    26 
    27     # 获取第29行的数据(0算第一行)
    28     print(sh.row_values(28))
    29     # 获取第2列的数据(0算第一列)
    30     print(sh.col_values(1))
    31     # 获取第1行、第2列的数据(相当于坐标)
    32     print(sh.cell(0, 1).value)
    33 
    34 
    35 def write_excel(sheet_name, row0, datas, file_name):
    36     """
    37         自己重新封装的写入excel表模块。以后要将数据写入excel直接调用此函数就行。此函数简单干净,使用方便。
    38     :param sheet_name: excel文件内的表名。例:Sheet1
    39     :param row0: 表内第一行的内容,为一个列表。例:[id, name, sex]
    40     :param datas: 实际要写入表内的数据,为一个列表,里面包含几个元素就写几行数据,其中每一个元素又为一个列表,里面对应这一行
    41     每列的值。例:[[1, '小龙女', 'girl'], [2, '杨过', 'boy'], [3, '周伯通', 'boy']]
    42     :param file_name: 最终生成的excel文件名。例:'test.xls'
    43     :return:
    44     """
    45     # 创建一个写对象实例
    46     f = xlwt.Workbook()
    47 
    48     # 创建一个叫sheet_name的表名
    49     sheet1 = f.add_sheet(sheet_name, cell_overwrite_ok=True)
    50 
    51     # 创建表sheet_name的第一行(即标题)
    52     for i in range(0, len(row0)):
    53         sheet1.write(0, i, row0[i])
    54 
    55     # 从第二行开始写数据,datas有多少元素就写多少行
    56     for row in range(1, len(datas) + 1):
    57         # 遍历每行的每一列,row0有多少元素就遍历多少列
    58         for col in range(len(row0)):
    59             # 有了上面row,col提供的行号和列号就可以精确匹配一个单元格了,下面就开始往单元格里写数据了
    60             # row:行号,col:列号,datas[row-1][col]:数据
    61             # 注:datas这个列表里一个元素为一行,由于是从第二行开始写的,所以想要取datas的第一个元素需row-1
    62             # 注:datas这个列表里一个元素(列表)里的元素对应这行每列的值。
    63             # 例:[1, '小龙女', 'girl'],1对应第1列的值,'小龙女'对应第2列的值,'girl'对应第三列的值
    64             sheet1.write(row, col, datas[row-1][col])
    65 
    66     f.save(file_name)
    67     print('已生成excel文件!')
    68 
    69 
    70 if __name__ == '__main__':
    71     read_excel()
    72     write_excel(
    73         sheet_name='students',
    74         row0=['id', 'name', 'sex'],
    75         datas=[[1, '小龙女', 'girl'], [2, '杨过', 'boy'], [3, '周伯通', 'boy']],
    76         file_name='test.xls'
    77     )
  • 相关阅读:
    POJ 1113--Wall(计算凸包)
    博弈论笔记--06--纳什均衡之约会游戏与古诺模型
    atan和atan2反正切计算
    POJ 1410--Intersection(判断线段和矩形相交)
    FirstBird--项目流程
    POJ 2653--Pick-up sticks(判断线段相交)
    POJ 1066--Treasure Hunt(判断线段相交)
    POJ 2398--Toy Storage(叉积判断,二分找点,点排序)
    Jetty数据同步使用
    Linux小知识(1): bash中执行数据库的相关操作
  • 原文地址:https://www.cnblogs.com/baihualin/p/10951061.html
Copyright © 2011-2022 走看看