Delphi World - Контролировать Excel, используя OLE
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Контролировать Excel, используя OLE


uses
  ComObj; 

var 
  ExcelApp: OleVariant; 

implementation 


procedure TForm1.Button1Click(Sender: TObject); 
const 
  // SheetType 
  xlChart = -4109; 
  xlWorksheet = -4167; 
  // WBATemplate 
  xlWBATWorksheet = -4167; 
  xlWBATChart = -4109; 
  // Page Setup 
  xlPortrait = 1; 
  xlLandscape = 2; 
  xlPaperA4 = 9; 
  // Format Cells 
  xlBottom = -4107; 
  xlLeft = -4131; 
  xlRight = -4152; 
  xlTop = -4160; 
  // Text Alignment 
  xlHAlignCenter = -4108; 
  xlVAlignCenter = -4108; 
  // Cell Borders 
  xlThick = 4; 
  xlThin = 2;
var 
  ColumnRange: OleVariant; 
   
  // Function to get the number of Rows in a Certain column 
  function GetLastLine(AColumn: Integer): Integer; 
  const 
    xlUp = 3; 
  begin 
    Result := OLEConTainer1.OleObject.Range[Char(96 + AColumn) +
      IntToStr(65536)].end[xlUp].Rows.Row;
  end; 

begin 
  { Start Excel } 

  // By using GetActiveOleObject, you use an instance o
  // f Word that's already running, 
  // if there is one. 
  try 
    ExcelApp := GetActiveOleObject('Excel.Application'); 
  except 
    try 
      // If no instance of Word is running, try to Create a new Excel Object 
      ExcelApp := CreateOleObject('Excel.Application'); 
    except 
      ShowMessage('Cannot start Excel/Excel not installed ?'); 
      Exit; 
    end; 
  end; 

  // Add a new Workbook, Neue Arbeitsmappe offnen 
  ExcelApp.Workbooks.Add(xlWBatWorkSheet); 

  // Open a Workbook, Arbeitsmappe offnen 
  ExcelApp.Workbooks.Open('c:\YourFileName.xls'); 


  // Rename the active Sheet 
  ExcelApp.ActiveSheet.Name := 'This is Sheet 1'; 

  // Rename 
  ExcelApp.Workbooks[1].WorkSheets[1].Name := 'This is Sheet 1'; 

  // Insert some Text in some Cells[Row,Col] 
  ExcelApp.Cells[1, 1].Value := 'SwissDelphiCenter.ch'; 
  ExcelApp.Cells[2, 1].Value := 'http://www.swissdelphicenter.ch'; 
  ExcelApp.Cells[3, 1].Value := FormatDateTime('dd-mmm-yyyy', Now); 

  // Setting a row of data with one call 
  ExcelApp.Range['A2', 'D2'].Value := VarArrayOf([1, 10, 100, 1000]); 

  // Setting a formula 
  ExcelApp.Range['A11', 'A11'].Formula := '=Sum(A1:A10)'; 

  // Change Cell Alignement 
  ExcelApp.Cells[2, 1].HorizontalAlignment := xlright; 

  // Change the Column Width. 
  ColumnRange := ExcelApp.Workbooks[1].WorkSheets[1].Columns; 
  ColumnRange.Columns[1].ColumnWidth := 20; 
  ColumnRange.Columns[2].ColumnWidth := 40; 

  // Change Rowheight / Zeilenhohe andern: 
  ExcelApp.Rows[1].RowHeight := 15.75; 

  // Merge cells, Zellen verbinden: 
  ExcelApp.Range['B3:D3'].Mergecells := True; 

  // Apply borders to cells, Zellen umrahmen: 
  ExcelApp.Range['A14:M14'].Borders.Weight := xlThick; // Think line/ Dicke Linie 
  ExcelApp.Range['A14:M14'].Borders.Weight := xlThin;  // Thin line Dunne Linie 

  // Set Bold Font in cells, Fettdruck in den Zellen 

  ExcelApp.Range['B16:M26'].Font.Bold := True; 

  // Set Font Size, Schriftgro?e setzen 
  ExcelApp.Range['B16:M26'].Font.Size := 12; 

  //right-aligned Text, rechtsbundige Textausrichtung 
  ExcelApp.Cells[9, 6].HorizontalAlignment := xlright; 

  // horizontal-aligned text, horizontale Zentrierung 
  ExcelApp.Range['B14:M26'].HorizontalAlignment := xlHAlignCenter; 

  // left-aligned Text, vertikale Zentrierung 
  ExcelApp.Range['B14:M26'].VerticallyAlignment := xlVAlignCenter; 


  { Page Setup } 

  ExcelApp.ActiveSheet.PageSetup.Orientation := xlLandscape; 

  // Left, Right Margin (Seitenrander) 
  ExcelApp.ActiveSheet.PageSetup.LeftMargin  := 35; 
  ExcelApp.ActiveSheet.PageSetup.RightMargin := -15; 

  // Set Footer Margin 
  ExcelApp.ActiveSheet.PageSetup.FooterMargin := ExcelApp.InchesToPoints(0); 

  // Fit to X page(s) wide by Y tall 
  ExcelApp.ActiveSheet.PageSetup.FitToPagesWide := 1;  // Y 
  ExcelApp.ActiveSheet.PageSetup.FitToPagesTall := 3; // Y 

  // Zoom 
  ExcelApp.ActiveSheet.PageSetup.Zoom := 95; 

  // Set Paper Size: 
  ExcelApp.PageSetup.PaperSize := xlPaperA4; 

  // Show/Hide Gridlines: 
  ExcelApp.ActiveWindow.DisplayGridlines := False; 

  // Set Black & White 
  ExcelApp.ActiveSheet.PageSetup.BlackAndWhite := False; 

  // footers 
  ExcelApp.ActiveSheet.PageSetup.RightFooter := 'Right Footer / Rechte Fu?zeile'; 
  ExcelApp.ActiveSheet.PageSetup.LeftFooter  := 'Left Footer / Linke Fu?zeile'; 

  // Show Excel Version: 
  ShowMessage(Format('Excel Version %s: ', [ExcelApp.Version])); 

  // Show Excel: 
  ExcelApp.Visible := True; 

  // Save the Workbook 
  ExcelApp.SaveAs('c:\filename.xls'); 

  // Save the active Workbook: 
  ExcelApp.ActiveWorkBook.SaveAs('c:\filename.xls'); 

end; 

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  // Quit Excel 
  if not VarIsEmpty(ExcelApp) then 
  begin 
    ExcelApp.DisplayAlerts := False;  // Discard unsaved files.... 
    ExcelApp.Quit; 
  end; 
end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования