listview - excel

0

witam mam dane zapisane w listview i chciałem za pomocą przyciska zeby przerzucił mi te dane do excela

0

Eksportuj do CSV, a potem Shellexecute tego pliku.
P.S.
Remont lupy jest?

0

a jak eksportowac do csv??
jak to zrobic jezeli nie wiemy ile jest wierszy w listview

0

jak mozesz niewiedziec ile jest wierszy w ListView?
Przecież masz właściwość ListView.Items.Count

0

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;

0

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.

0

hm ale jak to wasnie zrobic zeby wyciagnąć tekst z wiersza z danej komórki ??

0
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

0

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)

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