Announcement

Collapse
No announcement yet.

DBGrid in Excel-Datei speichern - Überhaupt möglich?!?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DBGrid in Excel-Datei speichern - Überhaupt möglich?!?

    Hallo Leute,

    ich hab mal wieder ein Problem. Und zwar möchte ich den Inhalt meines DBGrids so speichern, das ich die gespeicherte Datei mit Excel öffnen kann und dort als Tabelle vorliegen habe. Jedoch ist die Formatierung der Datei nicht Excel-kompatibel, wenn ich das Ganze über SQLClientDataSet.SaveToFile(Filename.xls) speichere. Funktioniert das überhaupt auf diese Art und Weise, oder muss ich das anders lösen? Bitte helft mir, das Problem ist sehr dringend. Vielen Dank schon mal, dass ihr euch euren Kopf für mich zerbrecht.

    Michael

  • #2
    Hallo Michael,

    da Microsoft das xls-Format ziemlich geheim hält, ist es eigentlich nicht möglich den Inhalt eines DBGrid in eine Exceltabelle zu speichern. Du könntest dir aber über die OLE-Server für Excel weiterbehelfen, indem Du jeden Datensatz für das DBGrid ausliest und über OLE-Automation an Excel weiterreichst. Das setzt natürlich voraus, das auf dem Rechner Microsoft Excel installiert ist ;-(.

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      hallo,
      ich gehe davon aus, dass du das dataset und nicht den grid exportieren willst;
      ich schreibe es in einen file, damit kannst du mit jeder excel oder anderen kalk-prog's darauf zugreifen. die { ist mir als trennzeichen lieber, da sie wirklich in normalen bereichen (ausser c++...) bei den anwendern fast nie genutzt wird.

      var
      i, j: integer;
      s: string;
      theStringList: Tstringlist;
      begin
      s := '';
      try
      DM.QHHST.First;
      except
      MessageDlg(' abfrage starten !',
      mtInformation, [mbOK], 0);
      exit;
      end;
      DM.QHHST.DisableControls;
      theStringList := TStringList.Create;
      with DM.QHHST do
      begin
      s := '';
      for I := 1 to DM.QHHST.FieldList.Count - 1 do
      begin
      s := s + DM.QHHST.FieldList.Strings[I] + '{';
      end;
      theStringList.add(s);

      for j := 0 to (RecordCount - 1) do
      begin
      s := '';
      for i := 1 to (FieldCount - 1) do
      begin
      if Length(Fields[i].AsString) < 1 then
      s := s + ' ' + '{'
      else
      s := s + (Fields[i].AsString) + '{';
      end;
      theStringList.add(s);

      Next;
      end;
      DM.QHHST.EnableControls;
      SaveDialog1.Title := 'Speichert die Ergebnismenge in einen File';
      if SaveDialog1.Execute then
      theStringList.savetofile(SaveDialog1.Filename);
      end;
      end

      Comment


      • #4
        Hallo, Thomas!

        Ich habe deine Prozedur so übernommen, mein DataSet statt DM.QHHST eingegeben und sie läuft völlig problemlos :-}! Vielen Dank, du hast mir langes Suchen erspart

        Comment


        • #5
          Michael,

          freut mich!
          dann ein schönes wochenende!!

          ;-) thoma

          Comment

          Working...
          X