Foxtable(狐表)用户栏目专家坐堂 → 如何将XLS.Book改成MSEXCEL?


  共有3215人关注过本帖树形打印复制链接

主题:如何将XLS.Book改成MSEXCEL?

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/1 17:29:00 [显示全部帖子]

如果是最后一行或者最后一列,i+1和j+1就超出范围了

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/2 9:09:00 [显示全部帖子]

看4楼,不用+1,如:ary(i,j) 

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/2 15:43:00 [显示全部帖子]


For j As Integer = 1 To 10

这里的10必须小于rg.Columns.Count

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/5 15:06:00 [显示全部帖子]

提示什么错误?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/5 16:54:00 [显示全部帖子]

因为部分单元格是数字型的,试试

If ary(i,j) > "" AndAlso Typeof ary(i,j) Is String AndAlso dic.ContainsKey(ary(i,j).ToLower.Replace(" ","").Replace(chr(10), "").Replace(chr(13), "")) Then

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/5 17:20:00 [显示全部帖子]

全部都是数据类型不一致导致的。自己分析具体的数据

上传实例和Execl文件测试
[此贴子已经被作者于2016/9/5 17:20:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/6 11:48:00 [显示全部帖子]

Dim path As String = args(0)
Dim app As new MsExcel.Application

Dim dic As new Dictionary(of String,String)
Dim dicfile As String =  Forms("窗口1").Controls("TextBox2").value

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 k As String In dic.Keys '显示所有键及其对应的值
'Output.Show(K & "|" & dic(k))
'Next
'Dim file As object
'//开始
For Each file As String In FileSys.GetFiles(path)
    If file.EndsWith(".xls") OrElse file.EndsWith(".xlsx") Then
        Dim wb=app.WorkBooks.Open(file)
        'Dim Book1 As New XLS.Book(file)
        For k As Integer = 1 To wb.worksheets.count '//多个sheet的处理
            
            Dim ws As msexcel.worksheet=wb.worksheets(k)
            Dim rg As msexcel.range=ws.usedrange
            If rg.Count = 1 And rg(1).Value = "" Then
                'msgbox("空")
                Continue For
            End If
            Dim ary =rg.value
            For i As Integer = 1 To rg.Rows.Count
                For j As Integer = 1 To rg.Columns.count
                    'If i= 2 Then
                    'Continue For
                    'AndAlso Typeof ary(i,j) Is String
                    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
                        If Forms("窗口1").Controls("RBt1").checked  Then
                            ws.Cells(i, j).Value = ary(i,j) & "|" & dic(ary(i,j).ToLower.Replace(" ","").Replace(chr(10), "").Replace(chr(13), ""))
                        End If
                    End If
                    'End If
                Next
            Next
            
        Next
        wb.save()
        app.quit()
    End If
Next

For Each p As String In FileSys.GetDirectories(path)
    Functions.Execute("对比函数", p)
Next

 回到顶部