Python从一个Excel表格提取数据填到另一个表格

这篇具有很好参考价值的文章主要介绍了Python从一个Excel表格提取数据填到另一个表格。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文,用Python从一个Excel表格提取数据填到另一个表格,详情代码中注释都说明了,请亲们详细查阅:文章来源地址https://www.toymoban.com/news/detail-523013.html

#将要对填的两张xlsx表格放在同一个目录,并在下方指定该目录
路径='G:\\Xct\\python'
#“填写表”就是要填充数据的EXCEL表格
填写表='东璟府-备案管理人员工资表.xlsx'
#有些工作表第一行是大标题,第二或三行才是明细标题(如:姓名等)
#为节省程序运行时间,在这里事先指定好标题行,如:“姓名”在第
#3行,就在下面填“3”,类推。
填写表标题行=3
#“数据表”就是用来搜索数据(不修改,只当字典查)的EXCEL表格
数据表='三项目备案人员银行账号汇总.xlsx'
数据表标题行=1
#由于EXCEL表格排版多种多样,为简化模型,本代码只自动搜索并
#填充一列数据,亲们如果要填充多列,可自行加一个循环,或修改
# 下面这个数字,反复运行本代码,即可实现多列数据的填充(本代
# 码总是在列后一列后面新增一列来填充数据,所以不会造成数据覆盖)
#数据表要填充的列是指:例如,一张表中有一列是“银行账号”,而
#另一张表则没有,现要将前一张表(数据表)的“银行账号”这一列
# 的数据填充到后一张表(填写表)中,那么“银行账号”这列所在的
# 列数,就填在这下面。
数据表要填充的列=2
#--------------------没有意义的分割符---------------------
#导入日志模块
import logging
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s-%(levelname)s:%(message)s')
logging.disable(logging.CRITICAL)
#logging.debug(变量)
#--------------------没有意义的分割符---------------------
#切换工作目录
import os
原工作目录 = os.getcwd()
logging.debug(f'原工作目录:%s' % (原工作目录))
#预存储工作目录
os.chdir(路径)
现工作目录 = os.getcwd()
logging.debug(f'现工作目录:%s' % (现工作目录))
#切换到工作目录
#--------------------没有意义的分割符---------------------
#读取填写表
#读取Excel文件,需要导入相关函数
#coding=gbk
import openpyxl
from openpyxl import load_workbook
要填写的表格 = load_workbook(填写表)
#--------------------没有意义的分割符---------------------
# 获得所有sheet的名称
#print(f'该工作簿共有如下工作表:\n{要填写的表格.get_sheet_names()}')
#--------------------没有意义的分割符---------------------
# 获得当前正在显示的sheet, 也可以用wb.get_active_sheet()
工作表 = 要填写的表格.active
#print(f'获得当前正在显示的工作表:{工作表}')
#print(f'获得当前正在显示的工作表名:{工作表.title}')
#--------------------没有意义的分割符---------------------
# 获得最大列和最大行
最大列数=工作表.max_column
#print('最大列数:', 工作表.max_column)
最大行数=工作表.max_row
#print('最大行数:', 工作表.max_row)
#--------------------没有意义的分割符---------------------
#定位“姓名”列
for 变量 in range(1,最大列数+1):
    单元格= 工作表.cell(row=填写表标题行, column=变量)
    if 单元格.value=='姓名':
        姓名列=单元格.column
        #print(姓名列)
#--------------------没有意义的分割符---------------------
'''
#遍历姓名
for 行变量 in range(填写表标题行+1,最大行数):
    单元格 = 工作表.cell(row=行变量, column=姓名列)
    if not 单元格.value==None:
        print(单元格.value)
'''
#--------------------没有意义的分割符---------------------

