Excel'e Aktarım ve Grafik

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
VGumus
Üye
Mesajlar: 6
Kayıt: 18 Mar 2005 02:29

Excel'e Aktarım ve Grafik

Mesaj gönderen VGumus »

iyi günler

Foruma yeni üye oldum ve 2 tane sorum olacaktı:

1-)StringGrid'ten TChart componenti ile grafik elde ediyorum ancak X koordinatını(BottomAxis)'i benim istediğim bir tarihten(Yalnızca yıl olarak) başlayıp artmasını istiyorum ancak tarih olayını açtığımda ay veya gün olarak artıyor. #,##1950,### şeklinde olduğunda ya da değişik kombinasyonlar denediğimde ise 1950'yi String olarak alıp 19501... olarak algılıyor. bununla ilgili yapmam gereken şey nedir?

2-)Excel'e aktarım olarak

Kod: Tümünü seç

procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
  const AValue: string);
var
  L: Word;
const
  {$J+}
  CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
  {$J-}
begin
  L := Length(AValue);
  CXlsLabel[1] := 8 + L;
  CXlsLabel[2] := ARow;
  CXlsLabel[3] := ACol;
  CXlsLabel[5] := L;
  XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
  XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;


function SaveAsExcelFile(SG: TStringGrid; AFileName: string): Boolean;
const
  {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
  CXlsEof: array[0..1] of Word = ($0A, 00);
var
  FStream: TFileStream;
  I, J: Integer;
begin
  Result := False;
  FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
  try
    CXlsBof[4] := 0;
    FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
    for i := 0 to SG.ColCount - 1 do
      for j := 0 to SG.RowCount - 1 do
        XlsWriteCellLabel(FStream, I, J, SG.cells[i, j]);
    FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
    Result := True;
  finally
    FStream.Free;
  end;
end;
ancak fonksiyonu aşağıda şekilde kullanıyorum ama yapmak istediğim bu değil.

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if SaveAsExcelFile(STringGrid, 'C:\' + edit1.text + '.xls') then
    ShowMessage(edit1.text + ' isimli dosya C:\`ye kaydedilmistir');
end;
benim yapmak istediğim excel dosyasına kaydetmesi değil ya farklı kaydet tarzı bir durumun olması ya da hiç kaydetmeden açması. bunun için ben kaydetme bölümünü temp olarak ayarladım ve

Kod: Tümünü seç

XLApp.Workbooks.Open('C:\' + edit1.text + '.xls')
şeklinde yaptığım zaman ise butona bastığım zaman program hata verdi ve işlemi gerçekleştiremedi.

Yardımlarınız için teşekkür ederim...

Veysel GÜMÜŞ
VGumus
Üye
Mesajlar: 6
Kayıt: 18 Mar 2005 02:29

Mesaj gönderen VGumus »

Arkadaşlar excel'e aktarma işini hallettim. ancak türkçe karakter gördüğü yerde program dosyayı bulamadı hatası veriyor. mesela dosya adı: AGİ125 olduğunda ya da konumu:c:\YeniKalsör\Veysel GÜMÜŞ\XXX.xls olduğunda program dosyayı bulamadı hatası veriyor.

Kod: Tümünü seç

procedure TForm1.BtExcelAktarClick(Sender: TObject);
  begin
savedialog1.filename:=Caption;
if savedialog1.Execute then
begin
if SaveAsExcelFile(StringGrid1, Savedialog1.FileName) then
Showmessage('Aktarım Başarıyla Gerçekleşti...');
end;
end;
Ama hala Grafik kısmını halledemedim...

Saygılar...

Veysel GÜMÜŞ
Edit:Ufak bi problem daha eklendi...
Cevapla