python操作Excel。xlrd、xlwt

python操作Excel,一般只需要引入两个模块。

xlrd 读取
xlwt 写入
两个模块均可以通过pip下载。

读取

第一步,引入xlrd模块。填写正确的路径,读取文件。
第二步,可通过index或者sheet表名获取sheet表。获取到的对象为:<xlrd.sheet.Sheet object at 0x031B9690>
第三步,由sheet表对象得到行和列数。可通过for循环遍历出需要的内容。

import xlrd

read_xls = xlrd.open_workbook("数据源.xlsx") # 填写需要读取的文件正确的路径。

sheet1_obj = read_xls.sheet_by_index(0) # 通过下标索引获取sheet表。
sheet1_object = read_xls.sheet_by_name(sheet_name="数据") # 或者通过sheet表名获取。

# 取到行数和列数。
    coNum = sheet1_obj.nrows # 行
    noNum = sheet1_obj.ncols # 列

写入

第一步,引入xlwt,创建需要的Excel文件。
第二步,创建sheet表。
第三步,写入内容。第一个参数表示行号,第二个参数表示列号。只能一个一个写入。
第四部,保存。

import xlwt

new1_xls = xlwt.Workbook(encoding='utf-8')

# 新建sheet表
sheet1 = new1_xls.add_sheet('数据')

# 写入内容
sheet1.write(row,i,label =('xxx')
# 保存
new1_xls.save('数据源01.xls')

下面是一个完整例子。读取目标数据源文件,把数据拆分成三个表。

import xlrd, xlwt


# 读取文件,选定sheet表。
try:
    read_xls = xlrd.open_workbook("数据源.xlsx")
    sheet1_obj = read_xls.sheet_by_index(0)

    # 取到行数和列数。
    coNum = sheet1_obj.nrows # 7行
    noNum = sheet1_obj.ncols # 4列

    # 新建三个列表暂时存放数据
    alist = []
    blist = []
    clist = []

    # 新建三个表
    new1_xls = xlwt.Workbook(encoding='utf-8')
    new2_xls = xlwt.Workbook(encoding='utf-8')
    new3_xls = xlwt.Workbook(encoding='utf-8')
    # 新建sheet表
    sheet1 = new1_xls.add_sheet('数据')
    sheet2 = new2_xls.add_sheet('数据')
    sheet3 = new3_xls.add_sheet('数据')

    # 把每行数据分到三个不同的列表
    for i in range(coNum):
        aNum = sheet1_obj.row_values(i)
        if aNum not in alist:
            alist.append(aNum)
        elif aNum not in blist:
            blist.append(aNum)
        else:
            clist.append(aNum)

    try:
        # 给每个表都添加列名。
        for row in range(len(alist)):
            if row == 0:
                for i in range(4):
                    sheet1.write(row,i,label =(alist[row][i]))
                    sheet2.write(row,i,label =(alist[row][i]))
                    sheet3.write(row,i,label =(alist[row][i]))
            else:
                # 添加剩余数据
                for co in range(len(alist)):
                    sheet1.write(row,co,label =(alist[row][co]))

        for row in range(len(blist)):
                for co in range(4):
                    sheet2.write(row+1,co,label =(blist[row][co]))

        for row in range(len(clist)):
                for co in range(4):
                    sheet3.write(row+1,co,label =(clist[row][co]))
    except Exception as e:
        print("Exception: {0}".format(e))

    # 保存
    new1_xls.save('数据源01.xls')
    new2_xls.save('数据源02.xls')
    new3_xls.save('数据源03.xls')

except FileNotFoundError as e:
    print("FileNotFoundError: {0}".format(e))

推荐一篇详细的博客:
https://blog.csdn.net/weixin_43158056/article/details/105454319?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160698226519725222474496%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160698226519725222474496&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-105454319.first_rank_v2_rank_v28p2&utm_term=xlrd&spm=1018.2118.3001.4449

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值