0

所以我有按国家/地区提供供应商的数据,其中供应商信息因国家/地区而异。600 个供应商,将超过 35 个国家(每个供应商每个国家 15 个属性)。excel 数据表与此类似:

SupplierID   SupplierName USsupplierCategory USsupplierCategoryCode UKSupplierCategory ...
1            Sup1         Beverages          1                      Ropes
3            Sup5         Ladders            46                     Small Ladders

如果我能想出一个简单的方法将这个excel数据放入一个数组中(如果格式化很快,即使复制和粘贴也可以工作,因为我最多每个月只需要这样做一次)然后我可以循环遍历它并构建需要从数组中取出的对象。但是我找不到一种简单的方法来使用 excel 数据构建一个数组,而无需对数组赋值进行大量格式化。

我对 VB.net 还很陌生,仍然是一名业余程序员,我似乎无法设想一个简单的解决方案。

数组是要走的路吗?我是否应该将每一行作为字符串循环并按制表符分隔数据并以这种方式分配数据?

如果我太含糊,我道歉,让我知道,如果需要,我会提供更具体的细节和一些代码。

4

1 回答 1

0

我将使用的高级方法如下:

1) 定义您的供应商对象

2)为数据表的每一行创建一个供应商对象并将其添加到集合中,例如供应商对象列表

完成此操作后,您可以轻松地遍历您的供应商对象集合来做任何您喜欢的事情。

详细做法:

1)定义您的供应商对象:

Public Class Supplier
    Public property SupplierID as integer
    Public Property SupplierName as string
    Public Property USsupplierCategory as string
    Public property USsuppliercategorycode as integer
    Public property UKSupplierCategory as string
End Class

2)将您的excel对象读入数据表

这有点棘手。正如 Tim 所说,将您的 excel 文件保存为 csv 然后读取它们更容易。这是因为在 csv 中易于读取,但在 excel 文件中读取也很复杂。它们可以是 xls 或 xlsx 格式,并决定哪一个可能有问题。我们还可以进入 COM 对象问题等。

如果您要坚持阅读 excel,我建议使用 Linq2Excel,因为该库会为您处理 xls / xlsx 问题。这是我根据您返回供应商对象列表的示例电子表格敲出的一些示例代码:

Imports LinqToExcel
Imports Remotion.Data.Linq
Imports System.Data
Imports System.Linq

Public Class ReadInExcelData

Public Shared Function GetSupplierListFromSupplierExcel() As List(Of Supplier)
    Dim excel As ExcelQueryFactory = New ExcelQueryFactory("C:\Users\YourUserName\Desktop\ExampleData.xls")
    Dim suppliers = From c In excel.Worksheet
                    Select c

    Dim list As New List(Of Supplier)

    For Each supplier In suppliers
        list.Add(New Supplier(supplier.Item(0),
                              supplier.Item(1),
                              supplier.Item(2),
                              supplier.Item(3),
                              supplier.Item(4)))
    Next

    Return list
End Function
End Class

您可以在此处获取 linqtoexcel 库:http ://code.google.com/p/linqtoexcel/

于 2013-06-16T13:03:17.377 回答