witam mam dane zapisane w listview i chciałem za pomocą przyciska zeby przerzucił mi te dane do excela
Eksportuj do CSV, a potem Shellexecute tego pliku.
P.S.
Remont lupy jest?
a jak eksportowac do csv??
jak to zrobic jezeli nie wiemy ile jest wierszy w listview
jak mozesz niewiedziec ile jest wierszy w ListView?
Przecież masz właściwość ListView.Items.Count
no bo ja z bazy danych wrzucam tam dane!! i nie są one na sztywno wpisane znalazłem coś takiego :
procedure TForm1.Button1Click(Sender: TObject);
var
Excel: Variant;
begin
Excel := CreateOleObject('Excel.Application'); // Otwarcie nowego Excela
Excel.WorkBooks.Add(); // Stworzenie skoroszytu
Excel.Cells[1,1].Value := '11'; // Zapis danej do komórki Excela - liczba
Excel.Cells[1,2].Value := `rybka'; // Zapis danej do komórki Excela - string
Excel.Cells[1,3].Value := '=A1*3'; // Zapis danej do komórki Excela - formuła
Excel.ActiveWorkbook.SaveAs('c:\test.xls'); //Zapis do pliku - zmień na *.xlsx jeśli masz Excel 2007 lub nowszy...
Excel.Quit;
ale jak to zrobic
end;
ale jakie to ma znaczenie skad ty wzucasz dane?
po wzuceniu danych do listview jak bys tego nie robił jak wywołasz ListView.Items.Count to dostaniesz ilość wierszy w ListView.
potem pętlą jedziesz po każdym wierszu z listview i zapisujesz czy to do CSV czy do XLS jak wolisz.
hm ale jak to wasnie zrobic zeby wyciagnąć tekst z wiersza z danej komórki ??
drizzt82 napisał(a)
hm ale jak to wasnie zrobic zeby wyciagnąć tekst z wiersza z danej komórki ??
Dmoślam się, żę chodzi Ci o coś takiego?
var
F: TextFile;
I: Integer;
begin
if SaveDialog1.Execute() then
try //zapis nagłówków kolumn
AssignFile(F, SaveDialog1.FileName);
Rewrite(F);
Write(F,'Nazwa I kolumny',';');
Write(F,'Nazwa II kolumny',';');
Write(F,'Nazwa III kolumny',';');
Write(F,'Nazwa IV kolumny',';');
Write(F,'Nazwa V kolumny',';');
Write(F,'Nazwa VI kolumny',';');
Writeln(F);
for i:=0 to ListView1.Items.Count -1 do //pętla przez wszystkie pozycje ListView
begin
Write(F,ListView1.Items.Item[i].Caption,';'); // I kolumna // gdzie ; to znak separacji
Write(F,ListView1.Items.Item[i].SubItems[0],';'); // II kolumna
Write(F,ListView1.Items.Item[i].SubItems[1],';'); // III kolumna
Write(F,ListView1.Items.Item[i].SubItems[2],';'); // IV kolumna
Write(F,ListView1.Items.Item[i].SubItems[3],';'); // V kolumna
Write(F,ListView1.Items.Item[i].SubItems[4],';'); // VI kolumna
Writeln(F);
end;
finally
CloseFile(F);
end;
end;
co prawda jest to zapis do pliku tekstowego, ale jak dasz csv to Excel ładnie go otworzy.
A poza tym ta procedurka nie wymaga zainstalowanego Excela w systemie :-P
Można też zrobić przez stringlist (var code:tstringlist, code:=stringlist.create, dodawać kolejne linie przez code.add i na koniec code.savetofile i code.free)