|
Почетный модератор
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Инструкция: Использование Excel из Delphi20.01.2009, 07:23. Показов 241937. Ответов 0
Метки нет (Все метки)
Тут иногда бывают вопросы о том, как можно из Delphi работать с документами Excel. Решил написать такую инструкцию, где рассказано об основных действиях.
Для работы с OLE нужно к строке Uses добавить модуль ComObj. Так же нужно объявить переменную типа Variant.
Ap := CreateOleObject('Excel.Application'); После этого нужно либо создать новую книгу: Ap.Workbooks.Add; либо открыть файл: Ap.Workbooks.Open(<имя файла>); Что бы открыть файл только для чтения, нужно указать: Ap.Workbooks.Open(<имя файла>,0,True); где True и указывает, что файл открывается только для чтения. По умолчанию окно Excel не будет отображаться... что бы оно появилось, нужно выполнить Ap.Visible := True; Но это желательно делать в последний момент, т.к. когда окно видимое, то все изменения в нём происходят медленнее. Поэтому, лучше оставить его невидимым, сделать там все необходимые изменения, и только после этого сделать его видимым или закрыть. Если вы его оставите невидимым, то процесс EXCEL.EXE останется висеть в памяти, даже когда будет закрыто ваше приложение. Что бы закрыть Excel, выполните Ap.Quit или Ap.Application.Quit. Честно говоря, я не знаю, чем они отличаются. Что бы при закрытии не выдавался запрос на сохранение файла, можно отключить сообщения: Ap.DisplayAlerts := False; Что бы записать или прочитать содержимое ячейки можно использовать Ap.Range[<имя ячейки>] или Ap.Cells[<позиция по Y>,<позиция по X>] Ap.Range['D1'] := 'Ляляля'; Ap.Cells[1,4] := 'Ляляля'; Эти две строки выполняют одно и тоже действие: записывают строку "Ляляля" в ячейку D1 Читать значение из ячейки таким же образом: S := Ap.Range['D1']; или S := Ap.Cells[1,4]; Так же можно записывать значение сразу в несколько ячеек... можно перечислить через точку с запятой или указать диапазон через двоеточие:
Всё это можно применять как к отдельным ячейкам, так и к группам ячеек, строк, столбцов и т.п. Я буду показывать примеры на Ap.Cells... но Вам никто не мешает использовать Ap.Range['D5'], Ap.Range['A2:E8'], Ap.Columns['B:F'] и т.п.
Excel.Range[Excel.Cells[1, 1], Excel.Cells[5, 3]].Select; а также любые другие комбинации выбора ячейки с окончанием .select - выбор 1 или группы ячеек С выбранными ячейками возможны следующие преобразования: 1) объединение ячеек Excel.Selection.MergeCells:=True; 2) перенос по словам Excel.Selection.WrapText:=True; 3) горизонтальное выравнивание Excel.Selection.HorizontalAlignment:=3; при присваивании значения 1 используется выравнивание по умолчанию, при 2 - выравнивание слева, 3 - по центру, 4 - справа. 4) вериткальное выравнивание Excel.Selection.VerticalAlignment:=1; присваиваемые значения аналогичны горизонтальному выравниванию. 5) граница для ячеек Excel.Selection.Borders.LineStyle:=1; При значении 1 границы ячеек рисуются тонкими сплошными линиями. Кроме этого можно указать значения для свойства Borders, например, равное 3. Тогда установится только верхняя граница для блока выделения: Excel.Selection.Borders[3].LineStyle:=1; Значение свойства Borders задает различную комбинацию граней ячеек. В обоих случаях можно использовать значения в диапазоне от 1 до 10. ] //9 и 11 - лучшие \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Установка пароля для активной книги может быть произведена следующим образом:
Снятие пароля с книги аналогично, использовуем команду
Установка и снятие пароля для активного листа книги Excel производится командами
Вспомогательные операции в EXCEL Удаление строк со сдвигом вверх:
Установка закрепления области на активном листе Excel
Спасибо VampireKB за дополнения
132
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 20.01.2009, 07:23 | |
|
Ответы с готовыми решениями:
0
Использование функций Excel из Delphi
Возможно ли использование Variant Excel, Book, Sheet без установленного Excel? |
| 20.01.2009, 07:23 | |
|
Помогаю со студенческими работами здесь
1
Как в Delphi сделать Excel таблицу, не употребляя компонент TStringGrid и связать ее с Delphi Использование БД в Delphi Использование Interop Excel Использование библиотек на C# в Delphi Использование case Delphi Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|