如何把 Excel 中的数据表导入到VB中的 listview 控件 5

如何把Excel中的数据表导入到VB中的listview控件中并显示出来代码怎么写啊..没有头绪...可否讲得再详细一点..具体代码是什么?这个代码好像不太符合要求的..... 如何把 Excel 中的数据表导入到VB中的 listview 控件中并显示出来

代码怎么写啊..没有头绪...
可否讲得再详细一点..具体代码是什么?这个代码好像不太符合要求的..麻烦了.
展开
 我来答
AnotherSilence
2008-11-06 · 超过26用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:83万
展开全部
先把Excel中的数据导入到dataTable里面,然后使 listView的 dataSource属性=该 datatable.
怎么把Excel里的数据导入到 dataTable 中,网上有很多介绍。
我最近刚写了一个,你可以参考参考。直接copy过来的,没有加工冗余信息。
Public Function ReadExcel(ByVal fileName As String) As DataTable

Dim oXLApp As Excel.Application
Dim oXLBook As Excel.Workbook
Dim oXLSheet As Excel.Worksheet

oXLApp = New Excel.Application
oXLBook = oXLApp.Workbooks.Open(fileName)

'oXLBook.Activate()
'oXLSheet = oXLBook.Application.Worksheets.Item(1)
'oXLSheet.Activate()
oXLSheet = oXLBook.ActiveSheet

Dim dt As New DataTable

Dim dc As DataColumn

dc = New DataColumn
dc.ColumnName = "订单编号"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "起运地"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "目的地"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "寄件时间"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "收件时间"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "寄件客户编号"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "寄件客户"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "收件客户编号"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "收件客户"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "录单重量"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "实际重量"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "体积"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "件数"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "寄件人"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "寄件人联系电话"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "寄件地址"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "收件人"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "收件人联系电话"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "收件地址"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "运输公司编号"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "运输公司"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "运输方联系人"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "运输方联系电话"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "运输公司地址"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "运输方式"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "运输里程"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "计费方式"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "付款方式"
dt.Columns.Add(dc)

dc = New DataColumn
dc.ColumnName = "备注"
dt.Columns.Add(dc)

Dim dr As Data.DataRow

Dim da As New OrderDA
Dim dt2 As New DataTable

For i As Integer = 2 To oXLSheet.UsedRange.Rows.Count

dr = dt.NewRow()

With oXLSheet

dr.Item(0) = .Cells(i, 1).value
dr.Item(1) = .Cells(i, 2).value
dr.Item(2) = .Cells(i, 3).value
dr.Item(3) = .Cells(i, 4).value
dr.Item(4) = .Cells(i, 5).value

dt2 = da.Search("sendCompanyNo", " and sendCompany = '" & .Cells(i, 6).value & "' ", "").Tables(0)
If dt2.Rows.Count > 0 Then
dr.Item(5) = dt2.Rows(0)(0)
Else
dr.Item(5) = "C100000"
End If

dr.Item(6) = .Cells(i, 6).value

dt2 = da.Search("revCompanyNo", " and revCompany = '" & .Cells(i, 7).value & "' ", "").Tables(0)
If dt2.Rows.Count > 0 Then
dr.Item(7) = dt2.Rows(0)(0)
Else
dr.Item(7) = "C100000"
End If

dr.Item(8) = .Cells(i, 7).value

If IsNumeric(.Cells(i, 8).value) = False Then
MsgBox("Excel第" + i.ToString + "行第8列'录单重量'必须为数字!")
oXLApp.Quit()
oXLApp = Nothing
Return Nothing
Else
dr.Item(9) = .Cells(i, 8).value
End If

If IsNumeric(.Cells(i, 9).value) = False Then
MsgBox("Excel第" + i.ToString + "行第9列'实际重量'必须为数字!")
oXLApp.Quit()
oXLApp = Nothing
Return Nothing
Else
dr.Item(10) = .Cells(i, 9).value
End If

If IsNumeric(.Cells(i, 10).value) = False Then
MsgBox("Excel第" + i.ToString + "行第10列'体积'必须为数字!")
oXLApp.Quit()
oXLApp = Nothing
Return Nothing
Else
dr.Item(11) = .Cells(i, 10).value
End If

If IsNumeric(.Cells(i, 11).value) = False Then
MsgBox("Excel第" + i.ToString + "行第11列'件数'必须为数字!")
oXLApp.Quit()
oXLApp = Nothing
Return Nothing
Else
dr.Item(12) = .Cells(i, 11).value
End If

dr.Item(13) = .Cells(i, 12).value
dr.Item(14) = .Cells(i, 13).value
dr.Item(15) = .Cells(i, 14).value

dr.Item(16) = .Cells(i, 15).value

dr.Item(17) = .Cells(i, 16).value

dr.Item(18) = .Cells(i, 17).value

dt2 = da.Search("transCompanyNo", " and transCompany = '" & .Cells(i, 18).value & "' ", "").Tables(0)
If dt2.Rows.Count > 0 Then
dr.Item(19) = dt2.Rows(0)(0)
Else
dr.Item(19) = "C100000"
End If

dr.Item(20) = .Cells(i, 18).value
dr.Item(21) = .Cells(i, 19).value
dr.Item(22) = .Cells(i, 20).value
dr.Item(23) = .Cells(i, 21).value
dr.Item(24) = .Cells(i, 22).value
dr.Item(25) = .Cells(i, 23).value
dr.Item(26) = .Cells(i, 24).value
dr.Item(27) = .Cells(i, 25).value
dr.Item(28) = .Cells(i, 26).value

dt.Rows.Add(dr)

End With

Next

oXLApp.Quit()
oXLApp = Nothing

Return dt
End Function

呵呵,代码只是个参考例子而已,我直接copy过来的,都没加工。基本思路是先根据Excel 表格的内容构造一个DataTable,例子中很多类似:
dc = New DataColumn
dc.ColumnName = "订单编号"
dt.Columns.Add(dc)
的就是构造Datable的列。 然后将 Excel表格里的每个单元格的内容逐个赋值给Datable,如:
dr.Item(0) = .Cells(i, 1).value 就是把Excel第二行第一列的值赋值给DataTable某行第0列。
最后要把 Datable绑定到你要的listview 控件中,只要使listView的DataSource属性=求出来的DataTable即可。
在操作Excel之前,先要打开Excel,操作之后,要关闭之。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kuer901021
2008-11-04 · TA获得超过101个赞
知道答主
回答量:251
采纳率:0%
帮助的人:84.3万
展开全部
看下它的扩展名对么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
揭莞然H7
2008-11-04 · TA获得超过5683个赞
知道小有建树答主
回答量:893
采纳率:0%
帮助的人:673万
展开全部
学习中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式