TURBO PASCAL a plik XLS ???

0

Na wstępie napiszę że do zielonych należe ;] i wprawdzie troche juz w pascalu napisałem ale dalej się uczę i mam pewien problem mianowicie

Chciałbym otworzyć plik XLS w TP, w taki sposób aby z jednej kolumny tego pliku (np. trzeciej) utworzyć jedną tabelę a z innej (np. ósmej) drugą tablę {<ort>wysztko </ort>liczbowe <ort>NIE MA </ort>możliwości wystąpienia liter}. Wszystko ma się dziać w pamięci programu.

Czy to się <ort>w ogóle </ort>da zrobić ????? jeśli tak to jak, z jakiej funkcji skorzystać ???

0

obawiam się, że w TP jest to porywanie się z motyką na słońce. możesz spróbować napisać odczytywanie wartości dla jednej konkretnej wersji plików xls, ale podejrzewam, że będzie to bardzo dużo pracy. albo zmień format pliku, w którym są trzymane dane (xml, csv, ewentualnie zwykłe tekstowe lub binarne), albo przenieś się do bardziej współczesnego środowiska, np. Delphi, i skorzystaj z OLE Excela do odczytania jego plików.

0

Z Turbo Pascalem, jak, że jest pisany i służy do tworzenia programów dla DOS nie zejdziesz raczej poniżej kilku tysięcy linii, w Delphi kilkanaście linii powinno wystarczyć.

Cóż.. taka jest cena wykorzystywania przestarzałych środowisk spod przestarzałych systemów.

0

słyszałem coś poza bełkotem?

// to zależy z kim rozmawiałeś - Ł

0

a po kolegach można by się czegoś innego spodziewać

0
mgr.Dobrowolski napisał(a)

słyszałem coś poza bełkotem?

Co Ty wygadujesz? Przecież doskonale wiesz, że to kwestia środowiska i dostępnych bibliotek decyduje o łatwości rozwiązania problemu.

W Delphi kod wczytujący tekst z komórek do ListBox może wyglądać tak:

uses ComObj;

procedure TForm1.LoadFromXLS(FileName: TFileName);
var n:integer;
    XLApp, Sheet: variant;
begin
if FileExists(FileName) then
  begin
  XLApp:=CreateOleObject('Excel.Application');
  if not VarIsEmpty(XLApp) then
    begin
    try
      XLApp.workbooks.open[FileName];
      XLApp.DisplayAlerts:=false;
      Sheet:=XLApp.Workbooks[1].worksheets[1];
      for n:=1 to 9 do
        begin
        ListBox1.Items.Add(Sheet.cells[n, 3]);
        ListBox2.Items.Add(Sheet.cells[n, 8]);
        end;
    except
      end;
    XLApp.Quit;
    XLApp:=Unassigned;
    end;
  end;
end;

Jak się potrafi odczytać, to dokonanie konwersji na tablicę liczb nie powinno być żadnym problemem. Wszystkiego jest 25 linii. Co ważne - bez względu na format pliku - czy to word 97, 2003, XP czy też 2007, kod zadziała. Wadą jest, że trzeba mieć zainstalowanego Excela, bo de facto to on dla nas wyciąga dane.

Teraz panie magistrze proszę o Twój kod, otwierający i pobierający z dowolnego formatu plików Excela w Turbo Pascal poniżej 1500 linii kodu. Jak masz zastrzeżenia do konstruktywności, wykaż się samemu.

0

Serdecznie dziękuję za szybką i fachową odpowiedź

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