СообЧа > Дельфинарий > Экспортирование таблицы Excel в TStringgrid

 

Экспортирование таблицы Excel в TStringgrid

uses
   ComObj;

function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
   xlCellTypeLastCell = $0000000B;
var
   XLApp, Sheet: OLEVariant;
   RangeMatrix: Variant;
   x, y, k, r: Integer;
begin
   Result := False;
   // Создаем объект Excel-OLE
   XLApp := CreateOleObject('Excel.Application');
   try
     // Спрятать Excel
     XLApp.Visible := False;

     // Открыть Рабочую книгу
     XLApp.Workbooks.Open(AXLSFile);

     // Лист := XLApp.Workbooks[1].WorkSheets[1];
     Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];

     Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
     // Получить значение последний строки
     x := XLApp.ActiveCell.Row;
     // Получить значение последней колонки
     y := XLApp.ActiveCell.Column;

     // Установить колонку и столбец Stringgrid'а.

     AGrid.RowCount := x;
     AGrid.ColCount := y;

     // Присвоение Variant ассоциативной WorkSheet'ому значению

     RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
     // Установить цикл для заполнения TStringGrid
     k := 1;
     repeat
       for r := 1 to y do
         AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
       Inc(k, 1);
       AGrid.RowCount := k + 1;
     until k > x;
     // Очистка матрицы Delphi Variant
     RangeMatrix := Unassigned;

   finally
     // Выход Excel
     if not VarIsEmpty(XLApp) then
     begin
       // XLApp.DisplayAlerts := False;
       XLApp.Quit;
       XLAPP := Unassigned;
       Sheet := Unassigned;
       Result := True;
     end;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   if Xls_To_StringGrid(StringGrid1, 'C:\Table1.xls') then
     ShowMessage('Таблица экспортирована!');
end;



Рейтинг@Mail.ru Rambler's Top100 Яндекс цитирования

Спасибо, что посетили наш сайт.
Copyright © 2000-2008 Сообщество Чайников
Контактная информация  О проекте