Задача

Создать документ Exel и заполнить его данными.

Решение

uses ComObj;

uses ComObj;

procedure TForm1.Button2Click(Sender: TObject);
var
  Excel, WorkBook, Sheet: Variant;
  Col, Row: Integer;
begin
  Excel := CreateOleObject('Excel.Application');
  try
    Excel.SheetsInNewWorkbook := 1;
    WorkBook := Excel.WorkBooks.Add;
    Sheet := WorkBook.WorkSheets[1];
    for Row := 1 to 10 do
      for Col := 1 to 20 do
      begin
        Sheet.Cells[Row, Col] := Row * Col;
        if (Row = 1) or (Col = 1) then
        Sheet.Cells[Row, Col].Font.Bold := True;
      end;
  finally
    Sheet.Cells.Columns.AutoFit;
    Excel.Visible := True;
  end;
end;Code language: Delphi (delphi)

Комментарий

Вышеприведённый код, размещённый на обработчике кнопки, создаёт страницу в документе Excel, используя для этого механизмы OLE. Потом заполняет ячейки данными. Данные в первой строке и первой колонке выделяются жирным шрифтом:

Созданный документ

Верификация

Delphi XE5, Win7, MS Office Excel 2007


Задача

Открыть файл Excel и прочитать данные

Решение

var
    MsExcel: Variant;
    Values: OLEVariant;
    ColCount: integer;
    RowCount: integer;

procedure TfrmMain.btnOpenFileClick(Sender: TObject);
var
  i: integer;
begin
  try
    if odlMain.Execute then
    begin
      edtFileName.Text := odlMain.FileName;
      // Инициализация переменной Excel 
      // в простейшем случае можно осуществить так:
      MsExcel := CreateOleObject('Excel.Application');
      // Открытие существующей книги только для чтения:
      MsExcel.Workbooks.Open[edtFileName.Text, 0, True];
      // загрузить данные в массив
      Values := MsExcel.ActiveSheet.UsedRange.Value;
      // число заполненных колонок
      ColCount := MsExcel.ActiveSheet.UsedRange.Columns.Count;
      // число заполненных строк
      RowCount := MsExcel.ActiveSheet.UsedRange.Rows.Count;
      // Закрытие Excel:
      MsExcel.ActiveWorkbook.Close;
      MsExcel.Application.Quit;
      //
      btnOK.Enabled := True;
    end;
  except
    on E: Exception do
      ShowMessage(E.ClassName + ' ошибка с сообщением : ' + E.Message);
  end;
end;Code language: Delphi (delphi)

Комментарий

В обработчике диалога открытия файла пишем вышеприведённый код. В результате данные загружаются в массив Values из области таблицы, в которой есть данные:

Верификация

Delphi XE10.2, Win7 x64, Excel 2016

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *