Excel的二次开发实例:合并Excel文件
来源:互联网 发布:js如何buttin点击次数 编辑:程序博客网 时间:2024/05/17 03:13
Excel的二次开发实例:合并Excel文件
我曾经遇到客户提出一个需求,要求将多个格式类似的Excel文件合并成一个Excel文件。
一开始觉得这个需求还是很容易实现的,使用C#封装Excel合并的VBA宏,加个循环而已。示例的VBA宏如下所示:
Sub CombineSheet()
Dim Files() As String
'取一个文件夹下的所有文件,这是自己写的一个函数,非VBA库函数
Call GetFilesInDir("C:Documents and SettingsAdministrator桌面压力变送器", Files)
Dim iFile As Integer
Dim xBook As Excel.Workbook
Dim xSheet As Excel.Worksheet
Dim xNewBook As Excel.Workbook
Dim iPos As Integer
Dim sNewFile As String
Dim sSheetName As String
'目标文件
sNewFile = "C:Documents and SettingsAdministrator桌面aaa.xls"
Set xNewBook = Workbooks.Add
Call xNewBook.SaveAs(sNewFile)
Application.DisplayAlerts = False
For iFile = LBound(Files) To UBound(Files)
Set xBook = Workbooks.Open(Files(iFile))
sSheetName = "次页"
Set xSheet = xBook.Worksheets(sSheetName)
xSheet.Copy After:=xNewBook.Worksheets(xNewBook.Worksheets.Count)
sSheetName = "第三页"
Set xSheet = xBook.Worksheets(sSheetName)
xSheet.Copy After:=xNewBook.Worksheets(xNewBook.Worksheets.Count)
Call xBook.Close(False)
Next iFile
xNewBook.Worksheets(3).Delete
xNewBook.Worksheets(2).Delete
xNewBook.Worksheets(1).Delete
MsgBox "OK"
End Sub
但很快,客户就发回反馈说当合并的文件数比较多时,会提示错误“不同的单元格格式太多”,实际运行了一下,发现确实如此,即使使用VBA宏运行完毕也是同样错误,发现随着合并工作表的个数增多,分为如下三个阶段:
- 能够合并成功,保存后能够成功打开
- 能够合并成功,但保存后再打开时提示“不同的单元格格式太多”
- 合并过程中报错“不同的单元格格式太多”,合并无法完成
另人疑惑的是,纯使用手工合并这些文件则不会出错。
根据Microsoft提供的资料,Excel最多可使用4000种单元格格式,我在第二阶段能够合并完成,但无法打开保存文件的情况下,不保存为xls文件,而是保存为xml文件(Excel 2003以上版本支持这个功能),发现保存的xml文件中,单元格格式确实超过了4000。但仔细分析会发现,里面大量的单元格格式都是重复的。估计是使用COM接口合并文件时,Excel只是简单地把所有的格式合并在一起,而不是检查重复的情况并合并(微软程序员在偷懒)。
在这种情况下,只好自己动手合并这些格式,大致思路如下:
- 通过COM接口将所有的Excel文件转存为xml文件
- 使用C#的XML类合并这些XML文件为一个XML文件
- 分析目标XML文件中的单元格格式并合并重复单元格
- 将目标XML文件通过COM接口存为xls文件
- 因为XML文件不能保存Excel中的对象(图表、文本框等),需要打开源Excel文件将对象插入到目标Excel文件的合适位置
使用以上步骤后,合并成功,原先的上万个单元格格式被合并成了不到100个。
如有兴趣的朋友请email至lldwolf@163.com
- Excel的二次开发实例:合并Excel文件
- VBA EXCEL 文件合并
- excel 合并文件 vba
- 合并excel 宏文件
- VBA excel文件合并
- WPF读写excel的完整示例-excel文件合并工具
- WPF读写excel的完整示例-excel文件合并工具
- Excel单元格的合并
- Excel单元格的合并
- excel的单元格合并
- NPOI根据Excel模板生成原生的Excel文件实例
- 合并多个Excel文件
- Excel 合并多个文件
- Excel文件上传实例
- Python读写Excel文件的实例
- Python读写Excel文件的实例
- Python读写Excel文件的实例
- Python读写Excel文件的实例
- 用JavaScript抓取頁面上所有控件
- 谈谈软件测试面试问题(二)
- 我是这样从助理升为公司副总的(一)
- 我是这样从助理升为公司副总的(二)
- js常用页面跳转
- Excel的二次开发实例:合并Excel文件
- XSL学习笔记:XSLT优先级问题
- work with multiple languages in your /App_Code folder
- 由于上班需求申请博客记录常用代码
- OLAP的解释
- 程序员四大忌
- 媒体营销应当注重“向上销售”
- SAP学习手册
- 求生不得,求死不能