![]() |
| | |||||||
| Регистрация | Правила | Блоги | Пользователи | Социальные группы | Поиск | Сообщения за день | Все разделы прочитаны |
| |
![]() |
| |
| | #1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Humanoid Администратор Регистрация: 12.06.2008 Адрес: Зеленоград
Сообщений: 10,230 Репутация: 8457 (2821) |
Тут иногда бывают вопросы о том, как можно из 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 за дополнения Последний раз редактировалось Humanoid; 07.04.2010 в 16:13. Причина: Добавлено | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Другие темы раздела | |
| видео в MediaPlayerе Delphi Добрый день. Помогите пожалуйста. На форме проигрывается видео-файл. Нормально работает, все отображается, но отображается не во весь экран. Видео-ролик проигрывается по открытию формы (OnShow), MediaPlayer.visible:=false; Display стоит Panel или Form. FullScreen не помогает..... видео в MediaPlayerе Delphi | Delphi как получить длительность песни mp3 как получить длительность песни и как можно прокрутить песню дальше при помощи тракбара. как получить длительность песни mp3 |
![]() |
| Похожие темы | |
| Тема | Автор |
| VBA Использование возможностей VBA при расчетах в MS Excel У меня такая вот проблемка, написал програмку на VBA , а в одном месте пишет ошибку, в чем дело не пойму, помогите кто чем может, заранее спасибо. Вот фрагмент кода програамы с указанием места ошибки : Private Sub CommandButton3_Click() StrName1 = Trim(Str(StrNomer + Nomer)) With ActiveSheet ... | Neon7777 |
| Delphi для начинающих Использование Указатели в Delphi когда использовать указатели в Delphi? Покажите, пожалуйста простого примера Добавлено через 48 минут 31 секунду Гражданины форума! Вы здес?!!!!!!!!!!................ | kentaw |
| VBA Excel - использование результатов фильтра Народ, поможите!!! Как программно можно использовать результаты применения фильтра? т.е. как можно строить циклы по отобранным в фильтре записям? к примеру отобранные строки имеют номера 28, 145, 599 каким образом можно создать цикл только по этому диапазону? | chkalov |
| VBA Использование Grid в VBA (на форме Excel) Господа, кто знает, как впендюрить компонент Grid на форму Excel? Вообще, где взять такой компонент... Данные из БД показать нечем! У всего того списка Grid и RDBGrid, который мне удалось подключить, проблемы с лицензией... | AntoshaXP |
| Опции темы | |
| |
| |