Получить данные из MS Excel в asp.net

Я могу получить данные из 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.

Это тоже не большая проблема, но главная проблема в том, что когда в первой строке в первой строке пустая ячейка, я не получаю пустую ячейку заголовка в GridView. Вместо этого я получаю текст вроде F2.

Кто-нибудь знает решение?

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 в абзаце, связанном с Excel 2003, вы можете прочитать

"HDR=Yes"; указывает, что первая строка содержит имена столбцов, а не данные. "HDR=No;" указывает на обратное.

Другие вопросы по тегам