python 2.7 操作 excel

可以使用 openpyxl、pandas、openpyxl、xlsxwriter、xlwings、pywin32、 xlrd or xlwt 等py库 进行excel读写;

以下通过 xlrd 和 xlwt,demo

pip install xlrd

pip install xlwt

复制代码
import xlrd

#
1、打开文件 exceld = xlrd.open_workbook(excelpath) # 2、获取表单对象 print '表单名字:', exceld.sheet_names() print '表单数量:', exceld.nsheets print '表单对象:', exceld.sheets() print '通过名字查找:', exceld.sheet_by_name("test") print '通过索引查找:', exceld.sheet_by_index(0) data = xlrd.open_workbook(excelpath) table = data.sheet_by_index(0) for rowCount in range(table.nrows): val = (table.row_values(rowCount)) for v in val: print v
复制代码

这就完成了对excel基本数据的遍历

API: https://xlrd.readthedocs.io/en/latest/api.html#module-xlrd

 

Demo:读取 身份证号码判断年龄大于60岁 写入另一个xls

#coding:utf-8
import xlrd
import xlwt

import os

excel_retpath_merge = "D:\\result.xls"
excel_retpath_age60 = "D:\\result_age60.xls"
def filterAgeMorethan60SexMale(excelpath, excel_retpath):

    data = xlrd.open_workbook(excelpath)
    table = data.sheet_by_index(0)

    # 准备写结果xls 添加结果表单
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet("result")

    # 读取 身份证号码判断年龄大于60岁 写入结果
    index = 0
    for rowCount in range(table.nrows):
        val = (table.row_values(rowCount))
        if (index == 0):    // 第一个文件的表头 是不能删的
            for i in range(0, len(val)):
                sheet.write(index, i, val[i])
            index = index + 1
        else:
            a = val[1][6:10].encode("utf-8")
            sex = val[2]
            if len(a) == 4:
                year = int(a)
                if ((2022 - year) > 60) and sex.strip() ==u"男":
                    for i in range(0, len(val)):
                        sheet.write(index, i, val[i])
                    index = index + 1
                else:
                    print sex + " age = " + str((2022 - year)) 
            else:
                print a

    workbook.save(excel_retpath)

def copySingleFile(excelpath, xls_sheet, index, wfirst):
    data = xlrd.open_workbook(excelpath)
    table = data.sheet_by_index(0)

    for rowCount in range(table.nrows):
        if ((rowCount != 0) or wfirst):     // 第一个文件的表头 是要拷贝  其他的都不拷贝
            val = (table.row_values(rowCount))
            for i in range(0, len(val)):
                xls_sheet.write(index, i, val[i])
            index = index + 1

    return index

def mergeXls(srcPath, retpath):
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet("result")

    index = 0
    line_index = 0
    for tpath, folders, files in os.walk(srcPath): 
        for filename in files:  
            [des_filename, extname] = os.path.splitext(filename)
            if extname == ".xls":
                line_index = copySingleFile(os.path.join(tpath, filename), sheet, line_index, (index == 0))
                index = index + 1

    workbook.save(retpath)

srcPath = "C:\\Users\\xxxxxx\\Documents\\huamingce"
mergeXls(srcPath, excel_retpath_merge)
filterAgeMorethan60SexMale(excel_retpath_merge, excel_retpath_age60)

 

posted @   lesten  阅读(2057)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示