Номер листов excel delphi

324 / 316 / 84

Регистрация: 03.03.2010

Сообщений: 1,364

1

16.10.2010, 17:57. Показов 11025. Ответов 8


Студворк — интернет-сервис помощи студентам

Доброго времени суток. Возник вопрос как прочесть названия листов Excel и записать их CheckListBox1 например чтобы потом загрузить именно выбранный лист?



0



Mad_Dog

Фрилансер

452 / 433 / 117

Регистрация: 01.06.2010

Сообщений: 1,314

16.10.2010, 18:25

2

Delphi
1
2
3
4
5
6
7
8
9
10
11
  try
    //если Эксель запущен, то получаю доступ к процессу...
    ExcelApp:=GetActiveOleObject('Excel.Application');
  except
    //если Эксель не запущен, то создаю процесс...
    ExcelApp:=CreateOleObject('Excel.Application')
  end;
 
 
 
  SheetNameXLS:=ExcelApp.Sheets.Item[IndexSheet].Name



0



324 / 316 / 84

Регистрация: 03.03.2010

Сообщений: 1,364

17.10.2010, 17:37

 [ТС]

3

Цитата
Сообщение от Mad_Dog
Посмотреть сообщение

ExcelApp

А ЧТО ЗА ПЕРЕМЕННАЯ?



0



2184 / 1254 / 143

Регистрация: 28.04.2010

Сообщений: 4,592

17.10.2010, 18:34

4

Romantik_FM, Variant или OleVariant



0



324 / 316 / 84

Регистрация: 03.03.2010

Сообщений: 1,364

17.10.2010, 21:50

 [ТС]

5