#读取数据表
要查找的表格 = load_workbook(数据表)
#--------------------没有意义的分割符---------------------
#获得当前正在显示的工作表
数据工作表 = 要查找的表格.active
#print(f'获得当前正在显示的工作表:{数据工作表.title}')
#--------------------没有意义的分割符---------------------
# 获得最大列和最大行
数据表最大列数=数据工作表.max_column
#print('数据表最大列数:', 数据工作表.max_column)
数据表最大行数=数据工作表.max_row
#print('数据表最大行数:', 数据工作表.max_row)
#--------------------没有意义的分割符---------------------
#定位“数据姓名”列
for 数据变量 in range(1,数据表最大行数+1):
    数据单元格= 数据工作表.cell(row=数据表标题行, column=数据变量)
    if 数据单元格.value=='姓名':
        数据姓名列=数据单元格.column
        #print(数据姓名列)
#--------------------没有意义的分割符---------------------
'''
#遍历数据表姓名
for 数据行变量 in range(数据表标题行+1,数据表最大行数):
    数据单元格 = 数据工作表.cell(row=数据行变量, column=数据姓名列)
    if not 数据单元格.value==None:
        print(数据单元格.value)
'''
#--------------------没有意义的分割符---------------------
#遍历填写表姓名
for 行变量 in range(填写表标题行+1,最大行数):
    单元格 = 工作表.cell(row=行变量, column=姓名列)
    if not 单元格.value==None:
        填写表姓名=单元格.value
        #遍历数据表姓名
        for 数据行变量 in range(数据表标题行 + 1, 数据表最大行数):
            数据单元格 = 数据工作表.cell(row=数据行变量, column=数据姓名列)
            if not 数据单元格.value == None:
                数据表姓名=数据单元格.value
                #搜索两表姓名
                if 填写表姓名==数据表姓名:
                    #在填写表的最后一列后面,新增一列,用来填充搜索结果
                    修改填写表单元格=工作表.cell(row=行变量, column=最大列数+1)
                    #定位到数据表的数据单元格,并获取它的值(搜索的结果)
                    数据表数据源单元格=数据工作表.cell(row=数据行变量, column=数据表要填充的列)
                    #将“搜索结果”填入“填写表”的当前工作表中的最后一列
                    修改填写表单元格.value = 数据表数据源单元格.value
                    #print (f'{填写表姓名}的银行账号是:{修改填写表单元格.value}')
