Как Записать в Excel Данные из Delphi • Закрытие файла

Отчет из Delphi в Excel — Delphi для начинающих

Доброго времени суток, форумчане. Курсовая работа подходит к концу и у меня образовалась проблема. Вывести в Excel квартальный отчет,т.е. отчет за 3 месяца(90 дней). Как выводить обычный отчет в Excel я знаю, но с данным видом сталкиваюсь первый раз. Помогите, пожалуйста. Вложение 276593 Вложения Книга13.xls (20.5 Кб).

[expert_bq id=»1570″]Если пользователь полез туда куда не следует то это его личная проблемма и к проблеммам разработки не имеет никакого отношения. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Отредактировать xls файл в офисе никак нельзя назвать «не следует». К тому же этот файл уже есть (следует из задачи) интересно откуда он взялся :facepalm:. Отсранение от проблемы путем фразы «проблеммам разработки не имеет никакого отношения.» характеризует программиста в глазах у клиента не очень хорошо.
Delphi и Excel – разработка приложений MS Excel в Delphi

Delphi Excel | Форум информационной безопасности.

Ещё более сложный тип данных delphi record — «запись». Внутри записи могут содержаться поля разного типа. Поэтому описание типа «запись» должно содержать информацию об адресе начала записи; о длине записи; список адресов начала полей, составляющих запись, и тип этих полей.

Создание отчетов в Delphi

Цель работы : Научиться создавать отчеты к базам данных в среде программирования Delphi используя экспортирование данных в Excel .

Постановка задачи. Интерфейс рабочего окна формы «Отчет по товарам», приведен на рисунке 1.

hello_html_m28e49e74.png

Отчет будет содержать шесть столбцов. Данные для отчета берутся из сетки DBGrid 1 , записи которой формируются SQL -запросом в DBQuery 3 при создании Form 6 (событие FormCreate ). Запрос содержит семь полей из таблиц Товары, Поставщик и Поставка.

Код SQL -запроса (в название поля включается название таблицы):

hello_html_m29acdf06.png

Значение полей выделенной курсором записи отображаются в компонентах DBEdit 1- DBEdit 6 и DB Мемо1 (для поля Описание). В компонентах Label прописан поясняющий текст (синим и красным цветом).

Действия, проводимые ниже, более подробно рассматриваются в лабораторной работе №14.

1.2 Устанавливаем свойство Form 6.Caption = Отчет по товарам .

1.3 Знакомим Form 6 с Form 1 и DatMod (с помощью File -> Use Unit .. ).

1.4 Переходим на Form 1 . В Меню приложения добавляем новую закладку Отчеты -> Отчет по Товарам.

1.5 Дважды кликаем по пункту меню Отчет по Товарам и в обработчике события OnClick пишем код:

hello_html_m4bc07281.png

1.7 Сохраняем проект ( File -> Save All ) и компилируем ( F 9) .