Спасибо, с переменной разобрался но не пойму как вывести список всё равно((



0



anonimus

2184 / 1254 / 143

Регистрация: 28.04.2010

Сообщений: 4,592

17.10.2010, 22:18

6

Цитата
Сообщение от Romantik_FM
Посмотреть сообщение

не пойму как вывести список всё равно((

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button1Click(Sender: TObject);
var ExcelApp:OleVariant;
i:integer;
begin
if not OpenDialog1.Execute then exit;
 
try
    ExcelApp:=GetActiveOleObject('Excel.Application');
  except
    ExcelApp:=CreateOleObject('Excel.Application')
  end;
ExcelApp.Workbooks.Open(OpenDialog1.FileName);
for i:=1 to ExcelApp.Worksheets.count do
CheckListBox1.Items.add(ExcelApp.Worksheets[i].Name);
end;



1



324 / 316 / 84

Регистрация: 03.03.2010

Сообщений: 1,364

17.10.2010, 23:59

 [ТС]

7

не доступная опирация (((
а так должно работать в учебнике только нашёл это

Добавлено через 12 минут
Как сделать чтоб это работала при выключенном экселе?



0



2184 / 1254 / 143

Регистрация: 28.04.2010

Сообщений: 4,592

18.10.2010, 08:47

8

не доступная опирация (((

в Uses добавить модуль ComObj

Как сделать чтоб это работала при выключенном экселе?

в смысле?
это при включеном
GetActiveOleObject, это при выключеном
CreateOleObject. Все ж есть в примере



0



160 / 158 / 39

Регистрация: 10.10.2010

Сообщений: 461

18.10.2010, 12:16

9

Не по теме:

Меня интересует следующий вопрос, ответы нужно давать только использовать стандартные компоненты? ;)

Romantik_FM, что бы не заморачиваться с технлогией COM, которую я так понял ты пропустил в учебнике, открой google и в строке поиска напиши «Delphi компоненты Excel» поверь ты удивишся к-ву страниц. Качай компонент устанавливай и пользуйся.

Не по теме:

Delphi визуальный язык программирования, зачем выдумывать новый велосипед если уже кто то нашел его ;)



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

18.10.2010, 12:16

Помогаю со студенческими работами здесь

Название листов Excel
Здраствуйте! Есть книга Excel с кучей страниц. Они подписаны примерно так: Лист1(123), Лист2(125),…

Проверить название листов в книги Excel
Необходимо проверить название листов в книги Excel.
листы должны называться Лист1 и Лист2. В…

Определить, сколько можно купить тетрадей по 12 листов, по 48 листов и по 96 листов, зная цену
Определить, сколько можно купить тетрадей по 12 листов, по 48 листов и по 96 листов,
если цена…

Выбрав название столбца excel получть название зависимых строк
Требуется выбрав дисциплину (название столбцов) , получить зависимые компетенции(название строк)….

Использование в коде название листов и имен файлов на других языках
Добрый день! есть большая проблема. Макрос не хочет открывать файлы имя которых написано на…

Сравнение 2-х листов в Excel
Здравствуйте. Сравниваю 2 листа в книге Excel. На 1-м листе таблица: договор, номер этапа,……

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

В прошлые раз мы с Вами остановились на сохранении рабочей книги. В принципе, ничего сложного в запуске Excel, создании и сохранении рабочей книги нет. Сегодня заглянем немного глубже в работу с Microsoft Excel в Delphi — рассмотрим как можно работать с листами рабочей книги, изменять внешний вид ячеек и попробуем скопировать таблицу из своего приложения в открытую рабочую книгу.

План статьи:

  • Объекты Microsoft Excel
  • Как активировать лист рабочей книги Excel?
  • Методы  листа книги Excel

Однако прежде, чем забираться в дебри Excel я хотел продемонстрировать Вам насколько глубоко мы сегодня заглянем.

1. Объекты Microsoft Excel

Объектная модель ExcelНа рисунке я попробовал изобразить объектную модель Excel в миниатюре. Т.е. из этой модели исключены не требующиеся пока нам элементы, например такие, как свойства рабочей книги или выделенные объекты Selection — об этом речь пойдет позже.

Как Вы можете судить по представленной модели, а также и по собственному опыту работы, приложение Excel в общем случае может содержать коллекцию рабочих книг (WorkBooks Collection). Для доступа к конкретной рабочей книге мы с Вами использовали свойства Item коллекции:

WorkBook:=WorkBooks.Item[index]

где index — порядковый номер рабочей книги в коллекции WorkBooks.

И на этом наше первое  знакомство с Excel закончилось. Между тем, каждая отдельная рабочая книга может содержать N листов, каждый из которых состоит из N ячеек, которые могут быть объединены в объекты Range.

На каждой из ступеней этой модели можно останавливаться и изучать её месяцами. Если будет особая необходимость в изучении каких-либо дополнительных свойств и методов — мы обязательно вернемся и изучим. А теперь, приступим к работе в Delphi с листами рабочей книги.

2. Как активировать лист рабочей книги Excel?

Как Вы знаете при создании пустой рабочей книги Excel автоматически добавляет в эту книгу 3 пустых листа. Чтобы работать с конкретным листом (WorkSheet или просто Sheet) этот лист необходимо активировать. Один из способов активации листа рабочей книги Excel в Delphi выглядит следующим образом:

resourcestring
  rsEInvalidSheetIndex = 'Задан неверный индекс для WorkBooks. Активация листа прервана';
  rsEInvalidSheetActivate = 'Активация листа завершена с ошибкой';
 
function ActivateSheet(WBIndex: integer; SheetName: string): boolean;
var
  i: integer;
begin
  Result := false;
  if WBIndex > MyExcel.WorkBooks.Count then
    raise Exception.Create(rsEInvalidSheetIndex);
  try
    for i := 1 to MyExcel.WorkBooks[WBIndex].Sheets.Count do
      if AnsiLowerCase(MyExcel.WorkBooks[WBIndex].Sheets.Item[i].Name)
        = AnsiLowerCase(SheetName) then
      begin
        MyExcel.WorkBooks[WBIndex].Sheets.Item[i].Activate;
        Result := true;
        break;
      end;
  except
    raise Exception.Create(rsEInvalidSheetActivate);
  end;
end;

Здесь в качестве параметров функции задается индекс рабочей книги (WBIndex) в коллекции WorkBooks и название листа.

Если хотите, то можете активировать тот же лист по индексу в коллекции WorkSheets — при этом сама функция немного упрощается (не требуется условие проверки названия листа).

Также, если вы уверены, что в данный момент времени активна необходимая Вам рабочая книга, то можно избежать использования лишней переменной (индекса рабочей книги WBIndex) и активировать лист вот так:

MyExcel.ActiveWorkBook.Sheets.Item[i].Activate;

Теперь рассмотрим более подробно методы, используемые объектом WorkSheet.

3. Методы  листа книги Excel

Теперь рассмотрим более подробно объект WorkSheet.

worksheet MethodsНа рисунке представлены те методы, которые я когда-либо использовал в своей работе.

Всего объект WorkSheet насчитывает 30 различных методов, которые Вы можете использовать.

Метод Описание
Activate Делает текущий лист активным. Работу метода мы уже с Вами рассмотрели
Calculate рассчитывает все открытые книги, конкретный лист в книге, или указанный диапазон ячеек на листе
CheckSpelling проверка орфографии на выбранном листе
SaveAs сохраняет все изменения в файле
Delete удаляет текущий лист WorkSheet
Select выделение листа
Copy копирует лист в другое место в рабочей книге
Paste вставляет содержимое буфера обмена на лист
ChartObjects возвращает объект, который представляет собой либо одну диаграмму (объект ChartObject) или совокупность всех диаграмм (объект ChartObjects) на листе
Move перемещение листа. Этот метод аналогичен методу Copy. Различие лишь в том, что после вcтавки копируемый лист удаляется из книги

Рассмотрим теперь каждый из представленных выше методов.

Ниже, в качестве expression должен выступать лист (WorkSheet), если не сказано иное.

Метод Calculate

Расчёт рабочей книги, листа или диапазона ячеек.

Стоит отметить, что вызов метода Calculate возможен не только для конкретного рабочего листа книги Excel. Рассмотрим варианты вызова метода Calculate.

Как рассчитать все открытые в данный момент книги Excel в Delphi?

var MyExcel: OleVariant;
MyExcel.Calculate

Как рассчитать отдельный лист книги Excel в Delphi?

в приведенном ниже фрагменте кода рассчитывается активный лист

MyExcel.ActiveWorkBook.ActiveWorkSheet.Calculate

Как рассчитать диапазон ячеек листа Excel в Delphi?

Рассчитаем все формулы в столбцах A, B и C:

MyExcel.ActiveWorkBook.ActiveWorkSheet.UsedRange.Columns("A:C").Calculate

Метод CheckSpelling

Вызов метода выглядит следующим образом:

expression.CheckSpelling(CustomDictionary, IgnoreUppercase, AlwaysSuggest, SpellLang)

При этом в качестве expression должен выступать лист (WorkSheet).

Параметр Тип Описание
CustomDictionary  Variant строка, указывающая имя файла пользовательского словаря, который будет рассмотрен, если слово не найдено в основном словаре. Если этот аргумент опущен, то будет использоваться словарь по-умолчанию
IgnoreUppercase Variant True, если необходимо, чтобы Microsoft Excel пропускал слова, которые написаны прописными буквами. False для того, чтобы Microsoft Excel проверить все слова. Если этот аргумент опущен, то используются текущие настройки Excel.
AlwaysSuggest Variant True, для того, чтобы Microsoft Excel отображал список предложений других вариантов написания при обнаружении неправильного написанного слова. False, чтобы Microsoft Excel ожидал ввода правильного написание. Если этот аргумент опущен, то используются текущие настройки.
SpellLang Variant язык словаря.  Может принимать значения одной из констант MsoLanguageID, например для русского языка SpellLang = 1049, для английского (США) SpellLang = 1033 и т.д. Более подробно про идентификаторы языков см. эту статью.

Как проверить грамматику на листе Excel в Delphi?

MyExcel.ActiveWorkBook.ActiveWorkSheet.CheckSpelling(CustomDictionary:=EmptyParam,  
                                                                        IgnoreUppercase:= false, 
                                                                        AlwaysSuggest:=EmptyParam, 
                                                                        SpellLang:=1033)

в этом случае MS Excel проверит текущий лист, включая проверку слов из прописных букв. Язык проверки — русский. Обратите внимание, что для того, чтобы вызвать метод мы явно указывали, какому параметру какое значение присвоить. Причём для того, чтобы пропустить какой-либо параметр, мы использовали EmptyParam (пустой параметр), который в Delphi представляет собой переменную типа OleVariant.

Понятно, что подобный способ вызова методов (с явным указанием всех параметров) для Вас не совсем удобен и широко не практикуется в программировании на Delphi, но тем не менее только так и никак иначе можно вызывать методы, используемые в Excel.

Метод SaveAs

Сохранение рабочего листа книги Excel.

Вызов метода:

expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru,TextCodepage, TextVisualLayout, Local)
Параметр Тип Описание
FileName Variant строка, представляющая собой имя сохраняемого файла. Необходимо указывать полный путь к файлу, иначе файл будет сохранен в папку Excel.
FileFormat Variant формат файла, который используется при сохранении. По умолчанию файл сохраняется в формате, который вы выбирали в последний раз в Excel.
Password Variant пароль для файла (не более 15 символов). Пароль чувствителен к регистру.
WriteResPassword Variant пароль, который будет использоваться для внесения изменений в рабочую книгу. Если пароль не будет указан, то книга будет открыта в режиме «Только для чтения»
ReadOnlyRecommended Variant если параметр равен True, то при открытии файла на дисплее появится сообщение, в котором рекомендуется, что бы файл был открыт только для чтения.
CreateBackup Variant True, для того, чтобы создать резервный файл
AddToMru Variant True, для того, чтобы добавить имя сохраняемого файла в список недавно открытых файлов в главном меню Excel
TextCodepage и TextVisualLayout Variant в настоящее время не используются и сохранены для обеспечения обратной совместимости
Local Variant не обязательный параметр, по-умолчанию равен False. Значение True — сохранение файлов с языковыми Microsoft Excel (в том числе настройки панели управления).

Как сохранить активный лист рабочей книги Excel в Delphi?

MyExcel.ActiveWorkBook.ActiveWorkSheet.SaveAs('C:MyExcelFile.xls')

В этом случае при сохранении будут использованы настройки по умолчанию.

Если Вам необходимо сохранить файл Excel в другом формате, то в параметре FileFormat можно использовать одно из значений перечислителя xlFileFormat. Некоторые значения xlFileFormat представлены в таблице ниже:

Имя Значение Описание Расширение файла
xlCSV 6 CSV *.csv
xlExcel8 56 Книга Excel 97-2003 *.xls
xlHtml 44 Формат HTML *.htm; *.HTML
xlOpenDocumentSpreadsheet 60 Электронная таблица OpenDocument *.ods
xlOpenXMLWorkbook 51 Книга Open XML *.xlsx

Как сохранить активный лист рабочей книги Excel в заданном формате?

Напишем небольшую процедуру, позволяющую сохранять лист Excel в различных форматах:

const
  xlCSV = 6;
  xlExcel8 = 56;
  xlHtml =44;
  xlOpenDocumentSpreadsheet = 60;
  xlOpenXMLWorkbook = 51;
 
resourcestring
  rsESaveActiveSheet = 'Ошибка сохранения активного листа книги';
 
procedure SaveAs(const AFileName: TFileName; AFileFormat: integer);
begin
 try
   MyExcel.ActiveWorkBook.ActiveSheet.SaveAs(AFileName, AFileFormat);
  except
    raise Exception.Create(rsESaveActiveSheet);
  end;
end;

Метод Delete

Удаление рабочего листа Excel.

Этот метод используется без параметров. Например, представленный ниже код удаляет активный лист рабочей книги:

MyExcel.ActiveWorkBook.ActiveWorkSheet.Delete

Метод Select

Выделение рабочего листа книги Excel.

Вызов метода:

expression.Select(Replace)
Параметр Тип Описание
Replace Variant True, чтобы заменить текущее выделение указанного объекта. False — продлить нынешний отбор включая все ранее выбранные объекты. По умолчанию используется True

Не стоит путать активный лист — тот который отображается в данный момент в книге и выделенный — выделить Вы можете хоть 10 листов (в Excel это делается с зажатым Ctrl), но активный — только один.

Как выделить листа рабочей книги Excel в Delphi?

MyExcel.ActiveWorkBook.WorkSheets.Item[3].Select

Выделяет третий лист книги

Метод Copy

Копирование листа в другое место в рабочей книге.

Вызов метода:

expression.Copy(Before, After)
Параметр Тип Описание
Before Variant  лист до которого будет вставлен копируемый лист.
After Variant лист после которого будет вставлен копируемый лист

При этом, если вы используете параметр Before, то вы не должны использовать After и наоборот. Обращу Ваше внимание, что указывается именно ЛИСТ, а не индекс листа.

Как копировать лист Excel в Delphi?

MyExcel.ActiveWorkBook.WorkSheets.Item[1].Copy(After:=MyExcel.ActiveWorkBook.WorkSheets.Item[2])

В этом случае первый лист будет скопирован и вставлен после третьего.

Метод Paste

Вставка содержимого буфера обмена на лист Excel.

Вызов метода:

expression.Paste(Destination, Link)
Параметр Тип Описание
Destination Variant диапазон ячеек листа, который определяет, где будет вставлено содержимое буфера. Если этот аргумент опущен, используется текущий диапазон. Этот аргумент может быть указан только, если содержимое буфера обмена можно вставить в заданном диапазоне. Если этот параметр задан, то аргумент Link может не указываться
Link Variant True, для того чтобы установить связь с источником вставляемых данных. Если этот параметр задан, Destination не может быть использован. Значение по умолчанию False

Как вставить содержимое буфера обмена на лист Excel в Delphi?

MyExcel.ActiveWorkBook.ActiveSheet.Paste(Destination:=MyExcel.ActiveWorkBook.ActiveSheet.Range("D1:D5"))

В этом случае содержимое буфера будет вставлено в столбец D в строки с 1 по 5. Следует отметить, что если содержимое буфера не удовлетворяет условию, например в буфере только 1 число, то вызывается исключительная ситуация.

Метод ChartObjects

Возвращает объект, который представляет собой либо одну диаграмму (объект ChartObject) или совокупность всех диаграмм (объект ChartObjects) на листе.

Вызов метода:

expression.ChartObjects[Index]
Параметр Тип Описание
index Variant индекс диаграммы в коллекции (нумерация начинается с 1)

Как получить диаграмму на листе Excel в Delphi?

MyExcel.ActiveWorkBook.ActiveSheet.ChartObjects[1]

В этом случае будет получена первая диаграмма на листе.

Метод Move

Перемещение листа. Этот метод аналогичен методу Copy. Различие лишь в том, что после вcтавки копируемый лист удаляется из книги.

Вот та часть методов, которые я использовал когда-либо при работе с Excel в Delphi. Вообще можно сказать, что в Delphi можно управлять MS Excel не хуже, чем при непосредственной работе с этим приложением, главное не забывать, какой метод или свойство за что отвечает :). Ну, а для того, чтобы не забыть, я создал небольшой MindMap, который буду периодически дополнять и обновлять. Перейдя по ссылке, Вы сможете посмотреть объекты Excel, методы ими используемые, параметры методов и их типы в соответствии с типами Delphi. В общем небольшая графическая шпаргалка для любителей поразбираться с Excel в Delphi.

Книжная полка

Название:Разработка приложений Microsoft Office 2007 в Delphi

Описание Описаны общие подходы к программированию приложений MS Office. Даны программные методы реализации функций MS Excel, MS Word, MS Access и MS Outlook в среде Delphi.

купить книгу delphi на ЛитРес

0
0
голоса

Рейтинг статьи

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

 
SiJack
 
(2003-05-06 08:30)
[0]

Делаю так

ExcelApp.conect;

worckBooks.Open(//документ//);

— как здесь получить список всех листов ?

ExcelApp.disconect;


 
sniknik
 
(2003-05-06 08:38)
[1]

не знаю как в твоем случае но так уверен будет работать быстрее

ADOConnection.ConnectionString:=

«Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:


 
SiJack
 
(2003-05-06 09:00)
[2]

ОК


 
StarCon
 
(2003-05-06 09:05)
[3]

// Коннект к Экселю

ExcelObject := «Excel.Application»;

Reg := TRegistry.Create;

Reg.RootKey := HKEY_CLASSES_ROOT;

try

if Reg.OpenKey(«Excel.ApplicationCurVer», False) then begin

ExcelObject := Reg.ReadString(«»);

Reg.CloseKey;

end;

finally

Reg.Free;

end;

if VarIsEmpty(XL) then begin

XL := CreateOleObject(ExcelObject);

end else begin

XL.Workbooks.Close;

end;

XL.Visible := Visible;

if (FileExists(FileName)) and

(UpperCase(ExtractFileExt(FileName)) = «.XLS») then begin

XL.Workbooks.Open(FileName);

end else begin

XL.WorkBooks.Add;

end;

// Цикл по Листам

for i := 1 to XL.WorkBooks[1].WorkSheets.Count do begin

// Поочередно сохраняем названия листов

NumForm := XL.WorkBooks[1].WorkSheets[i].Name;





Подготовка

Откроем нашу среду разработки Delphi (в моем случае это Delphi 2010). Создадим новый проект. Должен сказать, что работа с Excel происходит через объекты COM. Поэтому нам надо подключить в раздел

USES

нашего проекта модуль

COMObj

. Так же нам понадобится модуль

ActiveX

. Это будет выглядеть примерно вот так:

unit Unit1;
 
interface
 
uses
  Windows,, ActiveX, COMObj;



Проверка наличия установленного Microsoft Excel в операционной системе

Теперь собственно нам нужно, как писалось выше, определить наличие Excel в системе. Если он не будет обнаружен, то мы сообщим об этом пользователю и завершим программу. Для этого создадим простенькую функцию и объявим её в секции

private

нашей формы

TForm1

:

private
    function CheckExcelInstalled(AValue: String): boolean;function TForm1.CheckExcelInstalled(AValue: String): boolean;
var
  FCLSID: TCLSID;
begin
  Result := (CLSIDFromProgID(PChar(AValue), FCLSID) = S_OK);
end;

Функция

CLSIDFromProgID

определена в модуле

ActiveX

и имеет следующее описание:

function CLSIDFromProgID(pszProgID: POleStr; out clsid: TCLSID): HResult;

Данная функция ищет

CLSID

, по соответствующему

ProgID

в реестре, в нашем случае мы ищем «Excel.Application». Если открыть реестр и перейти к ветке:


HKEY_LOCAL_MACHINESOFTWAREClasses

то там можно будет обнаружить много разделов. Среди них есть как раз нужный нам «Excel.Application» (при условии, что данное ПО установлено в системе). К сведению: у этого раздела имеется еще два подраздела:


HKEY_LOCAL_MACHINESOFTWAREClassesExcel.ApplicationCLSID

HKEY_LOCAL_MACHINESOFTWAREClassesExcel.ApplicationCurVer

Параметры функции:



pszProgID

: строка, содержащая ProgID.



clsid

: получает CLSID.

Возвращаемые значения:



S_OK

— CLSID создан успешно.



CO_E_CLASSSTRING

— CLSID зарегистрированный для ProgID неверен.



REGDB_E_WRITEREGDB

— ошибка записи в реестр.



E_OUTOFMEMORY

— нет памяти.



E_INVALIDARG

— указывает что один или более аргументов неверны. Стоит проверить правильность строки pszProgID.



E_UNEXPECTED

— неизвестная ошибка.

Теперь на событии

OnCreate

формы

TForm1

напишем следующий код:

procedure TForm1.FormCreate(Sender: TObject);
begin
  if not CheckExcelInstalled('Excel.Application') then
  begin
    Application.MessageBox(PChar('Для работы программы необходимо ' +
          'иметь установленное программное обеспечение Microsoft Excel.'#13#10
          + 'Приложение будет закрыто.'), 'Ошибка', MB_ICONERROR);
    Halt;
  end;
end;

При загрузке приложения ищем наличие Excel в системе. Если не находим, то выводим сообщение пользователю и закрываем программу с помощью метода

Halt

. Если находим, то просто показываем форму.



Проверить, запущен ли Microsoft Excel

Далее давайте кинем на форму одну кнопку TButton. На событии

OnClick

будем писать код работы с Excel. Первое что мы сделаем, это добавим локальную переменную типа

Variant

для доступа к Excel с именем, например,

FExcel

:

Теперь определимся, что мы хотим. Я всегда создавал новый экземпляр экселя, даже если он был уже запущен в системе. Но я это не вы. Поэтому я покажу вам, как можно использовать уже запущенный Excel. Создадим функцию и объявим ее так же в секции

private

:

privatefunction CheckExcelRun(AValue: String; var ADest: Variant): boolean;function TForm1.CheckExcelRun(AValue: String; var ADest: Variant): boolean;
begin
  try
    ADest := GetActiveOleObject(AValue);
    Result := true;
  except
    Result := false;
  end;
end;

Функция

GetActiveOleObject

определена в модуле

COMObj

и имеет следующее описание:

function GetActiveOleObject(const ClassName: string): IDispatch;

Функция возвращает ссылку на интерфейс

IDispatch

активного OLE-объекта указанного класса. Она использует информацию из таблицы активных объектов OLE (OLE running object table). Идентификатор класса объекта OLE в таблице активных объектов OLE передается в параметре

ClassName

. При невозможности выполнения функции GetActiveOleObject возникает исключение EOleSysError.

Теперь как пользоваться нашей функцией:

procedure TForm1.Button1Click(Sender: TObject);
var
  FExcel: Variant;
begin
  if not CheckExcelRun('Excel.Application', FExcel) then
    Exit;
end; 

Стоить пояснить. Если в системе запущена программа Excel, то функция

GetActiveOleObject

находит его, при этом функция

CheckExcelRun

возвращает

TRUE

. Ссылка на интерфейс передается через параметр «var ADest» нашей созданной переменной

FExcel

. Теперь вы можете работать с этим экземпляром Excel. Если же запущенный эксель не найден, то функция

GetActiveOleObject

вызывает исключение, простыми словами выходит ошибка. Поэтому мы поместили эту функцию в блок

try…except…end

. Вот в секции

except

мы присваиваем результат

FALSE

и т.о. выходим из процедуры

Button1Click

с помощью метода

Exit

. Но это все отступление. Давайте не будем искать уже запущенный ексель, а будем создавать новый и по завершению работы с ним корректно закроем его и высвободим память.



Создание нового экземпляра Microsoft Excel

Создать новый экземпляр можно с помощью функции

CreateOleObject

. Давайте сразу напишем шаблон.

 procedure TForm1.Button1Click(Sender: TObject);
var
  FExcel: Variant;
begin
  try
    // Создаем новый экземпляр Excel
    FExcel := CreateOleObject('Excel.Application');
    FExcel.Visible := true;
    ... // Тут ваш код
  finally
    // Если переменная не пустая, то...
    if not VarIsEmpty(FExcel) then
    begin
      // ...отключаем диалог с вопросом сохранять ли файл при выходе или нет
      FExcel.DisplayAlerts := false;
      // Закрываем Excel
      FExcel.Quit;
      // Присваиваем неопределенный тип, освобождая при этом 
      // процесс excel.exe, чтобы он мог завершиться. Если этого не
      // сделать, то процесс останется висеть в памяти.
      FExcel := Unassigned;
    end;
  end;
end;

Функция

VarIsEmpty

определена в модуле

Variants

и имеет следующее описание:

function VarIsEmpty(const V: Variant): Boolean;

Функция проверяет, определен ли тип значения

Variant

-переменной. Возвращает

TRUE

, если переменная имеет неопределенный тип (Unassigned). Если типу переменной соответствует значение какой-либо константы

VarType

типа

TVarData

, то функция возвращает

FALSE

.



Операции над программой Microsoft Excel из Delphi

Теперь давайте рассмотрим, что вообще можно делать с Excel из Delphi. Операций достаточно много. И все описать просто невозможно. Но если в моем описании не окажется нужного вам метода, то огорчаться не стоит. Методы можно узнать самому. Открываете Excel. Затем в меню

Сервис – Макрос – Начать запись

. Там жмем ОК и выполняем необходимые нам операции в Excel. Когда закончите, жмем на

Стоп

. Затем нажимаем комбинацию клавиш

Alt+F11

и перед нами открывается

редактор Visual Basic

. Вот в нем слева вверху есть древовидный список. В нем находится папка с названием

Modules

. В свою очередь в ней располагаются модули. Вот эти модули и есть ваши макросы. Кликнем два раза на тот модуль, который мы только что записали (если это первая запись, то модуль будет один). И тут будут отображены все ваши действия в виде исходного кода на языке Visual Basic. Вам остается только перевести это дело на Delphi.

По поводу констант. В Delphi придется объявлять их самим. Посмотреть чему они равны можно в том же редакторе Visual Basic. Делается это так. Вписываем любую нужную нам константу в редакторе. Кликаем правой клавишей мыши, чтобы появилось контекстное меню. И там выбираем пункт

«Quick Info»

. При этом будет показана всплывающая подсказка со значением этой константы. Все просто! Единственное оговорюсь. В Visual Basic будет показано так, например:

&HFFFFEFF4

, но Delphi этого не поймет. Надо объявлять в нем так:

$FFFFEFF4

.


Работа с окном (формой) Excel


FExcel.Visible := true;


Делать Excel видимым (True)/не видимым(False). При установке

Visible

в

FALSE

, программа Excel Так же пропадает из панели задач Windows.


FExcel.Application.EnableEvents := false;


Показывать (True)/не показывать(False) системные сообщения Excel. Рекомендую отключать сообщения при построении отчета. А сам код писать после создания экземпляра Excel. Это увеличит скорость создания отчета. Пример:

FExcel := CreateOleObject('Excel.Application');
FExcel.Visible := false;
FExcel.Application.EnableEvents := false;


FExcel.DisplayAlerts := false;


Показывать (True)/не показывать(False) предупреждающие сообщения.


FExcel.WindowState := xlMaximized;


Состояние окна Excel:


const xlMaximized = $FFFFEFD7 (или -4137)

— развернуть Excel на весь экран.


const xlNormal = $FFFFEFD1 (или -4143)

— восстановить Excel.


const xlMinimized = $FFFFEFD4 (или -4140)

— свернуть Excel на панель задач.


FExcel.ScreenUpdating := false;


Включить (True)/отключить (False) перерисовку окон. Используется для ускорения работы макроса, т.к. в это время не обновляется экран. Я в своих проектах не использовал данный метод, но возможно построение отчета будет выполняться быстрее, если отключить обновление окон Excel. После построения отчета перерисовку окон можно будет включить обратно.


Работа над книгой (Workbooks)


FExcel.Workbooks.Open(path);


Открытие существующей книги (где path — путь к фалу). Функция Open описана так:

function Open(
  const Filename: String; 
  UpdateLinks: Variant; 
  ReadOnly: Variant;
  Format: Variant; 
  Password: Variant; 
  WriteResPassword: Variant; 
  IgnoreReadOnlyRecommended: Variant; 
  Origin: Variant;
  Delimiter: Variant; 
  Editable: Variant; 
  Notify: Variant;
  Converter: Variant; 
  AddToMru: Variant
): Workbook;


FileName

— обязательный элемент. Имя открываемого файла, желательно с полным путем, иначе Excel будет искать этот файл в каталоге по умолчанию;


UpdateLinks

— Необязательный параметр. Определяет способ обновления связи в открываемом файле. Если данный аргумент отсутствует, то пользователю будет выдан запрос на определение способа обновления связей. Данный параметр имеет следующие допустимые значения:

0 – никакие связи не обновляются;

1 – обновляются внешние ссылки, но не обновляются удаленные ссылки;

2 – обновляются удаленные ссылки, но не обновляются внешние ссылки;

3 – обновляются оба типа ссылок


ReadOnly

— необязательный параметр. Если файл имеет атрибут только для чтения, то при открытии его в Excel выдается соответствующее предупреждение*. Чтобы его игнорировать, передайте в качестве данного параметра True.


Format

— необязательный параметр. При открытии текстового файла этот параметр определяет вид символов-разделителей. Ниже представлены допустимые значения данного аргумента:

1 – символы табуляции;

2 – запятые;

3 – пробелы;

4 – точка с запятой;

5 – разделители отсутствуют;

6 – вид разделителя определяется пользователем (с помощью параметра Delimiter).


Password

— необязательный параметр, задающий строку пароля, необходимого для открытия защищенной рабочей книги. Если при открытии защищенной книги данный аргумент отсутствует, то пользователю будет выдан запрос на ввод пароля*.


WriteResPassword

— необязательный параметр. Предназначен для задания пароля, необходимого для записи в рабочую книгу. Если при открытии защищенной книги данный аргумент отсутствует, то пользователю будет выдан запрос на ввод пароля*.


IgnoreReadOnlyRecommended

— необязательный параметр. В случае задания ему значения True этот аргумент позволяет устранить вывод сообщения с рекомендацией открытия книги только для чтения (в том случае, если данная рабочая книга была сохранена с параметром Read-Only Recommended).


Origin

— необязательный параметр. При открытии текстового файла этот параметр указывает, где был создан этот файл, что необходимо для правильного распознавания страницы кодировки. Значениями данного аргумента может быть одна из констант: xlMacintosh, xlWindows или xlMSDOS**. Если данный аргумент отсутствует, то используются текущие параметры операционной системы.


Delimiter

— необязательный параметр. Если открывается текстовый файл и параметр Format имеет значение, равное 6, то этот аргумент определяет символ-разделитель.


Editable

— необязательный параметр. Если файл является файлом MS Excel 4.0, то этот параметр при задании ему значения True позволяет открыть надстройку как видимое окно. По умолчанию ему присвоено значение False.


Notify

— необязательный параметр. Если файл не может быть открыт для записи, то при задании данному аргументу значения True файл будет добавлен в список уведомления. Если данный аргумент равен False или отсутствует, то открыть файл будет невозможно.


Converter

— необязательный параметр. Предназначен для определения индекса фильтра, который будет использован при открытии данного файла. Если фильтр не сможет распознать формат файла, то будут последовательно использованы все доступные фильтры.


AddToMRU

— необязательный параметр типа Variant. Если данный параметр имеет значение True, то рабочая книга будет добавлена в список недавно использованных файлов. По умолчанию ему присвоено значение False.



Примечание:


* Сообщения будут выведены на экран, если вы не отключили их с помощью:


FExcel.Application.EnableEvents := false;


Показывать (True)/не показывать(False) системные сообщения Excel.

** Delphi не знает о существовании констант, поэтому чтобы посмотреть их значения, нужно воспользоваться средствами VBA. Эти константы соответственно равны 1, 2 и 3.

***


FExcel.SheetsInNewWorkbook := X;


Задать количество страниц в книге, где X — это количество страниц. Диапазон значений 1..255. Данный метод применяется только с


FExcel.Workbooks.Add;


и в коде Delphi пишется перед методом Add.


FExcel.Workbooks.Add(path);

// path — путь к фалу

Создание новой книги. Причем создается стандартная книга с тремя листами. В этом методе можно указать стандартный тип шаблона Excel. Если же в нем указать имя (с полным путем) подготовленного файла (шаблоном может быть и «обычный» файл XLS, а не только файл XLT), то можно открыть книгу на диске как шаблон.


FExcel.Workbooks.Add(Template);


Template — Необязательный параметр. Этот параметр определяет, как будет создана рабочая книга. Если этот параметр будет иметь значение строки, определяющей имя файла (включая путь) существующей рабочей книги, то создается рабочая книга с использованием данного файла как шаблона. В случае когда данный параметр является одной из констант:

xlWBATExcel4IntlMacroSheet = 4;



xlWBATExcel4MacroSheet = 3;



xlWBATWorksheet = $FFFFEFB9 (или -4167);



xlWBATChart = $FFFFEFF3 (или -4109);


Создаваемая книга будет содержать один лист соответствующего типа. В том случае, если этот параметр отсутствует, то создается рабочая книга с количеством листов, определяемым значением свойства

SheetslnNewWorkbook

.

***


FExcel.Workbooks[1].SaveAs(path);

// path — путь к фалу

Сохранить книгу как… Чтобы укоротить код можно создать переменную

FWorkbook

типа

Variant

и присвоить ей ссылку либо на первую[1] книгу, либо на вновь созданную:


FWorkbook := FExcel.Workbooks[1];

либо

FWorkbook := FExcel.Workbooks.Add;


Тогда сохранение может выглядеть вот так:


FWorkbook.SaveAs(path);

// path — путь к фалу

Функция SaveAs описана так:

function SaveAs(
  FileName: Variant; 
  FileFormat: Variant; 
  Password: Variant;
  WriteResPassword: Variant;
  ReadOnlyRecommended: Variant;
  CreateBackup: Variant;
  AccessMode: Variant;
  ConflictResolution: Variant;
  AddToMru: Variant;
  TextCodePage: Variant;
  TextVisualLayout: Variant
): Workbook;


FileName

— необязательный параметр. Задает строку, определяющую имя сохраняемого файла. Можно указать полный путь или только имя файла (в этом случае файл будет сохранен в текущей папке).


FileFormat

— необязательный параметр. Данный параметр задает формат файла. Его значением может быть одна из констант, описанных в

таблице 1

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

Формат                                            Константа
 
Книга MS Excel                                    xlWorkbookNormal
Web-страница                                      xlHTML
Шаблон                                            xlTemplate
Текстовые файлы (с разделителями табуляции)       xlTextWindows
Текст Юникод                                      xlUnicodeText
Книга MS Excel 5.0/95                             xlExcel7
Книга MS Excel 95/97/2000                         xlExcel9795
CSV (разделители – запятые)                       xlCSVWindows
Файл MS Excel 4.0                                 xlExcel4
Файл MS Excel 3.0                                 xlExcel3
Файл MS Excel 2.1                                 xlExcel2
Книга MS Excel 4.0                                xlExcel4Workbook
WK4 (1-2-3)                                       xlWK4
WK3, FM3 (1-2-3)                                  xlWK3FM3
WK3 (1-2-3)                                       xlWK3
WK1, FMT (1-2-3)                                  xlWK1FMT
WK1, ALL (1-2-3)                                  xlWK1ALL
WK1 (1-2-3)                                       xlWK1
WKS (1-2-3)                                       xlWKS
WQ1 (Quattro Pro/Dos)                             xlWQ1
DBF4 (dBase IV)                                   xlDBF2
DBF3 (dBase III)                                  xlDBF3
DBF2 (dBase II)                                   xlDBF4
Форматированный текст (разделители – пробелы)     xlTextPrinter
Текст (Macintosh)                                 xlTextMac
Текст (MS-DOS)                                    xlTextMSDOS
CSV (Macintosh)                                   xlCSVMac
CSV (MS-DOS)                                      xlCSVMSDOS
DIF (Data Interchange Format)                     xlDIF
SYLK (Symbolic Link)                              xlSYLK
Надстройка MS Excel                               xlAddln

Таблица 1 — Форматы файлов MS Excel 2000 и соответствующие им константы.


Password

— необязательный параметр. Данный параметр определяет защитный пароль для сохраняемого файла. Пароль определяется строкой, содержащей не более 15 символов.


WriteResPassword

— необязательный параметр. Предназначен для задания строки, определяющей пароль для сохранения файла в качестве файла только для чтения. При последующем открытии файла будет выдан запрос на ввод этого пароля, и если он не будет введен, то файл будет открыт в режиме только для чтения.


ReadOnlyRecommended

— необязательный параметр. В случае присвоения ему значения True, последующее открытие файла на экране будет сопровождаться сообщением, говорящим о том, что этот файл рекомендуется открыть в режиме только для чтения.


CreateBackup

— необязательный параметр. Определяет возможность создания резервного файла (значение True).


AccessMode

— необязательный параметр. Этот параметр определяет режим доступа к рабочей книге и может иметь одно из следующих значений:

xINoChange – режим доступа не изменяется (равно 1);

xlShared – общие листы (равно 2);

xlExclusive – монопольный доступ (равно 3).


ConflictResolution

— необязательный параметр. Определяет способ разрешения конфликтов в том случае, если книга имеет общие листы. Значением данного свойства может быть значение одной из констант:

xlUserResolution — отображает окно диалога для разрешения конфликтов (равно 1);

xlLocalSessionChanges — автоматически принимаются изменения локального пользователя (равно 2);

xlOtherSessionChanges — принимаются другие изменения вместо изменений локального пользователя (равно 3).


AddToMru

— необязательный параметр. Позволяет поместить сохраняемый файл в список сохраненных файлов в меню Файл (File). Для реализации этой возможности значение этого аргумента должно равняться True.


TextCodePage

— необязательный параметр. В локализованной версии MS Office не используется.


TextVisualLayout

— необязательный параметр. В локализованной версии MS Office не используется.

***


FWorkbook.Save;


Если книга была открыта, то файл перезапишется. Если была создана новая книга, то будет задан вопрос о сохранении файла. Если вы нажмете «Нет», то будет вызвано исключение.


FWorkbook.Close;


Закрыть книгу. При этом если Excel видимый, то появится диалог с вопросом, хотите ли вы сохранить файл.

Функция Close описана так:

function Close(
  SaveChanges: Variant; 
  FileName: Variant; 
  RouteWorkbook: Variant
): Workbook;


SaveChanges

— Необязательный элемент. Если данный параметр опущен, то будет выдан запрос на сохранение файла. Если равен

FALSE

, то книга закроется без сохранения и каких-либо оповещений, даже при установленном параметре

FileName

. Если равен

TRUE

, то сразу появится проводник с предложением выбрать место, куда сохранить файл. При установленном параметре FileName, книга будет сохранена без появления каких-либо диалогов.


FileName

— Необязательный элемент. Данный параметр определяет имя файла, в который будут записаны изменения.


RouteWorkbook

— Необязательный элемент. Если он имеет значение True, то рабочая книга будет послана следующему получателю.



Примечание:

если файл уже существует, то тогда будет выведен диалог с вопросом о перезаписи файла.


Пример:

// Отключаем предупреждающие сообщения,
// в нашем случае чтобы не было вопроса о том,
// перезаписывать ли файл, если таковой существует
FExcel.DisplayAlerts := false;
// Сохраняем книгу в файл "123.xls" на диск D:
FWorkbook.Close(true, 'D:123.xls');


Установка параметров страницы, предварительный просмотр и печать


FExcel.Workbooks[1].WorkSheets[1] .Name := ‘Отчёт’;


Присваиваем первому листу в первой книге имя «Отчет». Если будем работать с самим листом, то чтобы не писать много кода мы можем просто объявить новую переменную, например,

FSheet

типа

Variant

:

 procedure TForm1.Button1Click(Sender: TObject);
var
  FExcel, FSheet: Variant;
begin
  try
    ... // Тут ваш код
  finally
    ...
      // Обязательно! нужно все созданные Variant-переменные 
      // очищать перед выходом
      FSheet := Unassigned;
      FExcel := Unassigned;
    ...
  end;
end;



Примечание

: в принципе Delphi сама следит за корректным удалением переменных, но я считаю будем правильным сделать это вручную. Не стоит полагаться на систему.

И присвоим ей ссылку на наш Лист1 первой книги:

FSheet := FExcel.Workbooks[1].WorkSheets[1];
FSheet.Name := 'Отчёт';

Вот так вот будет проще. Теперь мы будет обращаться уже к переменной

FSheet

, а не к

FExcel

.


FSheet.PageSetup.Orientation := 2;


Ориентация страницы (1 – книжная, 2 – альбомная).


FSheet.PageSetup.LeftMargin := X;


Отступ от левого края страницы


FSheet.PageSetup.RightMargin := X;


Отступ от правого края страницы


FSheet.PageSetup.TopMargin := X;


Отступ от верхнего края страницы.


FSheet.PageSetup.BottomMargin := X;


Отступ от нижнего края страницы.


FSheet.PageSetup.HeaderMargin := X;


Высота верхнего колонтитула страницы.


FSheet.PageSetup.FooterMargin := X;


Высота нижнего колонтитула страницы.

Где X — это отступ в пикселях. Можно в принципе воспользоваться функцией перевода из, например, сантиметров в пиксели. Делается это так:


FSheet.PageSetup.BottomMargin := FExcel.Application.CentimetersToPoints(1.5);


Это будет полтора сантиметра, а как там переводится в пиксели это не наша забота.


FSheet.PageSetup.Zoom := false (или значение в процентах Z);


Масштаб. Принимает следующие значения:


Z

— «Установить Z% от натуральной величины», где X – это количество процентов. Т.е. если вы решите включить масштабирование, то вам необходимо вместо

FALSE

подставить число, например: FSheet.PageSetup.Zoom := 100; (что означает 100%).


FALSE

— «Разместить не более чем на: X стр. в ширину и Y стр. в высоту, где:


FSheet.PageSetup.FitToPagesWide := 1;


Количество страниц в ширину (X).


FSheet.PageSetup.FitToPagesTall := 100;


Количество страниц в высоту (Y).


FSheet.PageSetup.CenterFooter := ‘Стр. &С из &К’

;

Центральный нижний колонтитул. В нем будет информации о номере страницы из всего страниц. Данные переменные (&C, &K и т.п.) описаны в справочнике самого Excel. Аналогично:


FSheet.PageSetup.LeftFooter:=’Левый нижний колонтитул’;

FSheet.PageSetup.RightFooter:=’Правый нижний колонтитул’;

FSheet.PageSetup.LeftHeader:=’Левый верхний колонтитул’;

FSheet.PageSetup.CenterHeader:=’Центральный верхний колонтитул’;

FSheet.PageSetup.RightHeader:=’&7Правый верхний колонтитул’;

*



Примечание:

*для изменения размера шрифта добавьте к колонтитулу управляющий символ «&» и размер шрифта, в нашем случае 7


// const xlAutomatic = $FFFFEFF7 (или -4105)



FSheet.PageSetup.FirstPageNumber := xlAutomatic;


Номер первой страницы. В данном случае «Авто».


FSheet.PageSetup.Order := 1;


Последовательность вывода страниц на печать (1 — вниз, затем вправо; 2 — вправо, затем вниз).


FSheet.PrintPreview;


Предварительный просмотр страницы. Если вы не продолжите печать, а нажмете «Отмена», то будет вызвано исключение.



Примечание

: Excel, перед выполнением этой команды, обязательно должен быть видимым (FExcel.Visible := true;).


FSheet.PrintOut;


Вывод страницы на печать. Функция PrintOut описана так:

function PrintOut(
  From: Variant; 
  To: Variant; 
  Copies: Variant;
  Preview: Variant;
  ActivePrinter: Variant;
  PrintToFile: Variant;
  Collate: Variant
): Workbook;


From

— необязательный параметр. Задает страницу, с которой начинается печать. Если этот аргумент отсутствует, то печать начинается с первой страницы.


To

— необязательный параметр. Задает последнюю печатаемую страницу. Если этот аргумент отсутствует, то печать продолжается до последней страницы.


Copies

— необязательный параметр. Задает количество печатаемых копий.


Preview

— необязательный параметр, принимающий одно из двух значений:


TRUE

— приводит к выводу перед печатью окна предварительного просмотра;


FALSE

(значение по умолчанию) — печать производится без предварительного просмотра.


ActivePrinter

— необязательный параметр. Задает имя активного принтера.


PrintToFile

— необязательный параметр. Если данный параметр имеет значение True, то производится печать в файл. При этом пользователю выдается запрос на ввод имени файла.


Collate

— необязательный параметр. Если ему задать значение True, то копии будут объединены.

Пример:

FExcel.Application.EnableEvents := true;
FExcel.DisplayAlerts := true;
FExcel.Visible := true;
FSheet.PrintOut(1, 2, 1, False, PrintToFile := True)

Печатаем с 1 по 2 страницы, одну копию, без предварительного просмотра в файл. Заметьте, что мы пропустили параметр ActivePrinter. Мы просто объявили PrintToFile := True.

***



Статья не окончена. Продолжение следует…

При составлении справочника я использовал собственные наработки и информацию со следующих сайтов:

1)

www.taurion.ru/excel

2)

www.superadm.net/index.php?name=pages&op=cat&id=19

3)

www.afalinasoft.com/rus/tips/

4)

www.codenet.ru/progr/delphi/stat/Excel-Export.php

Так же не обошлось без составления макросов в редакторе Visual Basic и последующим переводом кода из VBA в среду разработки Delphi 2010.

Для работы с Excel в Delphi, первым делом нужно в Uses указать модуль ComObj.

procedure TForm1.Button1Click(Sender: TObject);

var

XL: Variant;

begin

XL := CreateOLEObject(‘Excel.Application’); // Создание OLE объекта

XL.WorkBooks.add; // Создание новой рабочей книги

XL.visible := true;

end;

Как обратиться к отдельным ячейкам листа Excel в Delphi

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Value:=’30’;

//Результатом является присвоение ячейке [1,1] первого листа значения 30. Также к ячейке

//текущего листа можно обратиться следующим образом:

XL.Cells[1, 1]:=’30’;

Как добавить формулу в ячейку листа Excel в Delphi

XL.WorkBooks[1].WorkSheets[1].Cells[3,3].Value := ‘=SUM(B1:B2)’;

Форматирование текста в ячейках Excel, производится с помощью свойств Font и Interior объекта Cell:

// Цвет заливки

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Interior.Color := clYellow;

// Цвет шрифта

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Font.Color := clRed;

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Font.Name := ‘Courier’;

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Font.Size := 16;

XL.WorkBooks[1].WorkSheets[1].Cells[1,1].Font.Bold := True;

Работа с прямоугольными областями ячеек, с помощью объекта Range:

XL.WorkBooks[1].WorkSheets[1].Range[‘A1:C5’].Value := ‘Blue text’;

XL.WorkBooks[1].WorkSheets[1].Range[‘A1:C5’].Font.Color := clBlue;

//В результате в области A1:C5 все ячейки заполняются текстом ‘Blue text’.

Как выделить группу (область) ячеек Excel в Delphi

XL.Range[‘A1:C10’].Select;

Как установить объединение ячеек, перенос по словам, и горизонтальное или вертикальное выравнивание Excel в Delphi

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//Выделяем группу (область) ячеек

XL.Range[‘A1:C10’].Select;

// объединение ячеек

XL.Selection.MergeCells:=True;

// перенос по словам

XL.Selection.WrapText:=True;

// горизонтальное выравнивание

XL.Selection.HorizontalAlignment:=3;

//вериткальное выравнивание

XL.Selection.VerticalAlignment:=1;

//Возможны следующие значения:

//1 — выравнивание по умолчанию,

//2 — выравнивание слева,

//3 — выравнивание по центру,

//4 — выравнивание справа.

Как задать границы ячеек Excel в Delphi

XL.Selection.Borders.LineStyle:=1;

// значение может быть установлено от 1 до 10

Как выровнять столбцы Excel по ширине, в зависимости от содержания

XL.selection.Columns.AutoFit;

Как удалить столбец Excel в Delphi

Как задать формат ячеек Excel в Delphi

XL.columns[1].NumberFormat := ‘@’; // текстовый формат

XL.columns[1].NumberFormat := ‘m/d/yyyy’; //  формат дата

XL.columns[1].NumberFormat = ‘0.00%’ // формат процентный

XL.columns[1].NumberFormat = ‘h:mm;@’// формат время


Like this post? Please share to your friends:
  • Номер листа в колонтитуле excel
  • Новейший текстовый редактор word
  • Номер квартала по дате excel
  • Нов лист в word
  • Номер календарной недели в excel