#--------------------没有意义的分割符---------------------
#保存表格
要填写的表格.save(填写表)
#--------------------没有意义的分割符---------------------
# 打开修改后的Excel表格文件
import os
os.startfile(路径+'//'+填写表)
#--------------------没有意义的分割符---------------------
'''
写在后面的话:
1,为了防止各个工作表格式不同而出错,我就不再遍历所有工作
表了,需要在同一个工作簿中填充多张工作表的亲,可自行将要
填充数据的工作表前置展示,然后保存退出,运行一下上述代码
就会自动填充当前工作表。
2,需要注意的是:
如果要修改的EXCEL表格被打开着,会造成出错,无法保存,所
以,运行代码前,需要先退出要修改的EXCEL表格。
3,日志模块可以删掉,代码中已经关闭了,这是测试时用的
4,作为国人,我讨厌英文,所以能用中文的地方尽量用中文,
习惯看鸟语的亲敬请见谅。
5,我是初学者,代码中做了大量注释,供自己学习、复习用,嫌
我烦的亲还望海涵。如有错误或更简便的方法,还请直言不讳。
6,除了用openpyxl,还有其它的模块也能实现。我学Python不为
考级,故不考虑孔已己那样的“回字有几种写法”,只要能解决现
实问题,一招制敌足矣。对其它模块感兴趣的亲,可以参考后面
我问ChatGPT要来的答案——pandas库和xlrd库
                                                                            ——将出东方 2023-03-23
'''
#以下是GhatGPT的原文,一字未改,但请自行测试:
'''
当然可以!以下是一个使用Python和openpyxl库修改Excel单元格并
保存的示例代码:
首先,确保已安装openpyxl库:
```
pip install openpyxl
```

接下来,可以使用以下代码作为模板:
import openpyxl
# 加载Excel文档
workbook = openpyxl.load_workbook('example.xlsx')
# 选择要编辑的工作表
worksheet = workbook['Sheet1']
# 修改单元格内容
worksheet['A1'] = 'Hello World!'
# 保存修改后的Excel文档
workbook.save('example.xlsx')
```

在这个示例中,我们首先使用 `load_workbook()` 方法加载了一个
名为 `example.xlsx` 的Excel文档。然后,我们选择要编辑的工作表,
这里是 `Sheet1`。接着,我们使用 `worksheet['A1']` 访问了单元格
 `A1` 并将其内容修改为 `Hello World!`。最后,我们使用 `save()` 方
 法保存了修改后的Excel文档。

希望这可以帮到你!
'''
#在我的追问下,GhatGPT给出的另外两个方法:
'''
好的,这是一个很常见的任务,你需要使用Python的pandas库来读
取和写入Excel表格,以及使用xlrd库来搜索数据。下面是一个基本
的代码框架,你可以根据自己的需要进行修改和扩展:

```python
import pandas as pd
import xlrd

# 读取要搜索的Excel表格
search_file = xlrd.open_workbook('search.xlsx')
search_sheet = search_file.sheet_by_index(0)

# 读取要填写数据的Excel表格
target_file = pd.read_excel('target.xlsx')

# 遍历搜索表格中的每一行,查找匹配的数据并填写到目标表格中
for row_idx in range(1, search_sheet.nrows):
    search_value = search_sheet.cell(row_idx, 0).value  # 获取要搜索的数据
    target_row = target_file[target_file['列名'] == search_value]  # 在目标表格中查找匹配的行
    if not target_row.empty:
        # 如果找到匹配的行,则将搜索表格中的数据填写到目标表格中
        target_file.at[target_row.index[0], '要填写的列名'] = search_sheet.cell(row_idx, 1).value

# 保存目标表格
target_file.to_excel('target.xlsx', index=False)
```

在上面的代码中,你需要将其中的`search.xlsx`和`target.xlsx`替换
为你实际使用的文件名,并将`列名`和`要填写的列名`替换为你实
际使用的列名。你还需要安装xlrd和pandas库,如果你还没有安装
的话。
'''
#还有一个方法:
'''
好的,这个任务可以使用Python中的pandas库来完成。首先,我们
需要安装pandas库,这可以通过在终端中运行以下命令来完成:

```
pip install pandas
```

然后,我们需要导入pandas库并读取要搜索的Excel表格和要填入
数据的Excel表格。假设要搜索的Excel表格名为“search.xlsx”,要
填入数据的Excel表格名为“output.xlsx”,则可以使用以下代码来完
成:

```python
import pandas as pd

# 读取要搜索的Excel表格
df_search = pd.read_excel('search.xlsx')

# 读取要填入数据的Excel表格
df_output = pd.read_excel('output.xlsx')
```

接下来,我们可以使用pandas库中的merge函数将两个表格合并。
假设要在要填入数据的Excel表格中填入名为“John”的人的数据,
则可以使用以下代码:

```python
# 将两个表格合并
df_merged = pd.merge(df_output, df_search[df_search['Name'] == 'John'], on='ID', how='left')

# 在要填入数据的Excel表格中填入搜索到的数据
df_merged.loc[df_merged['Name_y'].notna(), 'Data'] = df_merged['Data'] + df_merged['Name_y']

# 删除不需要的列
df_merged = df_merged.drop(['Name_y'], axis=1)

# 保存结果到要填入数据的Excel表格中
df_merged.to_excel('output.xlsx', index=False)
```

这个代码将在要填入数据的Excel表格中搜索名为“John”的人,然
后将他们的数据填入“Data”列中。最后,结果将保存到要填入数
据的Excel表格中。
'''

