Печать из Delphi в Excel по шаблону
Прилагается начальный код компонента ExcelView и процедуры экспорта и печати по шаблону в Excel для Delphi 2010/XE/XE2. Доступна полная версия с примерами использования.
Для чего это необходимо?
Excel в современном кабинете практически стал эталоном для ввода и анализа данных, сотворения итоговых отчетов и презентаций. Сначала, благодаря наглядности подхода и простоте освоения. Сделать «табличку» с подходящими автоматическими расчетами, добавить промежные итоги по нескольким аспектам и выстроить по сиим итогам радиальную диаграмму — все это можно создать без специальной подготовки, просто и непосредственно.
Потому полностью закономерно, что Excel обширно употребляется и для разработки разных печатных форм. Хотя по своим способностям он уступает спец генераторам отчетов, уже фактически для всех типовых документов можно отыскать готовые Excel-шаблоны, от коммерческого предложения до товарно-транспортной затратной по форме 1-Т (http://blanker.ru/doc/38)
Что и как экспортировать?
Предполагается, что нам необходимо заполнять за ранее сделанные шаблоны Excel. Под шаблонами предполагаются обыденные Excel-файлы, в которых отдельные ячейки и области обозначаются именами переменных. Туда и будут вставляться наши данные.
В шаблоне могут употребляться в качестве переменных:
- все published характеристики формы-владельца
- все составляющие, принадлежащие форме-владельцу, и их published характеристики
- все наборы данных (наследники TDataSet) обрабатываются особым образом, в шаблон подставляются значения их полей
Готовые решения на базе шаблонов
Составляющие для вывода в Excel достаточно просто отыскать в вебе, к примеру:
- TMS Flexcel Studio (http://www.tmssoftware.com/site/flexcel.asp) — $125
- ARExcelReport (http://www.vector-ski.com/reports/arexcelreport_index.htm) — бесплатный для некоммечерского использования, стоимость исходников — $125
- Don Excel Report (http://www.don-soft.com.ar/DonExcelReport/products.php) — $75
- AfalinaSoft XL Report (http://www.afalinasoft.com/download-xl-report.html) — «будет open source через месяц-два», — написано в 2003 году. Как досадно бы это не звучало.
- FlexCelReport (http://www.freewebs.com/flexcel/) — бесплатный, в исходниках. Для Delphi 5/6/7. Веб-сайт в истинное время недоступен. При пересборке пакетов под Delphi 2010-XE2 нужно заносить суровые конфигурации.
Do It Yourself
Библиотеки компонент всем неплохи (не считая цены, естественно), но даже наличие начальных текстов не постоянно выручает от вероятных проблем. Неувязка в том, что кода становится очень много. К примеру, один из наилучших (на мой взор) — FlexCelReport — это 916 Кб в 174 начальных файлах. Переносить этот проект на современные версии Delphi становится проблематично.
В таковых вариантах остается вариант написания процедуры либо компонента без помощи других. В качестве стартовой точки для ознакомления можно советовать http://www.webdelphi.ru/2009/08/rabota-s-excel-v-delphi-osnovy-osnov/, http://www.codenet.ru/progr/delphi/stat/export-to-excel.php и т.д.
Таблицы и поля в шаблонах
У всех компонентостроителей — свои правила записи переменных в шаблонах. В FlexCelReport — это именованные спектры с 2-мя подчеркиваниями «__MAIN__» и переменные в ячейках вида ##DataSetName##FieldName, в ARExcelReport — <#table:DataSetName> . <#table> и т.д.
Мы желаем еще проще. Лишь FieldName и ничего излишнего.
А где задается DataSet?
В первой колонке. Отведем всю колонку под служебную информацию, благо в Экселе их (колонок) и так наиболее чем довольно. При выводе будем эту колонку скрывать.
Очередное допущение — если мы желаем вывести все записи из DataSet-а в виде таблицы, ставим перед его именованием звездочку (*tblOrders). Без звездочки будут выводиться лишь значения полей текущей записи.
Характеристики и составляющие в шаблонах
Для вывода в шаблоне published характеристики текущей формы запишем в ячейке имя этого характеристики в квадратных скобках: [Caption], [Tag]. Характеристики компонент формы записываются с именованием компонента через точку: [Memo1.Lines]. Поддерживаются (пока) характеристики последующих типов: Integer, Int64, String, Double, Boolean, TStrings.
Реализация
Весь код находится в файле ExcelView.pas (7 Кб). Компонент TExcelView имеет единственное published свойство TemplateFileName — это название файла шаблона. Способ Show открывает Excel и запускает процесс экспорта.
Можно и не устанавливать компонент в гамму, а сходу выполнить функцию
Направьте внимание на параметр Owner! Это тот компонент (форма, датамодуль), чьи характеристики, составляющие, датасеты и будут экспортироваться в Excel.
Экспорт dbgrid в excel delphi
Как из DBGrid перенести данные в имеющийся Excel файл
- размер шрифта уменьшить размер шрифта прирастить размер шрифта
- Печать
Как из DBGrid перенести данные в имеющийся Excel файл
Вы тут
В прошлой статье (Читаем файл Excel (xls) в Delphi) был рассмотрен метод чтения данных из xls файла и его импорт в Delphi. Сейчас перейдем к сохранению, т.е. к экспорту данных из Delphi. Экспорт, как и импорт, будет осуществляться через посредника, т.е. Excel. Потому для работы приложения будет нужно установленная копия MS Excel 2003-2010 (выше не тестировал).
Добавьте на форму клавишу, диалог сохранения, и таблицу StringGrid. Для того чтобы возникла возможность редактирования таблицы StringGrid нужно в ее свойствах включить опцию goEditing:
Зрительные изготовления для нашего примера готовы. Перебегаем к написанию кода.
Как и в случае чтения xls нам пригодится библиотека ComObj. Добавьте ее в uses. Ниже приведен листинг процедуры экспорта, добавьте его опосля главного слова implementation.
procedure Xls_Save(XLSFile:string; Grid:TStringGrid);
const
xlExcel9795 = $0000002B;
xlExcel8 = 56;
var
ExlApp, Sheet: OLEVariant;
i, j, r, c:integer;
begin
//создаем объект Excel
ExlApp := CreateOleObject(‘Excel.Application’);
//делаем окно Excel невидимым
ExlApp.Visible := false;
//создаем книжку для экспорта
ExlApp.Workbooks.Add;
//создаем объект Sheet(страничка) и указываем номер листа (1)
//в книжке, в который будем производить экспорт
Sheet := ExlApp.Workbooks[1].WorkSheets[1];
//задаем имя листу
Sheet.name:=’Данные_из_Delphi’;
//считываем кол-во столбцов и строк в StringGrid
r:=Grid.RowCount;
c:=Grid.ColCount;
//считываем значение из каждой ячейки и отправляем в таблицу Excel
for j:= 1 to r do
for i:= 1 to c do
sheet.cells[j,i]:=Grid.Cells[i-1,j-1];
//отключаем все предупреждения Excel
ExlApp.DisplayAlerts := False;
//обработка исключения при сохраннении файла
try
//формат xls 97-2003 если установлен 2003 Excel
ExlApp.Workbooks[1].saveas(XLSFile, xlExcel9795);
showmessage(‘Файл сохранил 2003-ий кабинет’);
except
//формат xls 97-2003 если установлен 2007-2010 Excel
ExlApp.Workbooks[1].saveas(XLSFile, xlExcel8);
showmessage(‘Файл сохранил 2007 либо 2010-ый кабинет’);
end;
//закрываем приложение Excel
ExlApp.Quit;
//очищаем выделенную память
ExlApp := Unassigned;
Sheet := Unassigned;
Delphi , Технологии , OLE Automation MSOffice
Статья Экспортировать TDBGrid в Excel без использования OLE раздела Технологии OLE Automation MSOffice быть может полезна для разрабов на Delphi и FreePascal.
Комменты и вопросцы
:: 2011-09-09 07:38:11 :: re:Экспортировать TDBGrid в Excel без использования OLE
Что вот это такое – "ADOX_TLB"? У меня оно подчеркивается..
Это что за классы:
_Catalog;
_Table;
_Column; ?
Они у меня тоже не работают.
Пишу в Delphi2010
:: 2011-10-12 21:20:29 :: re:Экспортировать TDBGrid в Excel без использования OLE
Если пристально прочесть 1-ый комментарий, то вы увидите:
До этого всего нужно импортировать библиотеку типов ADOX, которая будет употребляться, чтоб сделать файл Excel и ее внутренней структуры: в среде Delphi.
Материалы статей собраны из открытых источников, обладатель веб-сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени создателя. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с обладателем веб-сайта.
Программирование на Delphi. Часть 1. Установка Delphi Community Edition (бесплатная версия)
Компания Embarcadero в 2018 году представила Delphi Community Edition — бесплатную версию знаменитой среды разработки Delphi. Применять её могут студенты, стартаперы, маленькие команды, некоммерческие организации. Условия использования: лицензия на внедрение продолжает действовать до того времени, пока прибыль физического лица либо компании от приложений Delphi не достигнет 5 000 баксов США (Соединённые Штаты Америки — государство в Северной Америке), либо штат команды разрабов не превзойдет 5 человек.
Мы ставим Delphi в учебных целях, потому ее можно применять безвозмездно. А опосля заработка первых 5 тыщ баксов её можно приобрести: цены начинаются от 98 999 руб. (практически $1600).
При помощи Delphi Community Edition можно разрабатывать мультиплатформенные приложения на Windows, Android, iOS и macOS. В данной для нас статье мы пошагово пройдём процесс установки среды и напишем тестовое приложение под Windows. Delphi постоянно был инвентарем для резвого старта в разработке под Windows на языке Pascal, это мы сейчас и проверим.
Примерное время установки: около 40-60 минут.
1. Скачка бесплатной версии Delphi
Для того, чтоб получить доступ к Delphi Community Edition, пройдите по данной для нас ссылке https://www.embarcadero.com/ru/products/delphi/starter/free-download
Заполните форму, введенный пароль сохраните. В качестве компании я указал один из собственных веб-сайтов, телефон настоящий, но мне никто пока что не звонил :). Основное: верно укажите электрическую почту.
На почту для вас придёт письмо с ключом — его лучше сохранить. Опосля отправки формы начнётся процесс загрузки. Если загрузка не начнётся, ссылка будет также в письме. Письмо для вас нужно — если оно не пришло, инспектируйте мусор. Если совершенно не пришло, регайтесь поновой на иной ящик. Я регился два раза на различные email — один на доменную почту, 2-ой на Gmail. Оба раза всё было ок. Ах так смотрится письмо:
2. Установка Delphi Community Edition
Введите Serial number из письма в почте и нажмите Register.
Программка начнёт связываться с серверами Embarcadero и попробует зарегистрировать вашу копию. На одном компе у меня всё вышло одномоментно, на другом с третьей пробы. Судя по сообщениям, неувязка была с серверами Embarcadero. Если всё вышло, перебегайте к последующему разделу статьи. Если нет, попытайтесь создать последующее. На снимке экрана ниже кликните по ссылке «Trouble connection…»
3. Выбор платформ для установки
4. Первичная настройка среды разработки Delphi
1-ое окно при загрузке Delphi