VB.NET WinForm中打开指定Excel,如何遍历某一列下的所有数据呢?

于之 2011-06-01 04:26:17
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
Dim obj_xls As Object
obj_xls = CreateObject("Excel.Application")
obj_xls.displayAlerts = False
obj_xls.Application.Visible = True
Call obj_xls.workbooks.open("D:\book1.xlsx") '打开:D:\book1.xls,具体的文件自己改
Call obj_xls.worksheets("sheet1").Activate() '操作表:sheet1,具体的表名自己改
Call obj_xls.Range("A1").Select() '选中A1单元格,这里以A1单元格作为例子,具体的单元格自己改
If CLng(obj_xls.Selection.Value) > 80 Then '判断数值是否大于100,判断条件自己改
obj_xls.Selection.Interior.ColorIndex = 3 '大于100,颜色为红
obj_xls.Selection.Interior.Pattern = 1
Else
obj_xls.Selection.Interior.ColorIndex = 6 '否则颜色为黄
obj_xls.Selection.Interior.Pattern = 1
End If

'Call obj_xls.activeworkbook.save() '保存
'Call obj_xls.workbooks.Close() '关闭
'obj_xls = Nothing

End Sub


以上是用VB.NET打开指定的Excel文件,我想请教,book1.xlsx中第一列有很多行数字记录,我想让其遍历下去,按条件对单元格变颜色,那要如何遍历book1.xlsx的某一列的所有记录呢? 请指点,谢谢!
...全文
319 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
于之 2011-06-09
  • 打赏
  • 举报
回复
反复百度了N多资料,终于搞定了!
沐NeMo 2011-06-08
  • 打赏
  • 举报
回复
取得Excel中的有记录的行总数這個簡單:
       Dim xlapp As New Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
xlbook = xlapp.Workbooks.Open("c:\sheet.xls")
xlsheet = xlbook.Worksheets(1)
MsgBox(xlsheet.UsedRange.Columns.Count) '最大的使用列数。
MsgBox(xlsheet.UsedRange.Rows.Count) '最大的使用行数。有记录的总行数。包括写过数据然后删除数据的空白行。要删除这样的行,必须整行删除掉。
xlapp.Visible = True
于之 2011-06-08
  • 打赏
  • 举报
回复
再顶一下,求人指点,谢谢!
于之 2011-06-08
  • 打赏
  • 举报
回复
To: linjimu ,你的这个我试了是可以,但是那我上面的那段代码要如何改才好呢? 请再指点,谢谢!
于之 2011-06-04
  • 打赏
  • 举报
回复
Dim n As Integer = obj_xls.outDataTable.Rows.Count - 1 ‘--出错


关键是如何取得Excel中的有记录的行总数, 这个不知道呢.
sanyexian 2011-06-04
  • 打赏
  • 举报
回复
outDataTable应该是数据库操作的吧?我新建了一个EXCEL的Application,没有这个成员。
如果你只是打开一个指定的有数据的EXCEL,那就只能是遍历第一列的每个单元格,直到单元格数值为空,就退出循环。
我自己随手写的循环是这样的:

For i = 6 To 65
For j = i - 1 To 65
range = ws.Range("C" & j)
If range.Value Is Nothing Then
range.EntireRow.Delete()
End If
Next
i = i + 1
Next

你的应该是用WHILE循环吧。
于之 2011-06-02
  • 打赏
  • 举报
回复
不好意思,出错了!

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
Dim obj_xls As Object
obj_xls = CreateObject("Excel.Application")
obj_xls.displayAlerts = False
obj_xls.Application.Visible = True
Call obj_xls.workbooks.open("D:\book1.xlsx") '打开:D:\book1.xls,具体的文件自己改
Call obj_xls.worksheets("sheet1").Activate() '操作表:sheet1,具体的表名自己改

Dim i As Integer
Dim n As Integer = obj_xls.outDataTable.Rows.Count - 1 ‘--出错
For i = 0 To n Step i + 1
If CLng(obj_xls.Selection.Value) > 80 Then '判断数值是否大于100,判断条件自己改
obj_xls.Selection.Interior.ColorIndex = 3 '大于80,颜色为红
obj_xls.Selection.Interior.Pattern = 1
Else
obj_xls.Selection.Interior.ColorIndex = 6
obj_xls.Selection.Interior.Pattern = 1
End If
Next

End Sub


出错信息为:
未找到类型 "ApplicationClass" 的公共成员 "outDataTable"
于之 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 asdfy 的回复:]
参考:
http://topic.csdn.net/u/20110512/19/b43107c0-5f14-465d-b5f8-02ff7db968c2.html
[/Quote]


我看了你的,没有看到循环。
csuchen6 2011-06-01
  • 打赏
  • 举报
回复

Dim i As Integer
Dim n As Integer = op.outDataTable.Rows.Count - 1
For i = 0 To n Step i + 1
excel.Cells(i, 5) = op.outDataTable.Rows(i).Item(5).Value.ToString()
Next

古今多少事 2011-06-01
  • 打赏
  • 举报
回复
参考:
http://topic.csdn.net/u/20110512/19/b43107c0-5f14-465d-b5f8-02ff7db968c2.html
于之 2011-06-01
  • 打赏
  • 举报
回复
相当于没答.
cyf4 2011-06-01
  • 打赏
  • 举报
回复
一直循环,直到单元格内容为空

16,720

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