如何合并多个excel报表到同一表中,只保留一个表头

本文介绍了一种使用VBA脚本的方法,可以将同一文件夹内所有Excel工作簿中的工作表数据合并到一个新的工作表中。该脚本通过打开每个文件,复制其内容并将其粘贴到目标工作表的末尾来实现这一目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建一个工作表,命名后保存到和欲合并的几个文件同一个文件文件夹,按 alt + f11,双击工程资源管理器里面的sheet1(sheet1),在右侧的代码区粘贴如下代码。运行。等候一会就可以了


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 
If Num = 1 Then 
For G = 1 To Sheets.Count 
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1) 
Next 
Else 
For G = 1 To Sheets.Count 
Wb.Sheets(G).UsedRange.Offset(1, 0).Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1) 
Next 
End If 
WbN = WbN & Chr(13) & Wb.Name 
Wb.Close False 
End With 
End If 
MyName = Dir 
Loop 
Range("A1").Select 
Application.ScreenUpdating = True 
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示" 
End Sub
您可以使用`xlsx`和`file-saver`库来导出Excel格,并使用`mergeCells`方法合并表头。 首先安装这两个库: ``` npm install xlsx file-saver --save ``` 然后在您的Vue组件中,可以使用以下代码来导出Excel格并合并表头: ```javascript import XLSX from 'xlsx'; import {saveAs} from 'file-saver'; export default { methods: { exportExcel() { // 表头配置 const header1 = ['姓名', '年龄', '性别']; const header2 = ['学校', '班级', '成绩']; // 数据 const data = [ ['张三', 18, '男', 'XX中学', '高一1班', 90], ['李四', 19, '女', 'XX中学', '高一2班', 85], ['王五', 17, '男', 'XX中学', '高一3班', 95], ]; // 合并表头 const headers = [ [...header1], [ '', '', '', ...header2 ] ]; // 合并表头单元格 const merges = [ { s: { r: 0, c: 0 }, e: { r: 1, c: 0 } }, { s: { r: 0, c: 1 }, e: { r: 1, c: 1 } }, { s: { r: 0, c: 2 }, e: { r: 1, c: 2 } }, ]; // 创建工作簿 const wb = XLSX.utils.book_new(); // 创建工作表 const ws = XLSX.utils.aoa_to_sheet([headers, ...data]); // 合并单元格 ws['!merges'] = merges; // 将工作表添加到工作簿中 XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); // 导出Excel const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' }); const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' }); saveAs(blob, 'example.xlsx'); } } } // 将字符串转换为ArrayBuffer function s2ab(s) { const buf = new ArrayBuffer(s.length); const view = new Uint8Array(buf); for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; return buf; } ``` 在上面的代码中,首先定义了表头和数据,然后将它们合并一个数组中。接着,定义了合并单元格的配置,将表头的第一行和第二行三列合并一个单元格。然后,创建一个工作簿和一个工作表,并将数据写入工作表中。 最后,将表头单元格合并工作表中,并将工作表添加到工作簿中。最后,使用`saveAs`方法将工作簿导出为Excel文件。 注意:这里的`s2ab`函数用于将字符串转换为ArrayBuffer,是为了兼容不支持Blob对象的浏览器。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值