Laden...

Excelfile über OleDB öffnen, zeigt weniger Datensätze an als in File vorhanden

Erstellt von oehrle vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.294 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 14 Jahren
Excelfile über OleDB öffnen, zeigt weniger Datensätze an als in File vorhanden

Hallo,

ich öffne ein Excelfile mit OleDB und lege die daten in ein dataSet ab. Später verwende ich das dataSet mit der abgelegten Exceltabelle um Daten überprüfen zu können. Mein Excelfile hat 371 Zeilen, im dataset werden mir aber nur 357 Daetnsätze angezeigt. Hab schon einiges geprüft, doch den Hintergrund dafür habe ich noch nicht gefunden. Hat jeman eine Idee? Leerzeilen habe ich alle in Excel gelöscht, dachte erst es liegt daran.


  /// <summary>
        /// Holt die Daten aus einer Excel-Datei in ein DataSet
        /// </summary>
        /// <param name="excelFile">Pfad zur Excel-Datei</param>
        /// <param name="headers">Haben die Tabellenspalten Überschriften</param>
        /// <returns>DataSet</returns>
        private DataSet GetExcelDataSet(string excelFile, bool headers)
        {
            string tableName = null;
            DataSet ds = new DataSet();

            OleDbConnection con = new OleDbConnection();
            con.ConnectionString = "Data Source=" + excelFile +
                ";Provider=Microsoft.Jet.OLEDB.4.0;";

            if (headers)
                con.ConnectionString += @"Extended Properties=""Excel 8.0;HDR=Yes""";
            else
                con.ConnectionString += @"Extended Properties=""Excel 8.0;HDR=No""";

            con.Open();
            DataTable_Word sheets = con.GetOleDbSchemaTable(
                OleDbSchemaGuid.Tables,
                new object[] {null, null, null, "TABLE" });

            foreach (DataRow sheet in sheets.Rows)
            {
                tableName = sheet["Table_Name"].ToString();
                string sql = "SELECT * FROM [" + tableName + "]" + "ORDER BY F0";
                //OleDbDataAdapter adap = new OleDbDataAdapter(sql, con);  // wird global angelegt, wegen update in >> btn_DatenPrüfen_Click() <<
                adap = new OleDbDataAdapter(sql, con);
                adap.Fill(ds, tableName);
            }

            bs_excel = new BindingSource(ds, tableName);
            tabellenname_Excel = tableName;

            
            con.Close();
            OpenExcelFile(excelFile);
            return ds;
        }

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 14 Jahren
War falsches Sheet angewählt

Muß wohl irgend eine Excel-Macke sein, mit der Kopie. Da fehlen einfach ein paar Datenreihen. Der Namen vom Blatt endet mit einem $-Zeichen.