СообЧа > База Знаний > Программирование > Delphi

Вопрос

Как сделать экспорт таблицы 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;

Кирилл Краснов



Copyright © 2000-2004 Сообщество Чайников
Контактная информация