批量提取合并EXCEL表格数据 从特定行开始(去表头合并)

OFFICE excel功能着实强大
遇到一大批三调数据需要处理,近100个Excel表格需要合并,导入数据库。
终于在百度各大神的方法下找到了解决方法

1将所有要合并的表格汇总至一个新的文件夹中

2还是在这个文件夹中创建一个新的空excel表,用于将合并后的数据存入

3右击空表表格底部【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

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

For G = 1 To Sheets.Count

Wb.Sheets(G).UsedRange.Offset(6).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

特别注意,因为我需要合并的表格存在三级分类,所以去除了前6行
语句

Wb.Sheets(G).UsedRange.Offset(6).Copy .Cells(.Range(“B65536”).End(xlUp).Row + 1, 1)

中的6就是去除前6行的意思,如果不想去表头,可以写为

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

在此贴出借鉴的小伙伴的网页链接

  • 从这个链接中知道使用Offset
    http://www.excelpx.com/thread-327488-1-1.html
  • 这个链接中借鉴了语句
    https://zhidao.baidu.com/question/96195372.html
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您可以使用`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对象的浏览器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

然小梨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值