AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C++ Builder: Excel Datei per ADO erstellen und in DBGrid laden
Thema durchsuchen
Ansicht
Themen-Optionen

Builder: Excel Datei per ADO erstellen und in DBGrid laden

Ein Thema von Mordhorst3k · begonnen am 18. Jul 2021 · letzter Beitrag vom 28. Jul 2021
 
Mordhorst3k

Registriert seit: 18. Jul 2021
4 Beiträge
 
#1

Builder: Excel Datei per ADO erstellen und in DBGrid laden

  Alt 18. Jul 2021, 03:49
Hi,

vorweg, ich benutze kein Delphi, sondern C++ Builder 10.3.3 CE. Eine neuere Version gibt es leider nicht.

Ich habe ein Problem beim erstellen einer Excel Datei via ADO. Aktuell verwende ich den OleDB von Access 2010. Da ich .xls / .xlsx / .xlsm einlesen kann, scheinen die ConnectStrings zu funktionieren.

Wenn ich also ADOCommand benutze, funktioniert das erstellen zwar, aber man muss Create Table offensichtlich mit Parameter aufrufen und da wird mir dann ein Header in der Tablle eingefügt, den ich da eigentlich nicht haben will. Löschen geht auch nicht, da ISAM Einschränkung.

Code:
ADOCommand1->CommandText = "Create Table Tabelle1(id integer, name char(80))";
Das habe ich via Google gefunden, das funktioniert, aber da wird mir eben der Header eingefügt. Wenn ich id/name weglasse, gibt es die die Fehlermeldung: "Syntaxfehler in Felddefinition". Möchte eigentlich nur eine frische Tabelle erstellen, ohne Inhalt jeglicher Art, mehr nicht. Anzumerken ist, dass ich selbst kein Excel habe, sondern nur LibreOffice.

Lässt man "Create Table" weg, wird die Datei zwar erstellt, aber beim beenden wieder gelöscht.

Hier mal der Code den ich benutze.


Code:
   ADOConnection1->Connected = false;
   ADOTable1->Active = false;

   AnsiString Provider, Extended, Persist;

   AnsiString FileName = "F:\\test.xls";
   // AnsiString FileName = "F:\\test.xlsx";

   AnsiString DataSource = "Data Source=" + FileName + ";";

   Provider = "Provider=Microsoft.Jet.OLEDB.4.0;";
   Extended = "Excel 8.0;HDR=No;";
   Persist = "Persist Security Info=False;Jet OLEDB:Engine Type=35;";

   // Provider = "Provider=Microsoft.ACE.OLEDB.12.0;";
   // Extended = "Extended Properties=Excel 12.0 XML;HDR=No;";
   // Persist = "Persist Security Info=False;Jet OLEDB:Engine Type=38;"; // mit Type 35 lässt sich Datei in Excel nicht öffnen?? Unbekanntes Dateiformat.

   ADOConnection1->ConnectionString = Provider + DataSource + Extended + Persist;
   ADOConnection1->Connected = true;

   ADOCommand1->CommandText = "Create Table Tabelle1(id integer, name char(80))";

   ADOCommand1->Execute( );

   ADOConnection1->Connected = false;
   ADOConnection1->Connected = true;

   ADOTable1->TableName = "Tabelle1$";
   ADOTable1->Active = true;
   lblCount2->Caption = "Record Count: " + IntToStr( ADOTable1->RecordCount );

   ADOTable1->Active = false;
   ADOTable1->Active = true;

Danke im voraus für mögliche Anregungen.

Geändert von Mordhorst3k (18. Jul 2021 um 03:51 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz