汇总同一文件夹下多个excel

汇总同一文件夹下多个excel,第1张

```# -*- coding:utf-8 -*-

import openpyxl

import xlrd

import os.path

import time

workbook1 = openpyxl.load_workbook('C:/Users/Administrator/Desktop/汇总.xlsx')#提前建一个汇总的表

name_list = workbook1.sheetnames #获取提前建一个汇总的表的sheet表名

sheet1 = workbook1[name_list[0]]#取第一个sheet表

sheet1.append(['姓名','工资','工资实发','年度'])#给汇总表添加标题,标题名按照提取表的字段来命名

path = 'C:/Users/Administrator/Desktop/汇总excel/'#需要汇总表的文件夹位置

file_list = os.listdir(path)  # 获取这个文件夹下所有的excel文档。

for file in file_list:

    if os.path.splitext(file)[1]=='.xlsx':  #获取所有xlsx的文件

        workbook = openpyxl.load_workbook(path+file)  # 加载已经存在的excel

        name_list = workbook.sheetnames #获取所有的sheet表名

        sheet = workbook[name_list[0]]#取第一个sheet表

        #print(sheet.dimensions) 获取所有表的范围 A1:O24

        cell = sheet['A']

        for i in cell:

            if i.value == '序号':

                a = i.row

                print(a)

            elif i.value == '合计':

                b = i.row

                print(b)

        #此循环取需要获取的行数范围,其中的A列、序号和合计为起始位置定位     

        cell1 = sheet[sheet.dimensions]

        for i in cell1:

            for j in i:

                if j.value == '姓名':

                    e = j.column

                    print(e)

                elif j.value == '工资':

                    c = j.column

                    print(c)

                elif j.value == '工资实发':

                    d = j.column

                    print(d)

        # 此循环取需要获取的列数,其中的姓名、工资和工资实发为列位置定位                 

        test_case=[]

        for row in range(a+2,b):

            sub_data={}

            sub_data['姓名']=sheet.cell(row,e).value

            sub_data['工资']=sheet.cell(row,c).value

            sub_data['工资实发']=sheet.cell(row,d).value

            #print(list(sub_data.keys()))

            ll=list(sub_data.values())

            #print(ll)

            test_case.append(ll)

        print (file) 

        #print("读取到的所有测试用例:",test_case)

        # 此循环为将需要获取的列字段对应的行数范围值取出来

        max_row = sheet1.max_row #取汇总表的行数

        print(max_row) 

        for row in test_case:

            sheet1.append(row)

        # 此循环为 将数据追加到汇总表中

        hang = list(range(max_row+1,max_row+b-a-1))

        for i in hang:

        #print(hang)

            sheet1.cell(row=i,column=4,value=file)#column=4 需要根据实际情况更改

        # 此循环为 生成一列,将表名作为数据追加到列中 

        workbook1.save('C:/Users/Administrator/Desktop/汇总.xlsx')

附记

#定位含有某字符串的单元格

cell = sheet['A']

        for i in cell:

            if i.value == '序号':

                a = i.row

                print(a)

            elif '填表' in str(i.value): #查找含有填表字符串的位置

                b = i.row

                print(b)

附记

#将非xlsx格式表转成xlsx

path = 'C:/Users/Administrator/Desktop/汇总excel/'#需要汇总表的文件夹位置

file_list = os.listdir(path)  # 获取这个文件夹下所有的excel文档。

for file in file_list:

      file_name,suff=os.path.splitext(file)

      if suff =='xls':

              data=pd.DataFrame(pd.read_excel(path+"/"+file))

              data.to_excel(path+"/"+file_name+".xlsx",index=False)

       if os.path.splitext(file)[1]=='.xlsx':  #获取所有xlsx的文件 

怎么将同一个文件夹下的多个EXCEL文件合并到一个EXCEL里? 用宏可以很方便的实现如下:

Sub UnionWorksheets()

Application.ScreenUpdating = False

Dim dirname As String

Dim nm As String

nm = ActiveWorkbook.Name

dirname = Dir("E:\123\*.xls")

Cells.Clear

Do While dirname <>""

If dirname <>nm Then

Workbooks.Open Filename:="E:\123\" &dirname

Workbooks(nm).Activate '复制新打开工作簿的第一个工作表的已用区域到当前工作表

Workbooks(dirname).Sheets(1).UsedRange.Copy _

Range("A65536").End(xlUp).Offset(1, 0)

Workbooks(dirname).Close False

End If

dirname = Dir

Loop

End Sub

新建一个EXCEL工作簿,打开开发工具里面的 Visual Basic 把上面的代码复制进去,然后根据下面的提示适当修改即可。

其中的 dirname = Dir("E:\123\*.xls")

Workbooks.Open Filename:="E:\123\" &dirname

是文件夹的路径,根据自己电脑的文件夹路径修改就可以。

Range("A65536").End(xlUp).Offset(1, 0)

这个A65536是行数,因为考虑是03版的所以用了这个,行数也是可以自己调大的。

这个宏可以实现 汇总同一个文件夹下的所有工作薄的功能。

如何将同一文件夹下的所有Excel表格合并到一个表格中

1、新建一个文件夹、将要合并的表格放到里面、新建一个excel工作薄、用excel打开、右击Sheet1标签;

2、选择查看代码(PS:excel有着一项,WPS没有)

3、将下列代码复制到文本框中:

Sub 合并搜索当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, AWbNameDim Wb As workbook, WbN As StringDim G As LongDim Num As LongDim BOX As StringApplication.ScreenUpdating = FalseMyPath = ActiveWorkbook.PathMyName = Dir(MyPath &"\" &"*.xls")AWbName = ActiveWorkbook.NameNum = 0Do While MyName <>""If MyName <>AWbName ThenSet Wb = Workbooks.Open(MyPath &"\" &MyName)Num = Num + 1With Workbooks(1).ActiveSheet.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)For G = 1 To Sheets.CountWb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)NextWbN = WbN &Chr(13) &Wb.NameWb.Close FalseEnd WithEnd IfMyName = DirLoopRange("B1").SelectApplication.ScreenUpdating = TrueMsgBox "共合并了" &Num &"个工作薄下的全部工作表。如下:" &Chr(13) &WbN,vbInformation, "提示"End Sub

4、点击运行、一段时间(取决于表格的大小和多少)后,合并完成了。

如何多个excel文件合并到一个文件多个sheet

需要用到VBA代码。

Sub Books2Sheets()'定义对话框变量Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker)'新建一个工作簿 Dim newwb As Workbook Set newwb = Workbooks.Add With fdIf.Show = -1 Then '定义单个文件变量 Dim vrtSelectedItem As Variant '定义循环变量 Dim i As Integer i = 1 '开始文件检索 For Each vrtSelectedItem In .SelectedItems'打开被合并工作簿 Dim tempwb As Workbook Set tempwb = Workbooks.Open(vrtSelectedItem)'复制工作表 tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i) '把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsxnewwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "")'关闭被合并工作簿 tempwb.Close SaveChanges:=Falsei = i + 1Next vrtSelectedItemEnd If End With Set fd = NothingEnd Sub

具体方法请参考:

将多个excel文件合并到一个excel的多个sheet_百度经验

:jingyan.baidu./article/6181c3e0bd6274152ef1531e.

如何快速将多个文件夹下内容合并到一个文件夹下

建一个文件夹,把其他文件夹全部考进去,然后点该文件夹选搜索,这样所有文件都列出来了,把这些文件剪切然后到在该文件夹黏贴,这样所有文件都在这个文件夹了,其他文件夹就会变成空文件夹,可以选择删除。

怎样把多个excel文件合并到一个文件中

1、新建一个文件夹、将要合并的表格放到里面、新建一个表格、用excel打开、右击Sheet1

2、选择查看代码(PS:excel有着一项,WPS没有)

3、将下列代码复制到文本框中:

Sub 合并当前目录下所有工作簿的全部工作表()

Dim MyPath, MyName, AWbName

Dim Wb As workbook, WbN As String

Dim G As Long

Dim Num As Long

Dim BOX As String

Application.ScreenUpdating = False

MyPath = ActiveWorkbook.Path

MyName = Dir(MyPath &"\" &"*.xls")

AWbName = ActiveWorkbook.Name

Num = 0

Do While MyName <>""

If MyName <>AWbName Then

Set Wb = Workbooks.Open(MyPath &"\" &MyName)

Num = Num + 1

With Workbooks(1).ActiveSheet

.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)

For G = 1 To Sheets.Count

Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)

Next

WbN = WbN &Chr(13) &Wb.Name

Wb.Close False

End With

End If

MyName = Dir

Loop

Range("B1").Select

Application.ScreenUpdating = True

MsgBox "共合并了" &Num &"个工作薄下的全部工作表。如下:" &Chr(13) &WbN, vbInformation, "提示"

End Sub

4、点击运行、一段时间(取决于表格的大小和多少)后,合并完成了。

多个txt文件合并到一个excel的不同sheet

Sub ImportingText()

Dim MyDir As Object

Dim MyDate As Object

Dim i, j, k As Integer

Const ForReading = 1

i = 1

Sheet2.UsedRange.ClearContents

Sheet3.UsedRange.ClearContents

Set MyDir = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path &"log\")

Set MyFile = MyDir.Files

For Each File In MyFile

s = File.Name

Sheet2.Cells(i, 1) = s

i = i + 1

Next

Set MyDir = Nothing

Sheet2.Select

End Sub

这个是将某个目录下所有文件名读取的vba,你稍微改改就好了

题意理解:希望批量提取所有文件(注:特定某类文件),并批量建立超链接,当发给对方时,对方可以直接打开文件(注:双方对于文件路径均有共享权)

解法(该解法针对批量提取某类特定文件或所有文件,并批量建立超链接):

一. 批量提取文件

方法一. 微软WIN 8或者WIN 10 *** 作系统,可以借助自带功能实现批量获取文件夹内文件路径:选择全部文件或某类文件,同时按住shift和鼠标右键,会出现“复制为路径”的选项。

WIN 8或者WIN 10 *** 作系统获取文件路径

然后将路径粘贴到Excel中:

路径粘贴到Excel中

方法二. 没有“复制至路径”功能的微软电脑 *** 作系统,可以通过文件内容为“dir *.xlsx/s/on/b>文件路径dirxlsxsonb.txt”的.bat文件" highlight="true">bat文件获得,步骤如下:

1. 在欲得到文件路径的文件夹内新建一个txt文件

2. 在该文件内输入内容为“dir /s/on/b>获取路径.txt”

3. 该文件保存后改后缀为“.bat”

4. 运行该 bat 文件

5. 在“xlsx文件路径.txt”中复制所有内容

6. 粘贴在 Excel 文件中

7. 以“简历表”所有文件为例(若是“dir”改成“dir *.xlsx”则提取所有 xlsx文件的路径)

● 在“简历表”文件夹内新建一个TXT文档;

● 输入内容:“dir /s/on/b>获取路径.txt”;

● 保存后关闭,将txt文档后缀名改为.bat

● 双击生成的bat文件运行,将得到一个命名为“获取路径.txt”文件,打开后,可看到文件列表路径,复制到Excel中即可。

“简历表”文件夹内所有文件

二. 批量超链接

1. 在粘贴了文件路径的 Excel 文件内,在含文件路径的文件名单元格的相邻单元格内键入公式“=Hyperlink(Link-location,[Friendly-name])”

2. 以“简历表”的路径为例(注:公式中的“[Friendly-name]”即“A2”可以省去)

批量超链接公式

三. 针对题述要求的解法

1. 从图片上看,题述文件所在电脑 *** 作系统应该是 win7,所以可以用上述“批量提取文件”的“方法一”,即:

2. 在“A0101板材类”文件夹下,选取所有 .xlsx 文件,同时按住shift和鼠标右键,当出现“复制为路径”的选项时,鼠标左键点击该选项。

3. 在 Excel 文件内粘贴后,在其右边相邻的单元格内,键入公式“=Hyperlink(Link-location,[Friendly-name])”并下拉


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8140303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存