【发布时间】:2013-01-10 15:43:52
【问题描述】:
我希望这里有人可以为我指明正确的方向 - 我正在尝试创建一个相当强大的实用程序,以尽快将 Excel 工作表(可能是 .xls 或 .xlsx)中的数据读取到 DataTable 中并且尽可能瘦。
我在 VB 中提出了这个例程(尽管我对 C# 的好答案同样满意):
Public Shared Function ReadExcelIntoDataTable(ByVal FileName As String, ByVal SheetName As String) As DataTable
Dim RetVal As New DataTable
Dim strConnString As String
strConnString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & FileName & ";"
Dim strSQL As String
strSQL = "SELECT * FROM [" & SheetName & "$]"
Dim y As New Odbc.OdbcDataAdapter(strSQL, strConnString)
y.Fill(RetVal)
Return RetVal
End Function
我想知道这是否是最好的方法,或者是否有更好/更有效的方法(或者只是更智能的方法 - 也许是 Linq/本机 .Net 提供程序)来代替使用?
另外,只是一个快速而愚蠢的附加问题 - 我是否需要包含诸如 y.Dispose() 和 y = Nothing 之类的代码,或者因为变量应该在例程结束时消失,所以需要处理,对吧?
谢谢!!
【问题讨论】:
-
我会使用EPPlus,它是
LoadFromDatatable:stackoverflow.com/a/8309265/284240 注意它只支持xlsx。 -
谢谢,@Tim - 两个问题 - 1) 这对
.xls有用吗?和 2) 这会证明比我目前的例行程序更快/更少占用资源吗? -
1.No 2.Maybe(它非常快)因为我不知道它并且它不支持旧的 excel 版本,所以我刚刚在这里发表了评论。
-
@TimSchmelter
LoadFromDatatable的EPPlus如何将 Excel 文件加载到数据表中?据我所知,此方法支持将数据表写入Excel文件 -
@user838204:很好,我认为我当时误解了要求。如果您正在寻找一种方式,您可能想看看我曾经发布过的this approach。