Delphi vs Excel i seperacja cyfr

Delphi vs Excel i seperacja cyfr
T6
  • Rejestracja: dni
  • Ostatnio: dni
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'

b0bik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1114
0

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

Marius.Maximus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2196
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.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
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.

T6
  • Rejestracja: dni
  • Ostatnio: dni
0

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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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).

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
0

NumberFormat po stronie Excela

T6
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Oto gotowy przykładzik:

Kopiuj

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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

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

T6
  • Rejestracja: dni
  • Ostatnio: dni
0

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

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
0
Kopiuj
Sheet.WorkSheets.Add;

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

Kopiuj
Sheet.WorkSheets[Index].Delete;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.