Foxtable(狐表)用户栏目专家坐堂 → 如何判断EXCEL单元格中是否有内容?


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

主题:如何判断EXCEL单元格中是否有内容?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 12:16:00 [显示全部帖子]

 什么意思?直接判断 Sheet(0,0).Text 不行?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 14:51:00 [显示全部帖子]

用第一行和第一列确定范围

 

Dim Book As New XLS.Book("d:\test.xls")


For k As Integer = 0 To Book.Sheets.Count-1 '//多个sheet的处理
    Dim Sheet = Book.Sheets(k)
    Dim rc As Integer = 0
    Dim cc As Integer = 0
    For i As Integer = 0 To Sheet.Rows.Count-1
        If sheet(i, 0).Text = "" Then
            rc = i
            Exit For
        End If
    Next
    For i As Integer = 0 To Sheet.Cols.Count-1
        If sheet(0, i).Text = "" Then
            cc = i
            Exit For
        End If
    Next
    msgbox(rc & " " & cc)
    For i As Integer = 0 To rc
        For j As Integer = 0 To cc
            If sheet(i,j).text > "" Then
                Dim dr As DataRow = DataTables("排重表").AddNew
                dr("第一列") = sheet(i,j).Text
            End If
        Next
    Next
Next


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 15:09:00 [显示全部帖子]

 那你就不要全选所有单元格设置字体啊,你操作了多少,最后就会获取多少的啊。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 15:20:00 [显示全部帖子]

 那没办法,你试试用vba

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\Report.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.UsedRange
MessageBox.Show(Rg.Rows.Count)
MessageBox.Show(Rg.Columns.Count)
MessageBox.Show(Rg.Count)
App.Quit


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 15:34:00 [显示全部帖子]

 不会快。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/23 16:53:00 [显示全部帖子]

If rg.Cells(i,j).value > "" Then

 

改成

 

If rg.Cells(i,j).Text > "" Then


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/24 10:41:00 [显示全部帖子]

1、excel文件发上来

 

2、代码代码贴出来。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/24 15:40:00 [显示全部帖子]


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/24 23:36:00 [显示全部帖子]

不要这样

 

If rg.Cells(i,j).Text > "" Then

 

要这样

 

If ary(i,j) > "" Then

 

反正,全部cells的代码都不要出现,才能提升效率


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/25 17:32:00 [显示全部帖子]

Dim dlg As New OpenFileDialog
Dim l1 As WinForm.Label = e.Form.Controls("Label1")
dlg.Filter= "所有文件|*.*|Excel2003文件|*.xls|Excel2007文件|*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim t1 As Date = Date.Now
   
   
    DataTables("表A").StopRedraw
   
    Dim App As New MSExcel.Application
    try
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
        Dim Rg As MSExcel.Range = Ws.UsedRange
        Dim ary = rg.value
        For i As Integer = 1 To rg.Rows.Count
            For j As Integer = 1 To rg.Columns.Count
                If ary(i,j) <> Nothing Then
                    Dim dr As DataRow = DataTables("表A").AddNew
'dr("第一列") = Rg.Cells(i,j).value
                    dr("第一列") = ary(i,j)
                End If
            Next
        Next
    catch ex As exception
        msgbox(ex.message)
    finally
        DataTables("表A").ResumeRedraw
        app.quit
    End try
   
    l1.text="计算结束, 耗时: " & (Date.Now - t1).TotalSeconds & "秒"
   
Else
    Return
End If

 回到顶部
总数 11 1 2 下一页