【问题标题】:Get Data from MS Excel in asp.net在 asp.net 中从 MS Excel 获取数据
【发布时间】:2013-05-03 19:33:12
【问题描述】:

我可以将数据从 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 这样的文本。

有人知道解决办法吗?

【问题讨论】:

  • 你能发布 GridView 的代码吗?
  • 没有网格视图的代码。在上面的代码中,gvReadFiles 是一个 GridView。
  • 我的意思是你的aspx页面上gridview的asp标记
  • 哦,对不起。这里是
  • 所以你没有在你的gridview中定义任何列?

标签: asp.net vb.net excel gridview


【解决方案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=否;”表示相反。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 2012-09-24
    相关资源
    最近更新 更多