2012-03-28 10 views
0

Ich exportiere eine .xls-Datei in Datentabelle. Unten sind mein Code:Exportieren von XLS in DataTable - Zeilen unsortiert

private DataTable ExportXlsToDt(String path) 
{ 
    OleDbConnection MyConnection = null; 
    DataSet DtSet = null; 
    OleDbDataAdapter MyCommand = null; 
    MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties=Excel 8.0;"); 

    ArrayList TblName = new ArrayList(); 

    MyConnection.Open(); 
    DataTable schemaTable = MyConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); 
    foreach (DataRow row in schemaTable.Rows) 
    { 
     TblName.Add(row["TABLE_NAME"]); 
    } 

    MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [" + TblName[0].ToString() + "]", MyConnection); 
    DtSet = new System.Data.DataSet(); 

    MyCommand.Fill(DtSet); 
    MyCommand.FillSchema(DtSet, SchemaType.Source); 

    DataTable dt = new DataTable(); 
    dt = DtSet.Tables[0]; 
    MyConnection.Close(); 
} 

Allerdings sind die Zeilen nach dem Export nicht so sortiert wie Zeilen vor dem Export. Beispiel:

Original-

row A 

row B 

row C 

row D 

Nach Export

row D 

row C 

row A 

row B 

Kann jemand mir raten dazu?

Danke.

Antwort

2

Sie haben keine 'Order by' -Klausel auf Ihrer Auswahl; Daher ist die Reihenfolge der Zeilen nicht garantiert.
Fügen Sie eine MyCommand 'Order by' Klausel hinzu und Sie sollten gut sein.