Jak odczytać dane z pliku Excela

jozkan
uses ComObj;

type
    //zakres komórek do czytania
   Tdane_z_Excela=array of array of string;

const
   xlChart=-4109;
   xlWorksheet=-4167;
   xlWBATWorksheet=-4167;
   xlWBATChart=-4109;
   xlPortrait=1;
   xlLandscape=2;
   xlPaperA4=9;
   xlBottom=-4107;
   xlLeft=-4131;
   xlRight=-4152;
   xlTop=-4160;
   xlHAlignCenter=-4108;
   xlVAlignCenter=-4108;
   xlThick=4;
   xlThin=2;

function DaneZPlikuExcela(file_path:string):Tdane_z_Excela;
var
   ExcelApp:OleVariant;
   w,k:Integer;
begin
   try
      ExcelApp:=GetActiveOleObject('Excel.Application');
   except
      try
         ExcelApp:=CreateOleObject('Excel.Application');
      except
         ShowMessage('Excel nie jest zainstalowany w Twoim komputerze lub jest uszkodzony!');
         Exit;
      end;
   end;
   ExcelApp.Workbooks.Open(file_path);

   //przykład czytania komórek od 20 do 40 wiersza i od 50 do 60 kulumny
   SetLength(Result,21,11);
   for w:=20 to 40 do
   for k:=50 to 60 do
   Result[w-20][k-50]:=ExcelApp.Cells[w,k].Value;

   if not VarIsEmpty(ExcelApp) then
   ExcelApp.Quit;
end;

4 komentarzy

A jak zamknąć konkretny skoroszyt jeśli otwartych jest więcej niż jeden? ExcelApp.Quit; zamknie całego Excela...

ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Workbooks.Open('C:\przykladowy.xlsx');
for w:=1 to 20 do
for k:=1 to 20 do
Begin
tablica[w][k]:=ExcelApp.Cells[w,k].Value;
memo1.lines.add(tablica[w][k]);
End;
ExcelApp.Quit;

mam pytanie jak mam przypisać dane z excela do tablicy?

Przy imporcie godzin wyskakuje liczba powstała z dzielenia składników godziny, 14:20:02 to 14 pordzielone przez 20 i przez 02, jak to rozwiązać bez ingerencji w Excela