- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 

Manipulera Excel Kategori: Objekt/ActiveX
Inlagt: 2002-10-04
Läst: 1758
Inlagt av: Staffan Berg
Beskrivning
Detta exempel kopierar innehållet i en TStringgrid till ett OLEObject Excel kalkylblad. 
Kod
procedure TForm1.OleContainer1Activate(Sender: TObject);
var         ExcelSheet : Variant;
          Count, Curent : Variant;
                  i,j : Integer;
 
Begin
 //first we read how many sheets are open in a specified
 Excel document
 Count:=OleContainer1.OleObject.Application.Sheets.Count;
 //then we read the number of a sheet to witch user wants
to add StringGrid content.
 Curent:=StrToInt(OKBottomDlg.Edit2.Text);
 
 If Curent <> 0 Then
  If Curent <= Count then
  // if the sheet with index Curent exist then copy content
   Begin
     //first we activate the desiered sheet object
     OleContainer1.OleObject.Application.Sheets[Count].Activate;
     //pass the object to a variant variable
     ExcelSheet:=OleContainer1.OleObject.Application.ActiveSheet;
     //now we can do what ever we like with it
     ExcelSheet.Name:=OKBottomDlg.Edit3.Text+IntToStr(Count);
     For i:=0 To StringGrid1.RowCount Do
      For j:=0 To StringGrid1.ColCount Do
       ExcelSheet.Cells(i,j):=StringGrid1.Cells[j,i];
       // here we copy the content
  End
 else // else if the sheet we are trying to access doesn't exsist
  Begin
   // we add new sheets untill the requested
   // user's index is reached ( curent variable )
   For i:=Count+1 To Curent do
    OleContainer1.OleObject.Application.Sheets.Add;
   // again we do as above
   OleContainer1.OleObject.Application.Sheets[Curent].Activate;
   ExcelSheet:=OleContainer1.OleObject.Application.ActiveSheet;
   ExcelSheet.Name:=OKBottomDlg.Edit3.Text+IntToStr(Count);
   For i:=0 To StringGrid1.RowCount Do
    For j:=0 To StringGrid1.ColCount Do
     ExcelSheet.Cells(i,j):=StringGrid1.Cells[j,i];
  End;
end;

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -