2013-05-03 83 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