Mcmish Ответов: 4

Ошибка со строкой подключения Excel (HDR=Yes)


привет ребята,

Мне нужна помощь в понимании того, что может быть причиной того, что я получаю эту ошибку с моей строкой Excelconnection, когда я устанавливаю HDR=Yes, я продолжаю сталкиваться с ошибкой d ниже, но с HDR=No, она возвращает F1, F2,......:

Ошибка: ссылка на объект не установлена на экземпляр объекта?


Dim XConn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & UZO.FileName & ";" & " Extended Properties=Excel 8.0;Imex=2;HDR=Yes")



Пожалуйста, помогите, потому что мне нужно, чтобы он возвращал d 1-ю строку в качестве заголовков/столбцов, а не F1, F2 .....

Спасибо ребятам заранее

4 Ответов

Рейтинг:
2

Mcmish

Привет Дэйв Кресковяк,

Windows 7, 32 бит, MS Office 2007 в моей системе, но Excel, который я использую для этой цели, - это шаблон от компании Webtma, США, разработанный в виде файла базы данных и являющийся MS Excel 1997-2003.

Спасибо за ответ. Ошибка не указывает на какую-либо конкретную строку кода, вместо этого всякий раз, когда я запускаю программу d и устанавливаю HDR=YES, она просто выводит ошибку d и возвращает пустой вывод.

Я пробовал разные способы, я даже создал функцию для строки подключения, но все равно не wotking.

Мои коды ниже:

<pre lang="vb">Private _blnMixedData As Boolean = True
    Private _blnHeaders As Boolean = True</pre>



Private Function ExcelConnection() As String
            Return "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & SVTest & ";" & "Extended Properties=" & Convert.ToChar(34).ToString() & "Excel 8.0;" & "HDR=YES;" & "Imex=2;" & Convert.ToChar(34).ToString()
        End Function




Private Function ExcelConnection() As String
           Return "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & SVTest & ";" & "Extended Properties=" & Convert.ToChar(34).ToString() & "Excel 8.0;" & ExcelConnectionOptions() & Convert.ToChar(34).ToString()
       End Function



Private Function ExcelConnectionOptions() As String
            Dim strOpts As String = ""
            If Me.MixedData = True Then
                strOpts += "Imex=2;"
            End If
            If Me.Headers = True Then
                strOpts += "HDR=Yes;"
            Else
                strOpts += "HDR=No;"
            End If
            Return strOpts
        End Function




Private Sub RetrieveSheetnames()
       Try
           Me.ComboBox1.Items.Clear()

           If _exr IsNot Nothing Then
               _exr.Dispose()
               _exr = Nothing
           End If

           _exr = New ExcelReader()
           _exr.ExcelFilename = ExcelFilename
           _exr.Headers = True
           _exr.MixedData = True
           Dim sheetnames As String() = Me._exr.GetExcelSheetNames()
           Me.ComboBox1.Items.AddRange(sheetnames)
       Catch ex As Exception
           MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
       End Try
   End Sub




Ваша любезная помощь будет весьма признательна.

Большое спасибо


Dave Kreskowiak

Моя вина. Ваша исходная строка кода может вызвать эту ошибку. Если переменная УЗО ни в чем. Вы пытаетесь получить значение Filename из экземпляра объекта UZO (что бы это ни было), а UZO на самом деле ничто, а не экземпляр.

Dave Kreskowiak

Вместо того чтобы полагаться на глобальные переменные, попробуйте передать фактические параметры. Очень мало оснований полагаться на глобальные переменные класса.

Mcmish

Спасибо Дэйв, я apprecaites УР ответы, я думаю, я пробовал реализации, но приносит все же ошибка.

Извините, что беспокою вас больше,у меня есть listview1, который содержал список заголовков столбцов с флажками, теперь я хочу вернуть реальные данные, принадлежащие Listview1. checkedItems к DataGridview1 в виде строк. пожалуйста, помогите с правильным синтаксисом, пожалуйста. спасибо

Ниже приведен код, который извлекает имена столбцов в listview:

Меня.ListviewBindingSource.Источник данных = _dt.Столбцы
Для Каждого Столбца В ListviewBindingSource
Мыши listview1.Предметы.Добавить (Столбец.Метод toString()
Следующий

Какой синтаксис я могу использовать, чтобы получить данные из listview1.checkeditems и вернуть их как DataRow???

Рейтинг:
2

Maciej Los

Взгляните на здесь[^] и узнайте больше о вариантах HDR и IMEX.
Доступны версии Excel здесь[^].


Рейтинг:
1

Member-1233233

Microsoft признала, что опция ODBC HDR=YES/NO не будет работать, так как драйвер просто игнорирует ее и предлагает вместо нее использовать OLEDB ...

https://support.microsoft.com/en-us/kb/288343


Рейтинг:
0

Dave Kreskowiak

Эта строка кода не может породить ошибку. Где находится код, в котором происходит ошибка?

Какую версию Windows вы используете? 32 или 64 бит? Какая версия Office?

Первая проблема в одной строке кода, которую вы опубликовали, заключается в том, что значение расширенных свойств должно быть заключено в кавычки, например:

Dim xConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & UZO.FileName & ";Extended Properties=""Excel 8.0;Imex=2;HDR=Yes""")