AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten aus InterbaseDB in "vorhandene" Excel-Datei schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus InterbaseDB in "vorhandene" Excel-Datei schreiben

Ein Thema von spoona · begonnen am 24. Mär 2005 · letzter Beitrag vom 25. Mär 2005
Antwort Antwort
spoona

Registriert seit: 2. Mär 2005
48 Beiträge
 
#1

Daten aus InterbaseDB in "vorhandene" Excel-Datei

  Alt 24. Mär 2005, 20:10
Datenbank: interbase • Zugriff über: Interbase
Hallo,

also ich habe schon vieles durchgeschaut, bin jetzt aber total durcheinander.....
Was ich will:
Ich möchte gerne Daten aus einer Db in eine vorhandene Excel-Datei schreiben.
Dabei soll die vorhandene Datei als Muster dienen, welches dann mit Daten gefüllt wird. Dann möchte ich es natürlich unter einem anderen Namen abspeichern. Ich weiß jetzt aber nicht, ob ich das ganze über OLE realisieren soll(Excell ist ja vorhanden) oder die Delphi Steuerkomponente in "Server" vewenden soll
(Verwende Delphi 7). Und ich habe auch keine Ahnung, wie ich es jetzt im Quellcode realisieren muss und wodrauf ich achten sollte. Was ist denn ein Workbook?-->Die Datei(Arbeitsbereich)?
Mein erster Versuch war jetzt:
Delphi-Quellcode:

procedure TFrm_Bestellung.BitBtn4Click(Sender: TObject);
var Excel: variant;
zeile,spalte:integer;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Workbooks.Add('c:\temp2\mappe1.xls');
  For zeile:=1 to 5 do
    For spalte:=1 to 5 do
      begin
        Excel.Cells[zeile,spalte].Value:='WERT aus DB'
      end;
  Excel.Quit;
end;
Also er macht ja schon eigentlich das, was ich will. Die Excel-Datei wird an den richtgen Stellen gefüllt und die anderen Daten in der Datei werden nicht gelöscht.Außerdem wird gefragt, ob ich die Datei speichern will--OK.Eigentlich will ich vorher angeben, wo es gespeichert werden soll.
Aber ist das jetzt auch sicher programmiert oder birgt es irgendwelche Gefahren?Sollte ich lieber die Komponente ExcelApllication verwenden, wenn ja was brauche ich noch dazu und wodrauf muss ich achten??

Ohh man das ist wieder viel, aber ich hoffe auf eine Antwort!
Vielen Dank für Eure Mühe
Gruß Spoona
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Daten aus InterbaseDB in "vorhandene" Excel-Da

  Alt 24. Mär 2005, 20:38
Zitat von spoona:
Ich möchte gerne Daten aus einer Db in eine vorhandene Excel-Datei schreiben.
Dabei soll die vorhandene Datei als Muster dienen, welches dann mit Daten gefüllt wird.
Inwiefern ist die Datei vorhanden ? Ist sie leer oder was ? Wenn sie leer ist, wieso ist sie dann überhaupt da ? 8) Schätze mal, am einfachsten wäre es, die DB Daten in eine Textdatei zu schreiben. Die erste Zeile enthält dabei die Definitionen, also quasi die Feldnamen. Hatte so was schon mal gemacht. Vielleicht war das aber auch Word.
Gruß
Hansa
  Mit Zitat antworten Zitat
spoona

Registriert seit: 2. Mär 2005
48 Beiträge
 
#3

Re: Daten aus InterbaseDB in "vorhandene" Excel-Da

  Alt 24. Mär 2005, 20:42
Hallo,

also die Datei ist nicht leer. Es geht darum eine Statistik zu erstellen.
Die Musterdatei ist also bereits formatiert und beinhaltet Spaltennamen.
Eine Textdatei ist da leider nich möglich.
Aber Vielen Dank für deine Antwort.

Gruß Spoona
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Daten aus InterbaseDB in "vorhandene" Excel-Da

  Alt 24. Mär 2005, 20:57
Was ist nicht möglich ? Ich will darauf hinaus, eine Datei zu erstellen aus Interbase heraus, in der die Spaltennamen aus der DB kommen und die Daten auch. Also 1. Zeile Spaltenname und alles dahinter die Daten. Das müßte sich automatisch einlesen und formatieren lassen.