到了这里,关于Python从一个Excel表格提取数据填到另一个表格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【办公自动化】使用Python一键提取PDF中的表格到Excel

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 一、Python处理Excel 二、提取PDF表格到excel 三、往期推荐 文末推荐  文末福利   Pyth

    2024年02月13日
    浏览(42)
  • python-自动篇-办公-案例-一键将word中的表格提取到excel文件中

    前提:您电脑上有python,还有就是编辑器vscode或其他 第一:您复制代码到vscode运行,花现下面的报错,这时候需要pip按照对应的库 其实就是在:cmd中输入:pip install +对应报错需要的库,如上是docx 当然,也不会很顺利只使用“pip”就能解决,比如 使用pip时,出现红色报错啦

    2024年01月22日
    浏览(37)
  • 【办公自动化】使用Python一键提取PDF中的表格到Excel(文末送书5本)

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 一、Python处理Excel 二、提取PDF表格到excel 三、往期推荐 文末推荐  文末福利   Pyth

    2024年02月14日
    浏览(47)
  • python表格操作,数据提取分析的用法(2)

      之前我在博客里贴出了操作表格的代码,后面有2位粉丝私聊我说不会用啊,不知道怎么用,我听了之后就立马想出一篇如何使用的博客,谁叫我爱粉丝咧 好废话不多说,先贴出操作表格代码的地址 点这里 1)代码段 我们只需要传入表的路径和表页就能自动读取我们的数据

    2023年04月18日
    浏览(30)
  • 通过Python的pdfplumber库提取pdf中表格数据

    大家好,我是空空star,本篇给大家分享一下 《通过Python的pdfplumber库提取pdf中表格数据》 。 pdfplumber是一个用于从PDF文档中提取文本和表格数据的Python库。它可以帮助用户轻松地从PDF文件中提取有用的信息,例如表格、文本、元数据等。pdfplumber库的特点包括:简单易用、速度

    2024年02月06日
    浏览(33)
  • Python小姿势 - Python操作Excel表格数据

    Python操作Excel表格数据 在日常工作中,我们经常会遇到一些需要对表格数据进行处理的情况,比如:数据清洗、数据分析、数据可视化等。对于这些任务,我们可以使用Python来进行操作。 在Python中操作Excel表格数据,我们可以使用xlrd和xlwt这两个库。xlrd是用于读取Excel文件的

    2023年04月25日
    浏览(39)
  • Python如何读取Excel表格数据

    环境: Pycharm IDE 3.9  2021.2.1 Excel作为目前主要的流行数据表格,其存储的数据整齐,强可观性。需要对大量的数据进行分析时,可以利用python脚本语言进行数据分析。 python读取excel数据: 1.打开 pycharm IDE ,新建项目,在IDE 的UI界面下点击左下角的 Python Packages .   此项用于安

    2024年02月05日
    浏览(32)
  • sqlserver导出数据为excel再导入到另一个数据库

    要将SQL Server中的数据导出为Excel文件,然后再将该Excel文件导入到另一个数据库中,你可以按照以下步骤进行操作: 请注意,上述脚本中的 -U 和 -P 选项用于提供连接数据库的用户名和密码。确保将脚本中的其他参数替换为实际的值,并根据需要进行其他适当的调整。

    2024年01月25日
    浏览(41)
  • 提取txt文件中指定数据至excel中(python)

    注意:加 r 的原因是避免转义符的误解 推荐官网,用来检验自己的正则表达式是否正确: 菜鸟工具 相关函数库和函数有: import re 、 re.findall 、 re.search h(tuple格式的,不可以改) h_new hly 目的:不断在hly内加入新的元素,要求元素是浮点型,小数位数为2位,w为寻找的总体,

    2023年04月10日
    浏览(33)
  • Python批处理(一)提取txt中数据存入excel

    现从冠层分析软件中保存了叶面积指数分析的结果,然而软件保存格式为txt,且在不同的文件夹中,每个文件夹的txt文件数量不固定,但是txt文件格式固定。现需要批量处理这些txt文件,获取头三行的数据,并存入excel中。 1、file = open(file_name, ‘r’)。使用open()函数打开名为

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包