0

我可以将数据从 excel 检索到 GridView。

下面是代码:

If Extension = "xls" Then

    connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileUploadPath & sender.text & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2"""

ElseIf Extension = "xlsx" Then

    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FileUploadPath & sender.text & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2"""

End If

Dim query As String = "SELECT * FROM [Sheet1$]"

Dim conn As New OleDbConnection(connString)

If conn.State = ConnectionState.Closed Then

    conn.Open()

End If

Dim cmd As New OleDbCommand(query, conn)

Dim da As New OleDbDataAdapter(cmd)

Dim ds As New DataSet

da.Fill(ds)

gvReadFiles.DataSource = ds.Tables(0)

gvReadFiles.DataBind()

da.Dispose()

conn.Close()

conn.Dispose()

但是 excel 中的第一行文本成为 GridView 中的标题文本。

这也不是一个大问题,但主要问题是当 excel 的第一行中的任何单元格为空时,我在 GridView 中没有得到相同的标题单元格。取而代之的是,我得到了一些像 F2 这样的文本。

有谁知道解决方案?

4

1 回答 1

1

如果您的 Excel 文件的第一行包含数据而不是列的标题,那么您的连接字符串应更改为

connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileUploadPath & _ 
             sender.text & ";Extended Properties=""Excel 8.0;HDR=NO;IMEX=2"""

http://www.connectionstrings.com/excel#microsoft-jet-ole-db-4-0与 Excel 2003 相关的段落中,您可以阅读

“HDR=是的;” 表示第一行包含列名,而不是数据。“HDR=否;” 表示相反。

于 2013-05-03T19:50:26.307 回答