Ошибка: <target>.ColumnName и <source>.ColumnName имеют конфликтующие свойства: Несоответствие свойства DataType - PullRequest
13 голосов
/ 11 февраля 2009

Я пытаюсь объединить несколько файлов Excel с помощью параметра DataTable.Merge ()

    For Each fileName As String In Directory.GetFiles("C:\TEMP\.", "*.xls")
        Dim connectionString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=""Excel 8.0;HDR=NO;IMEX=1;""", fileName)
        Dim adapter As New OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString)
        Dim ds As New DataSet
        adapter.Fill(ds, "anyNameHere")
        Dim TempTable As DataTable
        TempTable = ds.Tables.Item("anyNameHere")
        table1.Merge(TempTable)
        MsgBox(fileName)
    Next
    DataGridView1.DataSource = table1
    MsgBox(table1.Rows.Count)

Но выдает следующую ошибку при объединении

<target>.ColumnName and <source>.ColumnName have conflicting properties: DataType property mismatch.

Это связано с тем, что один столбец в Excel читается как текст, а другой - как двойной, тогда как оба имеют числовые значения.

Чтобы избежать этого, я также упомянул IMEX = 1 в строке подключения, все еще получая эту ошибку.

Ответы [ 2 ]

33 голосов
/ 11 февраля 2009

Использовать MissingSchemaAction.Ignore в качестве параметра MissingSchemaAction в Merge

table1.Merge(TempTable, True, MissingSchemaAction.Ignore)
0 голосов
/ 11 февраля 2009

Если столбцы числовые, исправьте файл xls, считая этот столбец текстовым.
Разве вы не хотите, чтобы столбцы были структурно одинаковыми при объединении данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...