Delphi excel имя всех листов

Содержание

  1. Excel в Delphi. Методы объекта WorkSheet (лист).
  2. План статьи:
  3. 1. Объекты Microsoft Excel
  4. 2. Как активировать лист рабочей книги Excel?
  5. 3. Методы листа книги Excel
  6. Метод Calculate
  7. Метод CheckSpelling
  8. Метод SaveAs
  9. Delphi excel имя всех листов

Excel в Delphi. Методы объекта WorkSheet (лист).

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

План статьи:

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

1. Объекты Microsoft Excel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Метод Calculate

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

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

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

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

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

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

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

Метод CheckSpelling

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

При этом в качестве 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?

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

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

Метод SaveAs

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

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

Параметр Тип Описание
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?

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

Если Вам необходимо сохранить файл 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 в различных форматах:

Источник

Delphi excel имя всех листов

Открываю нужный Excel файл:
ExcelApp:=CreateOleObject(«Excel.application»);
if OpenDialog1.Execute then
Edit1.Text:=OpenDialog1.FileName;
workbook:=ExcelApp.workbooks.add(Edit1.Text);
ExcelApp.visible:=True;

Далее мне нужно открыть нужный мне лист и вернуть его имя, типо так:
list:=Workbook.ActiveSheet.Name;
Только вот возвращает пока имя первого листа, а не тот который я открываю.
Как получить имя выбранного листа?


DiamondShark © ( 2008-01-24 12:55 ) [1]


> мне нужно открыть нужный мне лист

«Нужный» — это какой?
Доступ к листам осуществляется либо по индексу, либо по имени:
Workbook.Sheets(1).Activate
Workbook.Sheets(«Лист1»).Activate


> Только вот возвращает пока имя первого листа, а не тот который
> я открываю.

В приведённом коде ты никакой лист не «открываешь»


> Как получить имя выбранного листа?

«Выбранного» — это какого? Кем и каким образом выбранного?
В книге есть просто листы и активный (он же текущий) лист.
Тебе какой надо?


vvrz ( 2008-01-24 13:41 ) [2]

«Нужный» — это тот который выберет пользователь.
Пример: пользователь открывает через диалог файл xls, в нем допустим 5 листов, он просматривает содержимое каждого листа, находит лист с нужной информацией и оставляет этот лист активным(текущим), вот имя этого листа и нужно присвоить list.
Следующий файл может содержать, допустим 20 листов.
Имя файла xls, количество и наименование листов заранее не известно.

Источник

 
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;


Для работы с 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;@’// формат время


Есть один файл в экселе там грубо говоря отчет по форме X. В самой программе в определенных полях (например TEdit) я заполняю данные которые должны замениться в файле в определенной ячейке в определенном листе (листов всего 11). Примерно понял как сделать это в активном листе:

Excel := CreateOleObject('Excel.Application');
Excel.Workbooks.Open('C:1.xls');
Excel.Range['F7']:='Привет';
Excel.save;
Excel.ActiveWorkbook.Close;
Excel.Application.Quit;

Но как сделать в остальных листах? (или может я не так делаю, или может можно каким то более удобным не стандартным компонентом)

Kromster's user avatar

Kromster

13.5k12 золотых знаков42 серебряных знака72 бронзовых знака

задан 15 мар 2012 в 10:05

zerpico's user avatar

Например, так:

WorkSheet := Excel.Workbooks[1].WorkSheets['Лист1'];
WorkSheet.Cells[1,1]:='Пока';

Установите справку в офисе для VBA, там описана иерархия классов и методов. Все довольно прозрачно.

ответ дан 15 мар 2012 в 11:18

Yura Ivanov's user avatar

Yura IvanovYura Ivanov

26.3k2 золотых знака29 серебряных знаков57 бронзовых знаков

2

Like this post? Please share to your friends:
  • Delphi excel закрыть без сохранения
  • Delphi excel есть sheet
  • Delphi excel добавить один лист
  • Delphi excel добавить лист в книгу
  • Delphi excel для всего листа