2009-02-11 352 views
9

我想合并多个Excel中使用DataTable.Merge文件()选项错误:<target> .ColumnName和<source> .ColumnName有冲突的属性:数据类型属性不匹配

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中的一列被作为文本读取而另一列作为double而两者都有数字值。

为了避免这种情况,我还在连接字符串中提到了IMEX = 1,但仍然出现此错误。

回答

26

在合并

table1.Merge(TempTable, True, MissingSchemaAction.Ignore) 
+0

谢谢,它工作 – Venkat 2016-06-21 13:24:39

0

如果这些列是数字,请更正将该列作为文本处理的xls文件。
当您合并数据时,您不希望列在结构上相同吗?

+1

都使用MissingSchemaAction.Ignore作为MissingSchemaAction参数是文本类型。但是当使用ADO读取文件时,它通过查看文件数据来决定列。 http://www.connectionstrings.com/excel-2007 对于哪个我高度添加IMEX = 1,但它仍然不工作 – 2009-02-11 07:26:00

相关问题