Python之读写Excel(xlrd模块和xlwt模块)

1、Excel文件-Sheet1

姓名年龄出生日期关系
张三201998/1/1朋友
李四211997/1/1
王五221996/1/1同学
赵六231995/1/1
孙七241994/1/1
周八25暂无

2、读取Sheet1普通单元格和日期单元格

# coding:utf-8

import xlrd
from datetime import date

def read_excel():
    workbook = xlrd.open_workbook("./demo.xlsx")
    print(workbook.sheet_names())

    sheet1 = workbook.sheet_by_index(0)
    print(sheet1.name, sheet1.nrows, sheet1.ncols)

    rows = sheet1.row_values(0)
    cols = sheet1.col_values(0)
    print(rows, cols)

    #普通单元格
    print(sheet1.cell(1, 0).value)

    #日期单元格
    print(sheet1.row(1)[2].value)
    print(sheet1.cell(1, 2).ctype)  # ctype-0:empty, 1:string, 2:number, 3:date, 4:boolean, 5:error
    #方法一
    datetime = xlrd.xldate_as_datetime(sheet1.cell(1, 2).value, 0)
    print(datetime)
    #方法二
    date_value = xlrd.xldate_as_tuple(sheet1.cell(1, 2).value, 0)
    print(date_value)
    date_temp = date(*date_value[:3]).strftime("%Y/%m/%d")
    print(date_temp)

if __name__ == "__main__":
    read_excel()

3、读取Sheet1合并单元格

# coding:utf-8

import xlrd

def read_excel():
    workbook = xlrd.open_workbook("./demo.xlsx")
    sheet1 = workbook.sheet_by_index(0)
    print(sheet1.merged_cells)

    merge = []
    for(row, row_range, col, col_range) in sheet1.merged_cells:
        merge.append([row, col])
    print(merge)

    for index in merge:
        print(sheet1.cell(index[0], index[1]).value)

if __name__ == "__main__":
    read_excel()

4、Excel文件-Sheet2

姓名年龄出生日期关系
张三父亲  
母亲 
儿子 
女儿 
李四父亲  
母亲 
儿子 
女儿 
王五父亲  
母亲 
儿子 
女儿 
赵六父亲  
母亲 
儿子 
女儿 
孙七父亲  
母亲 
儿子 
女儿 
周八父亲  
母亲 
儿子 
女儿 
合计  

5、创建Sheet2并写入相应数据及格式

# coding:utf-8

import xlwt

def set_style(name, height, bold=False):
    style = xlwt.XFStyle()  #初始化样式

    font = xlwt.Font()
    font.name = name
    font.bold = bold
    font.colour_index = 0xFFFF
    font.height = height

    style.font = font
    return style

def write_excel():
    workbook = xlwt.Workbook()
    sheet1 = workbook.add_sheet("sheet2", cell_overwrite_ok=True)
    row0 = [u"姓名", u"年龄", u"出生日期", u"关系"]
    col0 = [u"张三", u"李四", u"王五", u"赵六", u"孙七", u"周八"]
    status = [u"父亲", u"母亲", u"儿子", u"女儿"]

    #生成第一行
    for i in range(0, len(row0)):
        sheet1.write(0, i, row0[i], set_style("Times New Roman", 200, True))

    #生成第一列和最后一列
    j = 1
    k = 0
    while j < 4*len(col0) and k < len(col0):
        sheet1.write_merge(j, j + 3 , 0, 0, col0[k], set_style("Times New Roman", 200, True))
        sheet1.write_merge(j, j + 3, 3, 3)
        j = j + 4
        k = k + 1

    sheet1.write_merge(25, 25 , 0, 1, u"合计", set_style("Times New Roman", 200, True))

    #生成第二列
    p = 0
    while p < 4*len(col0):
        for q in range(0, len(status)):
            sheet1.write(p+q+1, 1, status[q])
        p = p + 4
    workbook.save("demo.xls")

if __name__ == "__main__":
    write_excel()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值