Announcement

Collapse
No announcement yet.

d7 export nach excel

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

  • d7 export nach excel

    ein beispielprogramm(D5) von andreas kosch
    nutzt für den datenexport recordset->excel
    den typ range. diesen findet mein D7 nicht.
    hat jemand eine idee?

  • #2
    Hallo,

    ist das folgende Beispiel gemeint?
    <pre>
    ExcelWorksheet1.Range['A10','A10'].CopyFromRecordset(aRS, EmptyParam, EmptyParam);
    </pre&gt

    Comment


    • #3
      hallo,
      es handelt sich um ihr beispiel
      D5E2KADOTestFrm.pas aus dem
      buch com+ mit delphi

      Comment


      • #4
        Hallo,

        hinter den Komponenten aus der Registerseite <i>Servers</i> verbergen sich nur Wrapper-Komponenten für die darunterliegenden COM-Objekte. Im Fall von Delphi 7 kann man sich zwischen Office 2000 und Office XP entscheiden. Wenn Office XP eingebunden wird, muss das Beispiel für Delphi 5 an den folgenden 2 Stellen geändert werden:

        1. Methode <b>_Open</b> anstelle von Open:

        <pre>
        ExcelApplication1.Workbooks._Open(cXLS_FileName, False, False,
        EmptyParam,'',False,False,EmptyParam,
        EmptyParam,false,false,EmptyParam,false,0);
        </pre>
        2. Interface <b>ExcelRange</b> anstelle von Range und Eigenschaft <b>Value2</b> anstelle von Value:
        <pre>
        <b>procedure</b> TForm1.ButtonInsertClick(Sender: TObject);
        <b>var</b>
        aRS : _RecordSet;
        iCnt : Integer;
        i : Integer;
        aRange : ExcelRange;
        aField : Field;
        <b>begin</b>
        aRS := ADOTable1.Recordset;
        iCnt := aRS.Fields.Count;
        <font color="#003399"><i>// Spaltenbeschriftung</i></font>
        <b>for</b> i := 1 <b>to</b> iCnt <b>do</b>
        <b>begin</b>
        aRange := IDispatch(ExcelWorksheet1.Cells.Item[9,i]) <b>as</b> ExcelRange;
        aRange.Font.Bold := True;
        aField := aRS.Fields[i-1];
        aRange.Value2 := aField.Name;
        aRange.EntireColumn.ColumnWidth := aField.ActualSize;
        <b>end</b>;
        <font color="#003399"><i>// Daten aus der ADO-Datenmenge kopieren</i></font>
        ExcelWorksheet1.Range[<font color="#9933CC">'A10'</font>,<font color="#9933CC">'A10'</font>].CopyFromRecordset(aRS,
        EmptyParam, EmptyParam);
        <b>end</b>;
        </pre>

        Der Grund für dieses Problem liegt nicht bei Microsoft, sondern bei Borland. In der Datei <b>tlibimp.sym</b> von Delphi 7 wird die folgende Umbenennung definiert:
        <pre>
        ...
        ;;==============================================;;
        ;; Map Excel CoClasses to 'better' names ;;
        ;;==============================================;;
        [{00020813-0000-0000-C000-000000000046}:TypeNames]
        Application=ExcelApplication
        QueryTable=ExcelQueryTable
        Chart=ExcelChart
        Worksheet=ExcelWorksheet
        WorkBook=ExcelWorkbook
        OLEObject=ExcelOLEObject
        Global=ExcelGlobal
        IFont=ExcelIFont
        Range=ExcelRange
        ...
        </pre>
        Das Original-Interface <b>Range</b> von TExcelApplication wird nach <b>ExcelRange</b> umbenannt. Diese "Verbesserung" sorgt dafür, dass alter Sourcecode von Hand korrigiert werden muss, da es diese Interface-Namen nur in Delphi gibt

        Comment


        • #5
          hat funktioniert,
          vielen dan

          Comment

          Working...
          X