因为还没有做过Excel合并这样的项目,我也比较好奇,如果使用VB.Net,那么需要多少行代码。
于是有了以下代码(请自行添加对Excel 的Com引用):
Imports Microsoft.Office.Interop
Public Class Form1
Dim maxcount As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim path As String = "D:\lessons\mergexls"
Dim files() As String = IO.Directory.GetFiles(path)
Dim saveExcelfile As String = path & "\allexcel.xlsx"
Dim xlsAll As New Excel.Application()
Dim Wbook As Excel.Workbook = xlsAll.Workbooks.Add
Dim Wsheet As Excel.Worksheet = Wbook.Worksheets.Add
For Each singlexls As String In files
writeExcel(singlexls, xlsAll, Wsheet)
Next
Wbook.SaveAs(saveExcelfile)
xlsAll.Quit()
End Sub
Private Sub writeExcel(ByVal xlssinglefile As String, ByVal xlsapp As Excel.Application, ByVal allSheet As Excel.Worksheet)
Dim Wsinglebook As Excel.Workbook = xlsapp.Workbooks.Open(xlssinglefile)
Dim Wsinglesheet As Excel.Worksheet = Wsinglebook.Worksheets(1)
For i As Integer = 1 To Wsinglesheet.UsedRange.Rows.Count
maxcount += 1
For j As Integer = 1 To Wsinglesheet.UsedRange.Columns.Count
allSheet.Cells(maxcount, j).Value = Wsinglesheet.Cells(i, j).value
Next
Next
Wsinglebook.Close()
End Sub
End Class
28行。不过代码算是很精简了,实际操作的时候总行数应该还要多点。
最后要吐槽的是,Excel的COM组件工作起来太慢了。