精华内容
下载资源
问答
  • 原标题:从几百个Excel中查找数据,用Python一分钟搞定今天给大家分享一个真实的办公自动化需求,日常办公肯定都会遇到的,大家一定要仔细阅读需求说明,理解需求之后即可体会Python的强大!一、需求说明首先我们...

    原标题:从几百个Excel中查找数据,用Python一分钟搞定

    今天给大家分享一个真实的办公自动化需求,日常办公肯定都会遇到的,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大!

    一、需求说明

    首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立新表,每天的表格内包含所有档案信息,同时也有可能会添加新的档案名。同个年度的总表在年末可能会有两、三百个工作表,同时每个表中可能也存在千余份档案信息。表格形式如下(为了直观呈现本例以7个工作表和十余份档案的形式呈现)

    35fcf3e4096d4aeeaf0e5dd0fcc461b1.png

    需要完成的操作:为了方便审查特定档案信息,需要给出档案名后生成一份新表,该表包含指定档案在所有日期(即所有工作表)中的记录。最终结果如下(以档案x003为例):

    3966bfaa91d4468f950ec2c903b7f352.png

    也就是老板说:给我把这几百个表格中所有包含档案x003的相关数据全部找到并整理个新的表格给我!

    二、步骤分析

    正式写代码前可以把需求分析清楚,将复杂问题简单化。

    说白了,这个需求要求把所有日期工作表中的特定行都提取出来整合成一个新表。那么我们可以遍历每一张表,然后遍历第一列(名称列,也可以看作A列)每一个有数据的单元格,如果单元格中的文字为我们需要的档案名,就把这一行提取出来放到新的表格中,进一步梳理步骤为

    建立一个新的EXCEL工作簿

    新表的表头和档案记录Excel中的一样,也是名称、配置、提交日期等

    遍历档案记录Excel的每一张工作表sheet,再遍历第一列每一个有数据的单元格,对内容进行判断

    找到符合条件的单元格后获取行号,根据行号将当前表中的特定行提取出来,并将行追加新创建的表中

    分析清楚就可以着手写代码了

    三、Python实现

    首先导入需要的库本例中涉及旧表的打开和新表的创建,因此需要从openpyxl导入load_workbook和Workbook(如果是ppt和word用到的模块就更智能了,一个方法就能搞定)

    from openpyxl import load_workbook, Workbook

    接着导入旧表及创建新表

    # 从桌面上获取总表

    filepath = r'C:\Users\chenx\Desktop\台账.xlsm' # 根据实际情况进行修改

    workbook = load_workbook(filepath)

    # 创建新的Excel工作簿获取到工作表

    new_workbook = Workbook()

    new_sheet = new_workbook.active

    # 给新表写入表头

    new_headers = ['名称', '配置', '提交日期', '受限操作', '操作时间', '状态', '存储位置']

    new_sheet.append(new_headers)

    现在是核心步骤:多次遍历,可以用workbook.sheetnames获取工作簿所有工作表名称的列表,然后遍历即可

    for i in workbook.sheetnames:

    sheet = workbook[i]

    # 获取档案名称所在列

    names = sheet['A']

    按照前面的分析,需要遍历名称列,判断每一个单元格的值是不是需要的档案名。这里应注意,如果已经循环到需要的单元格,就可以停止循环了,但一定要把符合单元格的行号传递给一个变量做记录,不然一旦break出循环就没有记忆了

    flag = 0

    for cell in names:

    if cell.value == keyword: # 这里的keyword就是档案名,可以以 档案x003 为例

    flag = cell.row

    break

    获得到符合条件的行号后用sheet[flag]就可以拿到符合行了。openpyxl不支持旧表的一整行写入新表,因此应对策略就是将这一行的所有单元格具体值组装成一个列表,用sheet.append(列表)的方法写入新表,遍历部分的完整代码如下:

    for i in workbook.sheetnames:

    sheet = workbook[i]

    names = sheet['A']

    flag = 0

    for cell in names:

    if cell.value == keyword:

    flag = cell.row

    break

    if flag: # 如果flag没有被修改则不需要顺序进行下列代码

    data_lst = []

    for cell in sheet[flag]:

    # 这里加上一个对内容的判断,是让无内容的行直接放空,而不是写入一个 none

    if cell.value:

    data_lst.append(str(cell.value))

    else:

    data_lst.append(' ')

    new_sheet.append(data_lst)

    最后记得保存

    new_workbook.save(r'C:\Users\chenx\Desktop\台账查询.xlsx')

    小结

    这是经过一定改编的真实案例,可见Python自动化办公确实能够帮助我们解放自己的双手,不过在写自动化脚本之前也要先拆分任务,明确思路再进行,如果对本文的代码和数据感兴趣可以在后台回复自动化获取。最后还是希望大家能够理解Python办公自动化的一个核心就是批量操作-解放双手,让复杂的工作自动化!返回搜狐,查看更多

    责任编辑:

    展开全文
  • 大家好,又到了Python办公自动化系列。今天分享一个真实的办公自动化需求,大家一定要仔细阅读需求说明,理解需求...同个年度的总表年末可能会有两、三百个工作表,同时每个表可能也存在千余份档案信息。表格...

    大家好,又到了Python办公自动化系列。

    今天分享一个真实的办公自动化需求,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大!

    一、需求说明

    首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立新表,每天的表格内包含所有档案信息,同时也有可能会添加新的档案名。同个年度的总表在年末可能会有两、三百个工作表,同时每个表中可能也存在千余份档案信息。表格形式如下(为了直观呈现本例以7个工作表和十余份档案的形式呈现)

    format,png

    需要完成的操作:为了方便审查特定档案信息,需要给出档案名后生成一份新表,该表包含指定档案在所有日期(即所有工作表)中的记录。最终结果如下(以档案x003为例):

    format,png

    也就是老板说:**给我把这几百个表格中所有包含*档案x003*的相关数据全部找到并整理个新的表格给我!

    二、步骤分析

    正式写代码前可以把需求分析清楚,将复杂问题简单化。

    说白了,这个需求要求把所有日期工作表中的特定行都提取出来整合成一个新表。那么我们可以遍历每一张表,然后遍历第一列(名称列,也可以看作A列)每一个有数据的单元格,如果单元格中的文字为我们需要的档案名,就把这一行提取出来放到新的表格中,进一步梳理步骤为

    建立一个新的EXCEL工作簿

    新表的表头和档案记录Excel中的一样,也是名称、配置、提交日期等

    遍历档案记录Excel的每一张工作表sheet,再遍历第一列每一个有数据的单元格,对内容进行判断

    找到符合条件的单元格后获取行号,根据行号将当前表中的特定行提取出来,并将行追加新创建的表中

    分析清楚就可以着手写代码了

    三、Python实现

    首先导入需要的库本例中涉及旧表的打开和新表的创建,因此需要从openpyxl导入load_workbook和Workbook(如果是ppt和word用到的模块就更智能了,一个方法就能搞定)

    from openpyxl import load_workbook, Workbook

    接着导入旧表及创建新表

    # 从桌面上获取总表

    filepath = r'C:\Users\chenx\Desktop\台账.xlsm' # 根据实际情况进行修改

    workbook = load_workbook(filepath)

    # 创建新的Excel工作簿获取到工作表

    new_workbook = Workbook()

    new_sheet = new_workbook.active

    # 给新表写入表头

    new_headers = ['名称', '配置', '提交日期', '受限操作', '操作时间', '状态', '存储位置']

    new_sheet.append(new_headers)

    现在是核心步骤:多次遍历,可以用workbook.sheetnames获取工作簿所有工作表名称的列表,然后遍历即可

    for i in workbook.sheetnames:

    sheet = workbook[i]

    # 获取档案名称所在列

    names = sheet['A']

    按照前面的分析,需要遍历名称列,判断每一个单元格的值是不是需要的档案名。这里应注意,如果已经循环到需要的单元格,就可以停止循环了,但一定要把符合单元格的行号传递给一个变量做记录,不然一旦break出循环就没有记忆了

    flag = 0

    for cell in names:

    if cell.value == keyword: # 这里的keyword就是档案名,可以以 档案x003 为例

    flag = cell.row

    break

    获得到符合条件的行号后用sheet[flag]就可以拿到符合行了。openpyxl不支持旧表的一整行写入新表,因此应对策略就是将这一行的所有单元格具体值组装成一个列表,用sheet.append(列表)的方法写入新表,遍历部分的完整代码如下:

    for i in workbook.sheetnames:

    sheet = workbook[i]

    names = sheet['A']

    flag = 0

    for cell in names:

    if cell.value == keyword:

    flag = cell.row

    break

    if flag: # 如果flag没有被修改则不需要顺序进行下列代码

    data_lst = []

    for cell in sheet[flag]:

    # 这里加上一个对内容的判断,是让无内容的行直接放空,而不是写入一个 none

    if cell.value:

    data_lst.append(str(cell.value))

    else:

    data_lst.append(' ')

    new_sheet.append(data_lst)

    最后记得保存

    new_workbook.save(r'C:\Users\chenx\Desktop\台账查询.xlsx')

    小结

    这是经过一定改编的真实案例,可见Python自动化办公确实能够帮助我们解放自己的双手,不过在写自动化脚本之前也要先拆分任务,明确思路再进行,如果对本文的代码和数据感兴趣可以在GitHub(https://github.com/liuhuanshuo/zaoqi-Python)获取。最后还是希望大家能够理解Python办公自动化的一个核心就是批量操作-解放双手,让复杂的工作自动化!

    展开全文
  • 本文实例讲述了python使用xlrd实现检索excel中某列含有指定字符串记录的方法。分享给大家供大家参考。具体分析如下:这里利用xlrd,将excel中某列数据,含有指定字符串的记录取出,并生成用这个字符串命名的txt...

    本文实例讲述了python使用xlrd实现检索excel中某列含有指定字符串记录的方法。分享给大家供大家参考。具体分析如下:

    这里利用xlrd,将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件

    import os

    import xlrd,sys

    # input the excel file

    Filename=raw_input('input the file name&path:')

    if not os.path.isfile(Filename):

    raise NameError,"%s is not a valid filename"%Filename

    #open the excel file

    bk=xlrd.open_workbook(Filename)

    #get the sheets number

    shxrange=range(bk.nsheets)

    print shxrange

    #get the sheets name

    for x in shxrange:

    p=bk.sheets()[x].name.encode('utf-8')

    print "Sheets Number(%s): %s" %(x,p.decode('utf-8'))

    # input your sheets name

    sname=int(raw_input('choose the sheet number:'))

    try:

    sh=bk.sheets()[sname]

    except:

    print "no this sheet"

    #return None

    nrows=sh.nrows

    ncols=sh.ncols

    # return the lines and col number

    print "line:%d col:%d" %(nrows,ncols)

    #input the check column

    columnnum=int(raw_input('which column you want to check pls input the num(the first colnumn num is 0):'))

    while columnnum+1>ncols:

    columnnum=int(raw_input('your num is out of range,pls input again:'))

    # input the searching string and column

    testin=raw_input('input the string:')

    #find the cols and save to a txt

    outputfilename=testin + '.txt'

    outputfile=open(outputfilename,'w')

    #find the rows which you want to select and write to a txt file

    for i in range(nrows):

    cell_value=sh.cell_value(i, columnnum)

    if testin in str(cell_value):

    outputs=sh.row_values(i)

    for tim in outputs:

    outputfile.write('%s ' %(tim))

    outputfile.write('%s' %(os.linesep))

    outputfile.close()

    希望本文所述对大家的Python程序设计有所帮助。

    展开全文
  • 我试图在Python中编写一个简单的函数(使用xlwings),它在Excel中读取当前“活动”单元格值,然后将该单元格值写入活动单元格下一列的单元格 .如果我使用绝对引用指定单元格,例如范围(3,2),那么我一切正常 ...

    我试图在Python中编写一个简单的函数(使用xlwings),它在Excel中读取当前“活动”单元格值,然后将该单元格值写入活动单元格中下一列中的单元格 .

    如果我使用绝对引用指定单元格,例如范围(3,2),那么我一切正常 . 但是,一旦运行该函数,我似乎无法找到选择哪个单元格的行和列值 .

    我已经找到了许多指定引用的示例,但没有找到活动单元格范围可能根据用户选择而变化的示例 .

    我尝试了一些想法 . 第一个选项是尝试使用我在v0.10.0 xlwings文档中找到的App.selection,但这似乎没有返回可以使用的范围引用 - 我在尝试检索时遇到错误“Invalid parameter”来自'cellRange'的行:

    def refTest():

    import xlwings as xw

    wb = xw.Book.caller()

    cellRange = xw.App.selection

    rowNum = wb.sheets[0].range(cellRange).row

    colNum = wb.sheets[0].range(cellRange).column

    url = wb.sheets[0].range(rowNum, colNum).value

    wb.sheets[0].range(rowNum, colNum + 1).value = url

    第二个想法是尝试直接从单元格选择中读取行和列,但这给了我错误“Property对象没有属性'row'”:

    def refTest():

    import xlwings as xw

    wb = xw.Book.caller()

    rowNum = xw.App.selection.row

    colNum = xw.App.selection.column

    url = wb.sheets[0].range(rowNum, colNum).value

    wb.sheets[0].range(rowNum, colNum + 1).value = url

    是否可以使用xlwings将活动/选定单元格的范围从Excel传递到Python?如果有人能够对此有所了解,那么我会非常感激 .

    谢谢!

    展开全文
  • I have an Excel file with one worksheet that has sediment collection data. I am running a long Python script.In the worksheet is a column titled “CollectionYear.” Say I want the year 2010. If the ...
  • 生活有很多的职业需要每天面对非常多的 Excel 表, 进行数据的添加、修改和查找(还包括一些统计)等操作。但是绝大数非程序员根本不知道,咱们其实可以通过程序来让日常的这些大量重复的枯燥的却又不得不做的工作...
  • #-*- coding:utf-8 -*-import osimport sysimport reimport numpy as npimport pandas as pdimport openpyxlimport xlrddef checkText(file_dir,queryText):wb = xlrd.open_workbook(file_dir) #打开excel表#通过...
  • excel_read(需要查找单元格内容的xls文件路径,检索关键字(只接受list),是否检查(布尔值))返回一个dict:{检索关键字1:值1,检索关键字2:值2,检索关键字3:值3,....}如果没有检索到关键字,那么就不会存在dict...
  • Excel是很出色的工具,但有时候它不够好用。当数据集较小,需要处理的问题比较简单时,Excel最好用。但是一旦跳出这些舒适区域,就会发现Excel...为什么要集成PythonExcelExcel VBA能完成很多数据分析工作,包括...
  • Python openpyxl 遍历所有sheet查找特定字符串的方法如下所示:from openpyxl import workbookfrom openpyxl import load_workbookfrom openpyxl import worksheetdef find_false_in_sheet(sheet):for column in ...
  • 打开IDLE(python)创建一个.py文件,编辑.py文件为:'''本示例演示如何一个excel文件搜索特定的字符串,并将其行显示''''''# 1. 打开文件# 2. 读取行信息# 3. 判断是否包含关键词# 4. 不包含则循环操作,包含的话...
  • 使用openpyxl以这种方式操作Excel文件需要很多细节。首先,值得一提的是,xlsx文件包含每个单元格的两种表示形式—公式和公式的当前值。openpyxl可以返回其中一个,如果需要值,则应打开文件时指定data_only=True...
  • Where I have a cell in an .xlsx file that is "=..." I want to replace the "=" with '=, so can see the cells as strings rather than as the values.For example,A1 = 5A2 = 10A3 = (A1/A2) = 0.5I want to se...
  • 该程序查看Excel文件的目录(和子目录),分别打开它们,搜索数据(特定的工作表上),并将其转储到一个csv。由于每个搜索项都有效地用于列头,因此涉及到循环,我希望这下面有4个值。我使用正则表达式定义搜索词。...
  • pip install pandaspip install xlrd大量记录的时候,用EXCEL排序处理比较费劲,EXCEL程序动不动就无响应了,用pands完美解决。# We will use data structures and data analysis tools provided in Pandas library...
  • python 环境:Python 2.7.16需要安装:pandas/xlrd (pip2 install pandas/ pip2 install xlrd)import pandas as pddef find_row(num_value,file_name):"""Returns the row number based on the value of the ...
  • Python Excel数据查找

    万次阅读 多人点赞 2017-09-13 16:44:29
    Python Excel数据查找今天突然被老师叫去帮她统计成绩,然后发现是一个大坑。为什么这么说呢:因为她英语成绩竟然 分了20个excel文件来存。我们要查找出数学50以上,并且英语90以上的人。这就很尴尬了,我们本来打算...
  • 我有一个要文件搜索和替换的字符串列表,格式如下:bird produk - bird productpig - porkayam - chicken...kuda - horse要搜索的单词左侧,替换词右侧(查找“bird produk”,替换为“bird produc”)。...
  • python excel中查找指定字符的行信息

    万次阅读 2019-01-13 17:37:28
    虽然接触python很久了,包括上课以及大论文的... 用python实现excel中查找指定字符的行信息 strr # 字符串 or 字符 filename # 文件名路径 with open(filename,'r') as fp: for line in fp: if strr in line: ...
  • 有安装Excel的机器上rom win32com.client import constants, Dispatchclass EasyExcel:def __init__(self, filename=None):self.xlApp = Dispatch('Excel.Application')if filename:self.filename = filenameself....
  • 本文完成任务如下:从下面excel表格的第一列产品提取 第二列带宽字段,用Python提取:相关程序 及解释如下:第一种方法:import xlrdimport xlwtimport rea =u'C:\\Users\\gh\\Desktop\\套餐.xls'#有中文的时候...
  • 各位前辈们,小弟刚开始学习python,我现在想通过python(我使用的是python2.7)先查找Excel中的指定名称,再获取该名称对应的数学或者语文成绩,该怎么做呢? ![图片说明]...
  • 本文实例讲述了python使用xlrd实现检索excel中某列含有指定字符串记录的方法。分享给大家供大家参考。具体分析如下:这里利用xlrd,将excel中某列数据,含有指定字符串的记录取出,并生成用这个字符串命名的txt...
  • pythonexcel自适应导入数据库

    万次阅读 2021-01-28 22:09:34
    excel中每个sheet自动导入数据库,以sheet名称为表名数据库创建表; 将每个sheet的数据添加至数据库对应表;默认以第一行为该表的列表名,其它行作为数据; 查找数据存在的表文件名; 查找数据库某表的说...
  • 本文实例讲述了python实现查找excel里某一列重复数据并且剔除后打印的方法。分享给大家供大家参考。具体分析如下:在python里面excel的简单读写操作我这里推荐使用xlrd(特别是读操作)import xlrddef open_excel...
  • 原博文2017-06-23 14:45 −近来自学python,今天写了一段小代码对文件进行操作。 python的安装,我是安装了anaconda,从清华... pythonexcel进行操作,需要导入包xlr...06664相关推荐2019-12-09 21:07 −以下操...
  • Context: I am writing a program which can pull values from a PDF and put them in the appropriate cell in an Excel file.Question: I want to write a function which takes a column value (e.g. 2014) and a...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,559
精华内容 5,023
关键字:

python在excel中查找内容

python 订阅