Ниже приводится программа, полный пример, кдемонстрирующий как защитить Excel Sheet, используя Delphi.
unit UTesteProtect;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ExcelApp: OleVariant;
implementation
{$R *.dfm}
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;
begin
{ Start Excel }
// Используя GetActiveOleObject, Вы используете экземпляр
// Word, который это выполняет, если запущен
try
// Если Word не запущен, попытаемся создать новый объект Excel
ExcelApp := CreateOleObject('Excel.Application');
except
ShowMessage('Cannot start Excel/Excel not installed ?');
Exit;
end;
// Добавляем новый Workbook
ExcelApp.Workbooks.Add(xlWBatWorkSheet);
// Открываем Workbook
ExcelApp.Workbooks.Open('c:\pasta1.xls');
// Переименовываем активный Sheet
ExcelApp.ActiveSheet.Name := 'Pasta1';
// Переименование
ExcelApp.Workbooks[1].WorkSheets[1].Name := 'Pasta1';
// Вставим текск в Cells[Row,Col]
ExcelApp.Cells[1, 1].Value := 'Test';
ExcelApp.Cells[2, 1].Value := 'Text';
ExcelApp.Cells[3, 1].Value := FormatDateTime('dd-mmm-yyyy', Now);
// Установка строки данных одним запросом
//ExcelApp.Range['A2', 'D2'].Value := VarArrayOf([1, 10, 100, 1000]);
// Установка формулы
// ExcelApp.Range['A11', 'A11'].Formula := '=Sum(A1:A10)';
// Изменяем выравнивание ячейки
// ExcelApp.Cells[2, 1].HorizontalAlignment := xlright;
// Изменяем ширину колонки
ColumnRange := ExcelApp.Workbooks[1].WorkSheets[1].Columns;
ColumnRange.Columns[1].ColumnWidth := 20;
ColumnRange.Columns[2].ColumnWidth := 40;
// Изменяем высоту строки
ExcelApp.Rows[1].RowHeight := 15.75;
// Объединение ячеек
ExcelApp.Range['B3:D3'].Mergecells := True;
// Применяем границы к ячейке
ExcelApp.Range['A14:M14'].Borders.Weight := xlThick;
ExcelApp.Range['A14:M14'].Borders.Weight := xlThin;
// Установим жирный текст в ячейке
ExcelApp.Range['B16:M26'].Font.Bold := True;
// Установка размера шрифта
ExcelApp.Range['B16:M26'].Font.Size := 12;
//Выравниваем текст по правому краю
ExcelApp.Cells[9, 6].HorizontalAlignment := xlright;
// Выравниваем текст по горизонтали
ExcelApp.Range['B14:M26'].HorizontalAlignment := xlHAlignCenter;
// Выравниваем текст по левому краю
// ExcelApp.Range['B14:M26'].VerticallyAlignment := xlVAlignCenter;
{ Page Setup }
ExcelApp.ActiveSheet.PageSetup.Orientation := xlLandscape;
// Левый, правый отступы
ExcelApp.ActiveSheet.PageSetup.LeftMargin := 35;
ExcelApp.ActiveSheet.PageSetup.RightMargin := -15;
// Отступ нижнего колонтитула
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;
// Устанавливаем размер бумаги:
// ExcelApp.PageSetup.PaperSize := xlPaperA4;
// Показать/Скрыть сетку:
ExcelApp.ActiveWindow.DisplayGridlines := False;
// Установить черно-белый
ExcelApp.ActiveSheet.PageSetup.BlackAndWhite := False;
// footers
ExcelApp.ActiveSheet.PageSetup.RightFooter := 'Right Footer';
ExcelApp.ActiveSheet.PageSetup.LeftFooter := 'Left Footer';
// Показать версию Excel
ShowMessage(Format('Excel Version %s: ', [ExcelApp.Version]));
// Показать Excel:
// ExcelApp.Visible := True;
// Сохранить Workbook
//ExcelApp.SaveAs('c:\filename.xls');
// Сохранить активную Workbook:
// ExcelApp.ActiveSheet.Protect.Password := 'Test';
ExcelApp.ActiveSheet.Protect(Password:='Test', DrawingObjects:=True, Contents:=True, Scenarios:=True);
//Contents:=True, Scenarios:=True
ExcelApp.ActiveWorkBook.SaveAs('c:\filename.xls');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Выход из Excel
if not VarIsEmpty(ExcelApp) then
begin
ExcelApp.DisplayAlerts := False;
ExcelApp.Quit;
end;
end;
end.
Комментарии