2011-10-05 121 views
1

我从来没有从VB.NET的excel文件中读取过,所以如果有什么关闭,那么抱歉。使用VB.NET按列读取excel数据

我下载从具有8列 一个厂商FTP服务的.csv文件(式# - #mfr.item - 描述 - 金属型 - 供应 - 中间重量 - 总重量 - 零售值)

我试图检索行中的所有数据波纹管风格#和零售价值 大约有4,649行

我不知道如何做到这一点。

我使用的Microsoft.Office.Interop.Excel加载Excel文件:

Dim eApp As excel.Application 
Dim eBook As excel.Workbook 
Dim eSheet As excel.Worksheet 
Dim eCell As excel.Range 

eApp = New excel.Application 
eBook = eApp.Workbooks.Open(localFile) 
eSheet = eBook.Worksheets(1) 
eCell = eSheet.UsedRange 

谁能帮助我什么我下一步需要做什么?我已经浏览了几个小时的谷歌,并没有得到任何工作,只是返回一个对象名称。

感谢

回答

3

你是如此的几乎没有!这有两种方法。

路#1:添加以下,eCell = eSheet.UsedRange后:

Dim eCellArray as System.Array = eCell.Value 

然后经由eCellArray(r,c),其中r是行和c得到的值是该列(每个从1开始)。

路#2:用这个表达式得到一个单元格的值:

CType(eCell(r,c),Excel.Range).Value ' For Option Strict, or just to get IntelliSense to work. 

或者干脆

eCell(r,c).Value 

HTH

+0

感谢方式#2为我工作(严格选项)再次感谢 – Jeff

1

可以,例如,进入细胞在这样一个范围:

Dim iRow as Integer = 1 
Dim iCol as Integer 
Dim rng as Excel.Range = getYourRangeFromSomewhere() 
Dim rngCell as Excel.Range 

For iCol = 1 To 10 
    rngCell = rng.Cells(iRow,iCol) 
    Debug.Print rngCell.Value 
Next 
+0

没有通过例如rs.fields列名调用它['名称'] ? – Jeff

+0

不,excel范围基本上是一个二维数组。不像数据库中的表格那样结构化。 – Roman