2013-05-03 82 views
0

我可以从excel中检索数据到GridView。从asp.net中的MS Excel获取数据

下面是代码:

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一样的文字。

有谁知道解决方案?

+0

你可以发布GridView的代码吗? – Melanie 2013-05-03 19:37:01

+0

没有代码为gridview。在上面的代码中,gvReadFiles是一个GridView。 – Vishal 2013-05-03 19:38:48

+0

我的意思是在你的aspx页面上的gridview的asp标记 – Melanie 2013-05-03 19:43:01

回答

1

如果您的Excel文件的第一行包含数据,而不是你的列标题,然后在连接字符串应该http://www.connectionstrings.com/excel#microsoft-jet-ole-db-4-0在与Excel 2003中的段落改为

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

在这里,你可以阅读

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

+0

非常感谢。 – Vishal 2013-05-03 20:01:47