ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1311|回复: 5

[求助] 请教大神如何批量合并多个结构相同的电子表格部分区域

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-8 12:24 | 显示全部楼层 |阅读模式
本帖最后由 bihaiqt 于 2020-11-9 13:30 编辑

有1000个电子表格信息(附件sheet1)里面人员信息多少不一,需将这1000多个电子表格里面的人员信息合成一个表,并将企业名称作为一个新增加字段放到第一列以便处理时区分人员是在哪个企业的,请教如何实现,谢谢! 1-10000个表合并.zip (31.63 KB, 下载次数: 11)


TA的精华主题

TA的得分主题

发表于 2020-11-8 14:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有心解题,无力回天。你总的给些案例啊,难不得我们来创造条件给你解题?!解题后有些人连最起码做人的礼貌都没有就跑了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-9 13:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
limonet 发表于 2020-11-8 14:50
有心解题,无力回天。你总的给些案例啊,难不得我们来创造条件给你解题?!解题后有些人连最起码做人的礼貌 ...

已重新上传,谢谢!

TA的精华主题

TA的得分主题

发表于 2020-11-9 14:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-11-9 19:13 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
bihaiqt 发表于 2020-11-9 13:30
已重新上传,谢谢!

# 合并多表.py
#zpy2@excelhome
import os

def findall_files(main_dir: str) -> list:

    collector = []
   
    for root, dirs, files in os.walk(main_dir):
        collector.extend([os.path.join(root, f) for f in files])
   
    return collector

files_result=findall_files('./数据')
#print(files_result)
import sys
#sys.exit()


#将rows写入excel

def op_toexcel(data,filename): # openpyxl库储存数据到excel

    import openpyxl as op
    #wb = op.Workbook(filename) # 创建工作簿对象
    #https://openpyxl.readthedocs.io/en/stable/usage.html#read-an-existing-workbook
    wb=op.load_workbook(filename)
    ws = wb['Sheet1'] # 创建子表
    for i in range(len(data)):
        d = data
        print(d)
        ws.append(d) # 每次写入一行
    wb.save(filename)

import openpyxl as op

lines=[]
for file in files_result:
    wb=op.load_workbook(file)
    sheet_name='Sheet1'
    ws=wb[sheet_name]
    first_row=4
    last_row=24
    first_column=1
    last_column=8
    enterprise_name=ws.cell(2,2).value
    for row in range(first_row,last_row):
        #第一列不为空
        if ws.cell(row,1).value is None:
            break
        line=[]
        line.append(enterprise_name)
        for column in range(first_column,last_column):
            line.append(ws.cell(row,column).value)
        lines.append(line)

#print(lines)
import shutil
source='合并.xlsx.bak'
target='合并.xlsx'
#shutil.copyfile(source,target)
consolidated_file=target
data=lines
op_toexcel(lines,consolidated_file)
'''
合并后,发现从25行写入,需要调整汇总模板
wb=op.load_workbook(consolidated_file)
ws=wb['Sheet1']
#print(ws.values)
range_date=ws.values
l=[[cell for cell in row] for row in range_date][1:]
print(l)
'''

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-9 23:18 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-2-2 21:03 , Processed in 0.022327 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表