2009-02-11 7 views
9

मैं विलय करने के लिए कई 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. 

यह एक्सेल में एक कॉलम के कारण पाठ के रूप में पढ़ा जाता है और दूसरा डबल के रूप में होता है जबकि दोनों में संख्यात्मक मान होते हैं।

इससे बचने के लिए मैंने कनेक्शन स्ट्रिंग में IMEX = 1 का भी उल्लेख किया है, फिर भी यह त्रुटि प्राप्त हो रही है।

उत्तर

26

MissingSchemaAction.Ignore उपयोग MissingSchemaAction के रूप में मर्ज

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

धन्यवाद, यह – Venkat

+1

नोट काम किया जाता है: सवाल-जवाब VB.Net की है , इसलिए सही इस्तेमाल पूंजीकृत के लिए है –

0

यदि कॉलम संख्यात्मक हैं, तो उस कॉलम को टेक्स्ट के रूप में वर्णित करने वाली xls फ़ाइल को सही करें।
क्या आप डेटा मर्ज करते समय कॉलम को संरचनात्मक रूप से समान नहीं करना चाहते हैं?

+1

दोनों में पैरामीटर प्रकार पाठ की कर रहे हैं। लेकिन जब एडीओ का उपयोग करके फ़ाइलों को पढ़ा जाता है तो यह फ़िल्टर डेटा को देखकर कॉलम का निर्णय लेता है। http://www.connectionstrings.com/excel-2007 जो मैं इ एक्स = 1 जोड़ा hv लेकिन फिर भी यह काम नहीं कर रहा –

संबंधित मुद्दे