2.1 На модуль dm положите компонент ADOQuery ((закладка dbGo ) и источник DataSource (закладка DataAccess), которому дайте имя dsQuery3 .

Для ADOQuery3: свойство Connection=ADOConnection1 .

Для dsQuery3: свойство DataSet = ADOQuery3 .

2.3 Переходим на Form 6 и выделяем DbGrid1 . В инспекторе DbGrid1 установите свойство DataSource = dsQuery 3 .

2.4 Переходим на dm . Выделяем компонент ADOQuery3 и кликаем в свойстве SQL по строке TWideStrings . В окне редактора SQL -запросов пишем код для отчета по товарам (см. рисунок 2). Нажимаем OK .

hello_html_4f12c00c.png

2.5 В Инспекторе ADOQuery3 устанавливаем свойство: Active = True .

2.6 Сохраняем проект ( File -> Save All ) и компилируем ( F 9) .

2.7 Переходим на Form 6 и выделяем DBMemo 1. Устанавливаем свойства:

DataSource = dm . dsQuery 3 // Выбираем источник данных.

DataField = Описание // Выбираем нужное поле из запроса.

2.8 Выделяем DBEdit 1. Устанавливаем свойства:

DataSource = dm . dsQuery 3 // Выбираем источник данных.

DataField = КодТовара // Выбираем нужное поле из запроса.

2.9 Аналогично установите свойства для DBEdit 2- DBEdit 6.

2.10 По желанию можно провести форматирование колонок в DBGrid 1.

2.11 В ADOQuery3 проверьте свойство: Active = True .

2.12 Сохраняем проект ( File -> Save All ) и компилируем ( F 9) .

Окончательный вид окна «Отчет по товарам» приведен на рисунке 3.

hello_html_7708034e.png

При нажатии на кнопку «Создать отчет в Excel » данные из DBGrid 1 должны быть импортированы в Книгу Excel . Передача данных осуществляется по Com -технологии . Функции для работы с Com -объектами находятся в модуле ComObj , которых необходимо будет подключить к приложению.

3.1 Переходим на Form 6 . Выделяем Button 1 (Создать отчет в Excel ).

3.2 Создаем обработчик события OnClick компонента Button 1 (двойным щелчком по кнопке) и переходим в редактор кода (окно Code ) .

hello_html_272709b9.png

3.4 В процедуре обработки события Button 1 Click пишем код с подробным комментарием:

hello_html_m3c6ce0a4.png

hello_html_5087d204.png

hello_html_5087d204.png

Замечание. При вводе кода некоторых свойств будут идти сообщения типа «Неизвестный. », путем красного эффекта подчеркивания. Это просто Delphi пока не видит листов и ячеек созданной книги Excel .

3.5 Сохраняем проект ( File -> Save All ) и компилируем ( F 9) .

3.6 Запустите проект. Выберите пункт Отчеты->Отчет по товарам и нажмите кнопку Создать отчет в Excel . Появится книга Excel (см. рисунок 4) с одним листом Отчет, который можно редактировать и сохранить.

hello_html_38b10b6e.png

Усовершенствуйте проект своего варианта задания, организуя выборку данных SQL -запросом, и созданием отчета в Excel по этим данным.

[expert_bq id=»1570″]Доброго времени суток, как сохранить позицию строки StringGrid чтобы после загрузки из файла можно было продолжать добавлять новые данные в следующие строки, а не перезаписывать старые. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Доброго времени суток, господа! Такой вопрос: как можно выполнить форматирование диска ПК под управлением Win7, будет ли делать запрос Контроль Учетных Записей (UAC), и можно ли делать это в скрытом режиме? Искал материиал что на этом форуме, что на других, везде материал по Win XP. Разумеется, хотелось бы написать в Delphi.

Отчет delphi excel начинающих доброго времени — evolveStar Поиск — Отчет из Delphi в Excel — Delphi для начинающих

Доброго времени суток, уважаемые форумчане. Возник вопрос: Использую Delphi 7 + EhLib (3.6). Есть открытый ADOQuery(произвольный), у него есть поле Fields[n]. Можно ли каким либо способом выбрать все не повторяющиеся записи кроме перебора вручную (типа запроса к DataSet’у вида «select distinct. «)?

Delphi + Excel

Опять таки доступ к полю при адо осуществляется по имени этого самого поля (т.е. датасетю.ФилдБайНэйм(‘Имя’))

С какой это стати?
Доступ через ADO идет только через SQL запросы, а датасетю.ФилдБайНэйм(‘Имя’), это всего лишь компонента которая в конечно счете все твои действия с БД переводить на SQL запросы. А как ты осуществишь SQL запрос к объеденным ячейкам (а если объедены и строки)?

А я к сожалению встречал. Стоило нажать на кнопку сохранить в 2003 excele и все. Доступа через ADO нет

Это уже запрос объеденных ячеек (т.е. из заданной задачки можно предположить: что они есть).

Но автор сам в задачке выбрал OLE. И в место того чтобы подсказать ты его запутываешь каким то ADO (может он впервые еще сталкивается с SQL). Да к тому же еще не зная подойдет ли его файлик (а судя из задачки он у него уже есть) для подключения через ADO.

Действительно сказка — при отсутствующем подключении.

Сдесь полностью согласен: вносить данные в новую книгу очень удобно и быстро. А вот извлекать запаришься — особенно если пользователь что то изменил в книге (для этих случаев существуют БД и СУБД (excel к ним не относиться)).

Судя по этой строчке автор не знает как обращаться с TMemo. А ты его хочешь приобщить к SQL.

Я пользуюсь своим опытом, а вот ты кажется точно телепатией обладаешь — раз уверен в своей ADO по отношению к формату которой даже БД не является.

Они из тьмы редактирования и сохранения действительно могут один раз удалить файл. Но вот сохранение обычная процедура поэтому ее как раз надо рассмотреть (и вам уважаемыйsax_ol тоже).

Видно кто то привык на лабораторных «дурить» преподавателей (сдавая программы которые могут работать только при определенных условиях). А потом пользователи ваши программ начинают повсеместно вспоминать Била Гейтся и глючную винду .

Замечу что тема называется [Delphi + Excel], а не [ADO+ Excel] .

АДО это одна из технологий которую поддерживает делфи, ну и она умеет работать с Excel. Опять таки про что вы?

Добавлено: Про Била нашего Гейтса тоже не понятно к чему. При чем тут лабораторные, при чем тут дурить. вощем какойто поток сознания.

Насчет ссылки на темы я имел ввиду что для автора желательно рассмотреть все возможные способы работы с Excelем а не только с ado.

PS: Преимущество ADO над OLE ты так еще и не показал. :-(. И к тому же заставляешь меня повторяться — что говорит о невнимательности (мне достаточно уже отвечать своими же цитатами).
Преимущество же OLE над ADO (в рамках Excelя) я уже показывал

Ведь OLE использует специальные интерфейсы для работы с excel`ем. И его функциональности вполне достаточно для полной работы с excel`ем (а не только на уровне БД).

И его функциональности вполне достаточно для полной работы с excel`ем (а не только на уровне БД).

— тупик может образоваться если использовать ADO и excel, а Ole — выход из этого тупика. Только некоторые его и видеть не хотят.

в один момент могут вдруг взять и открыть базу в любом соотв. редакторе, отредактировать, сохранить и потом наморщить лоб и с изумлением спрашивать у разработчиков — «а какого собственно все перестало работать?».

Если пользователь полез туда куда не следует то это его личная проблемма и к проблеммам разработки не имеет никакого отношения.

Отредактировать xls файл в офисе никак нельзя назвать «не следует». К тому же этот файл уже есть (следует из задачи) интересно откуда он взялся :facepalm:. Отсранение от проблемы путем фразы «проблеммам разработки не имеет никакого отношения.» характеризует программиста в глазах у клиента не очень хорошо.

В данном случае, имея ту информацию, которую имеем, я считаю что это АДО. С адо я это решу в пол дня, с оле раза в 2 дольше. Просто тупо на писанину.

Плюс адо мне дает тучу возможноствей запростотак, это и поис и быстрое позиционирование на нужные данные, и унифицированный интерфейс пользователя, использование транзакций, и тыпы

С какого перепугу? можно не только данные, можно и структуру похерить, да что там структура, данные тоже не абы как туда занесены. Так что мимо.

Вопросы же взаимосвязоности таблиц (который может нарушить редактор) я не рассматриваю т.к. для этого обычно используется СУБД с определенным доступом к файлам с данными, и к этим файлам трудно добраться (если ты конечно не системный администратор на сервере, но с них спрос совсем другой).

Для тех кто в танке объясню на примере. Для БД в формате mdb существует специализированный редактор под названием Microsoft Access, как вы думает что будет с этим файлом если его там отредактировать. А какая ситуация с xls?

Как раз таки оно и есть. Человек вмешивается в логику программы. А тут уж как повезет. если он с пониманием, то никаких потерь если без мозгов то это засада. Не важно каой это файл офиса или еще чего, вот к примеру ини файлы, xml файлы и т.п. легко можно редактировать блокнотом, но а там как повезет.

И что оно делает? на такое с адо ваще ничего писать не надо и делать при этом будет гораздо больше, нежели то что вы перечислили. андерстенд? smile.gif

Я уже отвечал что она делает Будте внимательней. То что с ado писать ничего не надо я заметил — ведь вашего варианта еще не было

Скоко раз напоминать прописную истину что EXCEL может хранить таблицы БД но необязательно в виде таблицы БД, т.е. он не относится к формату БД и поэтому к нему не всегда можно обратиться через SQL (разве это для ADO нечиго не меняет?)

Вот мы лет эдак 6+ назад делали систему, которая закачивала данные из филиалов в консолидированную бд. ДАнные шли разного формата, и эксель и пдф и csv и . так вот всем были спущены указания как формировать эти самые данные, по вашей логике, всяк мог накосячить чего угодно, а мы должны угадать чего накосячили?

— это ты говоришь. А автор попросил помочь ему разобраться как работать с Excelем через delphi. Будь пожалуйста повнимательней и обращай внимание хотябы на название темы.

и чем более эффективную технологию можно применить тем лучше. Изменятся входные данные — условия, изменится и подход.

— Не зная что находится в файле (а может данные уже поменялись, а не такие как ты себе представляешь). И что переписывать усю программу, или достаточно будет разбавить ее несколькими процедурами?.

-бессмысленный подход. Например: у клиента поменяется версия офиса, а вместе с ней и формат файла. Если для Ole это будет по боку то для самостоятельного разбора файла придется переписывать программу (а для этого придется изучить еще и новую структуру xls файла).

[expert_bq id=»1570″]Усовершенствуйте проект своего варианта задания, организуя выборку данных SQL -запросом, и созданием отчета в Excel по этим данным. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Замечание. При вводе кода некоторых свойств будут идти сообщения типа «Неизвестный. », путем красного эффекта подчеркивания. Это просто Delphi пока не видит листов и ячеек созданной книги Excel .

Экспорт в Excel с Delphi без превосходства

Ещё более сложный тип данных delphi record — «запись». Внутри записи могут содержаться поля разного типа. Поэтому описание типа «запись» должно содержать информацию об адресе начала записи; о длине записи; список адресов начала полей, составляющих запись, и тип этих полей.

Текст ячеек.

Теперь до любой ячейки мы можем добраться следующим образом:

Количество столбцов увеличилось с 256 до 16 384, количество строк в листе возросло с 65 536 до 1 048 576. Ускорены вычисления в больших листах, содержащих множество формул, благодаря поддержке Office Excel 2007 нескольких процессоров и многопоточных наборов микросхем.

Создание отчетов в Delphi
Доброго времени суток! Помогите, пожалуйста, нужна срочно программы на Delphi для решения динамической транспортной задачи. ТЗ прилагается. Кому по силам, отзовитесь. Вложения Задание для решения транспортной задачи.docx (99.2 Кб).
[expert_bq id=»1570″]Доброго времени суток, подскажите есть у кого исходник программы удалённого управления компом, что бы можно было видеть что делает пользователь и так же управлять самому. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Эта процедура позволяет перейти к элементу с указанным номером, то есть осуществляет прямой доступ к компонентам файла . При прямом доступе компоненты файла нумеруются от 0 до n-1, где n – число компонентов в файле.

Чтение и запись файлов в delphi — Обучение программированию с нуля

Видно кто то привык на лабораторных «дурить» преподавателей (сдавая программы которые могут работать только при определенных условиях). А потом пользователи ваши программ начинают повсеместно вспоминать Била Гейтся и глючную винду .

Подключение к файлу

Для связи программы с файлом используется специальная переменная – «Файловая переменная». Объявляется она так же как и любая переменная в Delphi. Тип это переменной может быть File для типизированных (хранящих данные определенного типа) файлов, а можно указать TextFile , что будет означать тип обычного текстового файла. Объявление переменной:

В исполняемом коде программы выполняется подключение к внешнему файлу:

Команда AssignFile , выполняет связь файловой переменной с внешним файлом. Вторым параметром указывается адрес файла. Он может быть задан относительным или абсолютным. Если указать только имя файла, то программа будет пытаться обнаружить его в той же директории, где она сама и находится. Абсолютный путь указывается от корневого диска:

Использование относительной директории дает возможность не привязываться к конкретным дискам и адресам. Например:

AssignFile(f, «data\input.txt» ); // во вложенной папке относительно директории с программой
AssignFile(f, «..\input.txt» ); // на уровень выше директории с программой
AssignFile(f, «..\data\input.txt» ); // во вложенной папке на уровень выше директории с программой

После того как выполнено подключение, выполняется процедура, устанавливающая режим работы с файлом. В основном это режим чтения или записи. Эти режимы назначаются процедурами Reset() (для чтения) и rewrite() (для записи):

* Для команды Rewrite() следует учитывать, что при ее выполнении, она либо создает файл, указанный в файловой переменной, либо если он уже есть перезаписывает файл заново, удаляя старый без какого-то предупреждения.

Любую из указанных команд можно использовать без команды AssignFile() . Для этого достаточно вторым параметром указать путь к файлу. Таким образом, она сразу выполнит привязку файла к файловой переменной и назначит режим работы с этим файлом:

Reset(f, «C:\myprog\input.txt» ); // чтение
Rewrite(f, «C:\myprog\input.txt» ); // запись

[expert_bq id=»1570″]В нетипизированных файлах информация считывается и записывается в виде блоков определенного размера, в них могут храниться данные любого вида и структуры. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] По завершении работы с файлами, особенно в случае записи в них данных, необходимо корректно завершить работу с файловой переменной. Это делается для того, чтобы сохранить все внесенные в файл изменения.

Как записать в файл делфи. Запись в текстовый файл Delphi. Чтение из входного файла

Здесь мы ввели всего одну переменную FData типа Variant. В эту переменную мы прочитали за 1 операцию весь диапазон, занятый данными. После того как диапазон прочитан FData будет содержать матрицу, каждый элемент которой будет типом данных, определенным в Excel.

Понятие «объект» как особый тип данных.

К полям записи обращаются по нотации «переменная_запись»«.»«имя_поля».

Такая же нотация характерна и для объекта. Вспомним, что компоненты Delphi — это объекты, встроенные в IDE (в среду разработки).

Но объекты принципиально отличаются от записей. Настолько же, насколько обычная переменная отличается от динамической.

Объекты содержат не только данные (которые в объекте называются полями), но и процедуры (и функции).

К этим процедурам можно обращаться с помощью всё той же нотации с «точкой», как и к полям с данными.

Например, вспомним, как мы очищали содержимое компонента Memo (удаляли из него весь текст).

Для этого мы использовали процедуру (в объектах встроенные процедуры называются методами!) Clear. Так как ей не нужны параметры, её можно писать без скобок, то есть вместо Clear() записать просто Clear.

Сам объект Memo1 создаётся по шаблону (типу) Tmemo.

Более того. Сами типы являются объектами, поставляемыми со средой IDE. В них содержится метод (процедура) Create, называемый конструктором.

Собственно, он и создаёт экземпляр объекта в программе по собственному образу и подобию. Объект — тип может быть только один в пределах видимости IDE. Но своих копий (экземпляров) он может создать сколько угодно (конечно, каждому экземпляру должно быть дано уникальное имя).

В программе экземпляр объекта оформляется как переменная объектного типа.

Здесь объявлены переменная Form1 три переменных типа Tmemo.

var Form1: Tform1; Memo1:TMemo; Memo2:TMemo; Memo3:TMemo; и так далее.

Tform1, Tmemo и другие встроенные в IDE объекты-типы называются Delphi компонентами. При размещении компонента на форму IDE вызывает конструктор объекта-типа автоматически при размещении компонента на форму.

При создании собственных объектов программист сначала конструирует типобъект, а потом вызывает метод Create этого типа для создания экземпляра объекта.

Замечание. На будущее — типы, по которым создаются объекты, в объектном программировании называются «классами (Class)».

Delphi вывод в excel
С какой это стати?
Доступ через ADO идет только через SQL запросы, а датасетю.ФилдБайНэйм(‘Имя’), это всего лишь компонента которая в конечно счете все твои действия с БД переводить на SQL запросы. А как ты осуществишь SQL запрос к объеденным ячейкам (а если объедены и строки)?
[expert_bq id=»1570″]Цель работы Научиться создавать отчеты к базам данных в среде программирования Delphi используя экспортирование данных в Excel. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Видно кто то привык на лабораторных «дурить» преподавателей (сдавая программы которые могут работать только при определенных условиях). А потом пользователи ваши программ начинают повсеместно вспоминать Била Гейтся и глючную винду .

Работа с Excel — C# для начинающих

Музыка НТР 🤍 Мой сайт 🤍 Группа во ВКонтакте 🤍 Twitter 🤍 Telegram 🤍 К лайкам можно добавить монеты на новый микрофон: Яндекс.Деньги 410012968442604 WebMoney R641001728345 Спасибо! Привет мир! Урок про ComboBox! Очень нужный и полезный. Принимать раз в день) Приятного просмотра. Спасибо.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: