Dim app As new MSExcel.Application
App.Visible = False
App.DisplayAlerts = False
Dim Numcb1 As Integer = args(2)
Dim Numcb2 As Integer = args(3)
Dim file = args(0)
Dim dic = args(1)
Dim excelcol,RowsMax,ColsMax As Integer
Dim excelrows As Integer
If file.EndsWith(".xls") OrElse file.EndsWith(".XLS") OrElse file.EndsWith(".xlsx") OrElse file.EndsWith(".XLSX") Then
If file.EndsWith(".xls") OrElse file.EndsWith(".XLS") Then
excelcol = 256
excelrows =65536
Else
excelcol = 16384
excelrows =1048576
End If
Dim wb=app.WorkBooks.open(file)
For k As Integer=1 To wb.worksheets.Count
'Output.Logs("登录日志").Add("k=" & k & ",Wb.WorkSheets(k).Visible=" & Wb.WorkSheets(k).Visible)
'Output.Logs("登录日志").Save(ProjectPath & "log.txt",True)
'Output.Logs("登录日志").Clear
If Wb.WorkSheets(k).Visible <> 0 Then '如果sheet表为不隐藏时处理(0隐藏,-1为不隐藏
Dim Ws As MSExcel.WorkSheet=Wb.WorkSheets(k)
If Numcb1 = 0 And Numcb2 = 0 Then
RowsMax = 0
ColsMax = ws.UsedRange.columns.count
'获取最大行
For i As Integer = 1 To ColsMax
Dim r = ws.cells(excelrows,i).End(MsExcel.XlDirection.xlUp).Row
If r > RowsMax Then
RowsMax = r
End If
Next
'获取最大列
For i As Integer = 1 To RowsMax
Dim r = ws.cells(i,excelcol).End(MsExcel.XlDirection.xlToLeft).Column
If r > ColsMax Then
ColsMax = r
End If
Next
Else
RowsMax = Numcb1
ColsMax = Numcb2
End If
Dim rg As MSExcel.Range = Ws.Range(Ws.Cells(1,1), Ws.Cells(200,200)) 'RowsMax,ColsMax
If rg.Count = 1 And rg(1).Value Is Nothing Then
Continue For
End If
Dim ary = rg.value
For i As Integer=1 To RowsMax
For j As Integer = 1 To ColsMax
If ary(i, j) <> Nothing AndAlso Typeof ary(i,j) Is String AndAlso dic.ContainsKey(ary(i,j).ToLower.Replace(" ","").Replace(chr(10), "").Replace(chr(13), "")) Then
rg(i, j).Value= dic(ary(i,j).ToLower.Replace(" ","").Replace(chr(10), "").Replace(chr(13), ""))
End If
Next
Next
End If '不处理隐藏sheet
Next
'Dim txt1 As WinForm.TextBox = Forms("窗口1").Controls("TextBox3")
'txt1.text = file & vbcrlf & txt1.text & vbcrlf
'Application.DoEvents()
'FileCount=FileCount+1
'lbl.Text="共处理" & FileCount & "个文件"
wb.Save
app.quit
Output.Logs("登录日志").Add("app.quit=true")
Output.Logs("登录日志").Save(ProjectPath & "log.txt",True)
Output.Logs("登录日志").Clear
End If
命令窗口测试
Dim file As String
Dim dic As new Dictionary(of String,String)
Dim dicfile As String = "D:\问题\test\dict.xls"
Dim Book As New XLS.Book(dicfile) '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
For i As Integer = 0 To Sheet.Rows.Count-1
If dic.ContainsKey(Sheet(i, 0).Text.ToLower.Replace(" ","").Replace(chr(10), "").Replace(chr(13), "")) = False Then
dic.add(Sheet(i, 0).Text.ToLower.Replace(" ","").Replace(chr(10), "").Replace(chr(13), ""),Sheet(i, 1).Text)
End If
Next
For Each file In FileSys.GetFiles("D:\问题\test\1")
Functions.AsyncExecute("异步函数",file, dic, 0,0)
Next