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的某一列的所有记录呢? 请指点,谢谢!
...全文
345 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
  • 打赏
  • 举报
回复
一直循环,直到单元格内容为空
源码链接: https://pan.quark.cn/s/8ddf8a1c92f9 **libcurl用于获取大型文件**libcurl作为一个开源的C语言库,提供了一系列的API来处理与URL相关的任务,涵盖了HTTP、FTP、SMTP等多种网络协议的应用。在执行大型文件的下载操作时,libcurl展现出卓越的性能表现和高度的灵活性,能够高效地管理大文件传输过程,有效预防内存溢出及其他潜在问题。**libcurl的基础操作**libcurl的基础应用包括以下几个环节:1. **初始化**:需要借助`curl_global_init()`函数来启动libcurl的工作环境。2. **建立会话句柄**:通过`curl_easy_init()`函数创建一个会话句柄,该句柄将用于后续所有的操作流程。3. **配置选项**:运用`curl_easy_setopt()`函数来设定多种参数,例如目标URL、超时时间、重试次数以及数据写入的回调函数等。4. **执行请求**:调用`curl_easy_perform()`函数来实施下载操作。5. **释放资源**:使用`curl_easy_cleanup()`函数来释放已经占用的资源。**获取大型文件时的重要设置**1. **数据写入回调函数**:在处理大型文件下载时,通常不希望一次性将整个文件载入内存。可以配置`CURLOPT_WRITEFUNCTION`选项,指定一个回调函数来处理接收到的数据片段,这样libcurl在接收到数据时会调用该函数,使得我们可以按需将数据写入文件或缓冲区。2. **缓冲策略**:可以设定缓冲区的大小(比如,通过`CURLOPT_BUFFERSIZE`),来控制每次接收数据的数量,从而优化内存...

16,718

社区成员

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

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