Für XML und ganz sicher Word (Serienbrief) habe ich das schon gemacht. Excel ist nun mal anders, aber doch, das habe ich auch schon gemacht. Das ist auch kein Problem. Desweiteren empfehle ich Dir zu diesem Thema Lemmys Seite : www.delphi-tutorials.de Da ist ein Tuto dabei "Word und Excel Automation" in dem zwar wohl nicht dein Problem beschrieben wird, aber Lemmy sagt schon, worauf es ankommt.
Gruß
Hansa
  Mit Zitat antworten Zitat
spoona

Registriert seit: 2. Mär 2005
48 Beiträge
 
#5

Re: Daten aus InterbaseDB in "vorhandene" Excel-Da

  Alt 24. Mär 2005, 21:11
Also ich wollte nicht sagen, dass es nicht möglich ist.
Nur dass es nicht ist,was ich will bzw. machen MUSS!
Diese Datei muss eben danach weiter verarbeitet werden und dazu wird eben EXCEL benötigt.
Ich gehe jetzt aber davon aus, dass mein Quellcode soweit richtig ist.
Danke für deine Hilfe und deinen Link, den ich mir mal anschauen werde.

Gruß Spoona
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Daten aus InterbaseDB in "vorhandene" Excel-Da

  Alt 25. Mär 2005, 07:50
Hi !
Du machst das alles ganz richtig.
Ein Workbook ist die Datei(.xls), das Worksheet ist das Tabellenblatt.
Starte in Excel den Macrorecorder und führe die Dinge aus die du benötigst, zb Datei unter anderem Namen zu Speichern,
der Macrorecorder schreibt den VBA-Programmtext.
Diesen kann man dann sehr einfach als 'spranze' für das OLE-objekt verwenden.

Wenn Du deinem Prog einen RemoteDatamodul und TypeLibrary hinzufügst kannst Du dieses auch von Excel aus aufrufen und
Dinge realisieren die wirklich sehr nett sind, jedoch für Dein Problem augenblicklich nicht erforderlich.

Excel würde ich folgendermassen starten:
Delphi-Quellcode:
function TExcel.GetApplication:Variant;
begin
  if VarType(FExcelApp)=varEmpty then
  try
    FExcelApp:=GetActiveOleObject('Excel.Application');
    FExcelApp.Visible:=True;
  except
    FExcelApp:= CreateOleObject('Excel.Application');
    FExcelApp.Visible:=True;
  end;
  Result:=FExcelApp;
end;
falls Du mehr Info brauchts, sag's
Otto
  Mit Zitat antworten Zitat
spoona

Registriert seit: 2. Mär 2005
48 Beiträge
 
#7

Re: Daten aus InterbaseDB in "vorhandene" Excel-Da

  Alt 25. Mär 2005, 10:28
Hallo,

vielen Dank für deine Antwort, das mit dem Makro konnte mir echt weiterhelfen.
Bin jetzt schlauer. Zumindest weiß ich jetzt, dass ich kein sheet hinzufügen muss, da ich per Default
ja auf dem Ersten arbeite und keine weiteren brauche.Also habe ich folgenden Code realisiert, was auch sehr gut funktioniert:
Delphi-Quellcode:
var Excel: variant;
zeile,spalte:integer;
begin
  Excel := CreateOleObject('Excel.Application');// VIELLEICHT noch in deine Funktion auslagern, ist schöner!
  if FileExists('c:\temp2\test2.xls') then begin
    ShowMessage('File exists!')
    exit;
  end;
  Excel.Workbooks.Add('c:\temp2\Muster.xls');
  zeile:=1;
  TB_Kontengruppe.Open;
  TB_Kontengruppe.First;
  while (not (TB_Kontengruppe.Eof)) do begin
    if TB_KontengruppeNummer.Value > 12 then begin
      Excel.Cells[zeile,1].Value:=TB_KontengruppeBereich.Value;
      Excel.Cells[zeile,2].Value:=TB_KontengruppeNummer.Value-100;
      Excel.Cells[zeile,3].Value:=TB_KontengruppeNummer.Value-200;
      Excel.Cells[zeile,4].Value:=TB_KontengruppeNummer.Value-300;
      inc(zeile);
    end;
    TB_Kontengruppe.Next;
  end;
Excel.ActiveWorkbook.SaveAs('c:\temp2\test2.xls');
Excel.Quit;
Excel := Unassigned;
TB_Kontengruppe.Close;
end;
Wenn ich weitere Fragen habe dann melde ich mich einfach bei Dir.
Vielen Dank
Gruß Spoona
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:15 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