Почетный модератор
11526 / 4321 / 448
Регистрация: 12.06.2008
Сообщений: 12,421
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Инструкция: Использование Excel из Delphi20.01.2009, 07:23. Показов 234874. Ответов 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 за дополнения
131
|
20.01.2009, 07:23 | |
Ответы с готовыми решениями:
0
Использование функций Excel из Delphi Существует ли инструкция по размещению проекта Delphi на GitHub? Возможно ли использование Variant Excel, Book, Sheet без установленного Excel? Как в Delphi сделать Excel таблицу, не употребляя компонент TStringGrid и связать ее с Delphi |
20.01.2009, 07:23 | |
20.01.2009, 07:23 | |
Помогаю со студенческими работами здесь
1
Использование БД в Delphi Использование Interop Excel Использование библиотек на C# в Delphi Использование case Delphi Использование stringgrid-Delphi Использование интерфейсов из С++ в Delphi Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |