Delphi vs Excel i seperacja cyfr

0

Witam..
Mam taki problem chce wstawić daną cyfrową z Delphi do arkusza Excel
ale tak aby cyfry były widoczne jako odseparowane spacjami.

W Excel robi się to dla całej kolumny jako: Formatuj komórki->Liczbowe->Użyj seperatora 1000,Miejsca dziesiętne 0

Ale czy Delphi potrafi to zrobić przesyłając dane do Excel???

Napisałem tak ale nie wiem co dalej????

uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
Excel: Variant;
Dana: integer;
begin

 dana:=999999;

 Excel:=CreateOleObject('Excel.Application');  // Otwarcie nowego Excela
 Excel.Visible:=True;
 Excel.WorkBooks.Add;                                 // Stworzenie skoroszytu
 Excel.Cells[1,1].Value:=dana;                    // Zapis danej do komórki Excela

 //Excel.Quit;

end;

Wynik powinien być widoczny w Excel jako: '999 999'

0

Nagraj sobie makro w excelu. W czasie nagrywania ustaw odpowiedni format wyświetlania. Obejrzyj kod makra...
b

0

Microsoft Ci pomoże
http://support.microsoft.com/kb/231614
W kodzie musisz ustawić format komórki, w linku masz trochę przykładów jak to robić może to pomoże.

0
var Dana:integer;
var Dana_str:string;

Dana_str := floattostrf(Dana,ffNumber,0,0);

ale excel może tego jako liczba potem nie traktować.

Microsoft Ci pomoże

Delphi u Microsoftu? jestem zdumiony.

0

Właśnie w tym problem po sformatowaniu mogę to wstawić do excel'a tylko jako tekst
jednak muszą to być liczby

0

Pobierz z excela znak separatora dziesiętnego.
W Delphi ustaw DecimalSeparator:=ZnakDziesiętnyExcela, a potem dopiero konwertuj.
Jeżeli chodzi ci o liczby w formacie:
12 345 678,91
to jest na to funkcja FloatFormat (a może FormatFloat teraz nie pamiętam).

0

NumberFormat po stronie Excela

0

Tego szukałem wielkie dzięki działa!!!!

Oto gotowy przykładzik:


uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  Excel,Sheet: Variant;
  Dana: integer;
begin

     dana:=99999999;

     Excel:=CreateOleObject('Excel.Application');  // Otwarcie nowego Excela
     Excel.Caption:='Delphi_NazwaOkna';
     Excel.Visible:=True;
     Excel.WorkBooks.Add;   // Stworzenie okna

     Excel.WorkBooks[1].WorkSheets.Add(); //Stworzenie (dodanie) arkusza (czwartego)

     Excel.Cells[1,1].Value:=dana;                // Zapis danej do komórki Excela
     Excel.Cells[1,1].NumberFormat:='### ### ### ### ###';   //Formatujemy liczbę

     Sheet:=Excel.WorkBooks[1].WorkSheets[1];  //ustalamy edytowany arkusz
     Sheet.Name:='Delphi_NazwaArkusza';  //Nazwa arkusza w oknie
     Sheet.Columns[1].ColumnWidth:=30;   //Szerokosc kolumny

     Excel.DisplayAlerts := False; //Nie Pytaj o zapis niezapisanych

     //Excel.Quit;
end;



 

Mam jeszcze pytanie jak sprawić w tym przykładzie aby domyślnie otwarty był tylko jeden skoroszyt a nie trzy jak to robi Excel

0

Zmienić ustawienia Excela lub usunąć wszystkie skoroszyty poza pierwszym.

0

A jaka to funkcja robi???????

0
Sheet.WorkSheets.Add;

Prawdopodobnie będzie remove albo delete. Ale nie chce mi się już sprawdzać

Sheet.WorkSheets[Index].Delete;

1 użytkowników online, w tym zalogowanych: 0, gości: 1