Delphi построить график в excel

Обновлено: 04.07.2024

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

Диаграммам Excel соответствует объект Chart, который может располагаться как на отдельном листе, так и на листе с данными. Если объект Chart располагается на листе с данными, ему соответствует член коллекции ChartObjects объекта Worksheet, и создание диаграммы нужно начать с добавления элемента в эту коллекцию:

Параметрами этого метода являются координаты левого верхнего угла и размеры диаграммы в пунктах (1/72 дюйма).

Если же диаграмма располагается на отдельном листе (не предназначенном для храпения данных), то ее создание нужно начать с добавления элемента в коллекцию Sheets объекта Application (отличающуюся от коллекции Worksheets тем, что она содержит листы всех типов, а не только листы с данными):

Арр.WorkBooks[l].Sheets.Add( , .1 .xlWBATChart).

В этом случае первый параметр метода Add идентифицирует порядковый помер листа, перед которым нужно поместить лист с диаграммой (или листы, если их несколько), второй параметр - порядковый номер листа, после которого нужно поместить лист с диаграммой (используется обычно один из них), третий параметр - количество создаваемых листов, а четвертый - их тип. Значения четвертого параметра совпадают со значениями первого параметра метода Add коллекции WorkBooks объекта Application, и при использовании имей соответствующих констант следует определить их в приложении-контроллере.

Простейший способ создать диаграмму с точки зрения пользователя - построить ее с помощью соответствующего мастера на основе прямоугольной области с данными. Точно так же можно создать диаграмму и с помощью контроллера автоматизации - для этой цели у объекта Chart, являющегося свойством объекта ChartObject (члена коллекции ChartObjects), имеется метод ChartWizard. Первым параметром этого метода является объект Range, содержащий диапазон ячеек для построения диаграммы, а вторым - числовой параметр, указывающий, какого типа должна быть эта диаграмма:

Возможные значения параметра, отвечающего за тип диаграммы, можно найти в справочном файле.

У объекта Chart имеется множество свойств, которые отвечают за внешний вид диаграммы и с помощью которых можно изменить ее точно так же, как это делают пользователи вручную. Ниже приводится пример создания заголовка диаграммы и подписей вдоль ее осей (отметим, что оси есть не у всех типов диаграмм).

Еще один способ создания диаграммы - определить все ее параметры с помощью свойств объекта Chart, включая и определение серий, на основе которых она должна быть построена. Данные для серии обычно содержатся в объекте Range, содержащем строку или столбец данных, а добавление серии к диаграмме производится путем добавления члена к коллекции SeriesCollection, например:

В данном примере к диаграмме, созданной на отдельном листе, специально предназначенном для диаграмм, добавляется одна серия на основе диапазона ячеек другого листа.

Надо в excel вывести данные и по ним построить график. Данные построила с графиком беда. Все время вылазят какие-то ошибки. Уже и макрос делала и пыталась перевести на Delphi, но увы и ах.

Что я делаю не так? офис у меня 2013, делфи RAD studio 10 seatle __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Построение графика в Excel
Возможно ли имея формулу построить график в Exel через делфи О_О если да, то подскажите как это.

Построение графика в Excel
Подскажите как мне сделать так что бы строился график, у меня все данные в отчет заносятся через.

Построение графика в excel на основе выборки
Здравствуйте, помогите пожалуйста, программа должна брать данные из xls файла, и на их основе.

Построение графика в Excel
Здравствуйте, как построить график функции в экселе, если не дан промежуток? сама функция.

Да ДВА же выражения . )

Source - раз выражение
Range - два выражение
:= - а это вообще не выражение, а оператор присваивания, которому здесь по правилам Паскаля вообще не место

Компилятор просматривает код слева направо, видит первое выражение и пытается его вычислить - и не знает что такое "Source". До всей остальной хрени, что указана после него, вообще дело не доходит.

И не будет "фурычить")

Что такое "Source" ?
Ну не знает компилятор что это такое)

Добавлено через 1 минуту
а , пардон, ты его объявила как вариант ..


а где ты присваиваешь значение переменной Source ? И какое ?

но и текст ошибки теперь совсем другой, разве не заметила ?

и курсор при этом встал рядом с проблемным местом в тексте, разве не заметила ?) Добавлено через 52 секунды
mss, он и до этого компилипровался когда вызывала процедуру начинал выводить данные а на графике глючил теперь выясняй на какой конкретно строке в теле метода TCalcOfDefl.RWExcel возникает ошибка несовпадения типов

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

о чем он собственно тебя и предупреждает

Добавлено через 3 минуты

Что это вообще за фигня ?

Где тут (в одной колонке . ) аргументы, а где значения, по которым должен построен график ?

mss, D : D это все элементы колонки D я в excele специально выделяла так и строила график и все было зашибись а программно нехочет

Добавлено через 4 минуты
если сделать 'С292' то пишет: OLE error 800A03EC
если сделать 'D292' то пишет: Несовпадение типов

Вот чего ты лапшу вешаешь ?)

Выделенный диапазон должен содержать аргументы функции (X) и соответствующие им значения (Y = F(X))
Каждая пара значений X и Y и есть указание чарту о том что график проходит именно через точку именно с этими координатами.

А у тебя где аргументы и соответствующие им значения в колонке D ?

mss, сама была удивлена, но в excel 2013 действительно все так, могу попробовать видео записать есле не верите) Ну попробуй так задать диапазон:
Source := App.WorkBooks[1].WorkSheets[1].Range[App.WorkBooks[1].WorkSheets[1].Cells[3, 2], App.WorkBooks[1].WorkSheets[1].Cells[4, 92]] только пока что не доканца разобралась как ее заставить рисовать кривую а не две полоски mss, Я вас еще немного подастаю) почему онделает так? как подредактировать, не подскажите?

Построение графика в Excel
Здавствуйте! Прошу помощи. Проблема при построении графика в Excel: по двум рядам данных строится.

Построение графика в Excel
Как построить график, если есть всего два значения, например i=2.028 и w=134рад/с.

Построение графика в excel
Доброго времени суток! При построении графика в excel мне необходимо чтобы в графике стояли просто.


Построение графика функции в Excel
Здравствуйте! Помогите пожалуйста. Кто может построить график функции в Excel: y = ^ + 7cosx


Построение графика функции в excel
Подскажите как построить график функции в exele с таким условиям? \sqrt+ ^ = 10 .

Экспорт данных в Excel и построение графика
Привет всем Нужно сделать экспорт в Excel и по экспортированным данным построить график.

Надо в excel вывести данные и по ним построить график. Данные построила с графиком беда. Все время вылазят какие-то ошибки. Уже и макрос делала и пыталась перевести на Delphi, но увы и ах.

Что я делаю не так? офис у меня 2013, делфи RAD studio 10 seatle __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Построение графика в Excel
Возможно ли имея формулу построить график в Exel через делфи О_О если да, то подскажите как это.

Построение графика в Excel
Подскажите как мне сделать так что бы строился график, у меня все данные в отчет заносятся через.

Построение графика в excel на основе выборки
Здравствуйте, помогите пожалуйста, программа должна брать данные из xls файла, и на их основе.

Построение графика в Excel
Здравствуйте, как построить график функции в экселе, если не дан промежуток? сама функция.

qwertehok, смотрела, не помогло

Добавлено через 2 минуты

Ruta,
Где у вас данные ?

Добавлено через 1 минуту
Имею ввиду для графика.

Narimanych, Я данные в эксель вывожу и по ним хочу чертить Ruta, каждый фактический параметр вызываемой подпрограммы должен быть представлен выражением, имеющим тип, совпадающий или неявно приводимый к типу соответствующего формального параметра. mss, поняла сейчас попробую. Только вот один момент: у меня Format показывает как System.SysUntils а должно быть судя из описания команды integer. И Еще один вопрос у меня все команды связанные с excel почему-то подчеркиваются красным и пишется что неизвестный индентификатор но при этом все компилируется и до графика все выводится, из-за чего это? у меня Format показывает как System.SysUntils а должно быть судя из описания команды integer

Белиберда какая-то ..
Иллюстрируй свою глубокую мысль соотв.фрагментом кода)

у меня все команды связанные с excel почему-то подчеркиваются красным и пишется что неизвестный индентификатор Иллюстрируй свою глубокую мысль соотв.фрагментом кода) Format : integer (1..10) — может быть числом от 1 до 10, в зависимости от типов галерея. Если этот аргумент опущен, Microsoft Excel выбирает значение по умолчанию в зависимости от типа диаграммы и источника данных. Например Format = 5 для нашего случая заставит Excel прорисовать на диаграмме линии сетки.

Narimanych, уже пробовала

Добавлено через 5 минут

Так ничего же не изменилось - ты продолжаешь их нарушать) mss, я уже начала догадываться об этом, можете носом тыкнуть? поменяла FormatE на Format все стало integer но все равно не работает

и не заработает)

потому что ДВА выражения !
А компилятор ожидает ОДНО !

Построение графика в Excel
Здавствуйте! Прошу помощи. Проблема при построении графика в Excel: по двум рядам данных строится.

Построение графика в Excel
Как построить график, если есть всего два значения, например i=2.028 и w=134рад/с.

Построение графика в excel
Доброго времени суток! При построении графика в excel мне необходимо чтобы в графике стояли просто.


Построение графика функции в Excel
Здравствуйте! Помогите пожалуйста. Кто может построить график функции в Excel: y = ^ + 7cosx


Построение графика функции в excel
Подскажите как построить график функции в exele с таким условиям? \sqrt+ ^ = 10 .

Экспорт данных в Excel и построение графика
Привет всем Нужно сделать экспорт в Excel и по экспортированным данным построить график.

Я заполнил несколько ячеек Excel данными, а теперь не могу на их основе сделать диаграмму. Ругается на тип Chart и на xlColumns. Что не так? И можно ли заполнять ячейки данными через цикл?


12.1k 12 12 золотых знаков 37 37 серебряных знаков 68 68 бронзовых знаков


@KromStern, а можете показать валидный код? Писал код по учебнику, и не понимаю как решить этот вопрос

Поскольку этот вопрос перекликается с предыдущим в плане навыков программной работы с приложениями MSOffice (да и вообще с COM-объектами), попробую объяснить порядок составления своего Delphi-кода на основе VBA. Напоследок отложим непосредственно ответ на сам вопрос.

Во-первых, нужно представлять себе иерархию объектов MS Office-приложения. В Excel она несколько проще, чем в Word.

Собственно, по большому счету все. Остальное запоминать не обязательно, потому что мощным помощником выступает сам Excel/Word, позволяя записывать все "ручные" действия пользователя в макросы.

Приступим. Первый этап - размещение данных на нужном листе. Здесь пользуемся приведенной ранее иерархией:

Замечательно то, что большинство свойств принимает тип Variant, то есть - практически любые значения: строки, integer, Double и т.п.

Есть несколько способов задать значение ячейке: Formula , FormulaR1C1 , Value , etc. Нужно понимать их различия и пользоваться необходимыми соответственно задаче. Чаще всего используются именно Formula и FormulaR1C1

Так же полезно понимать, что каждая ячейка на самом деле это объект Range, то есть представляет собой любое, произвольное количество ячеек и работа с несколькими ячейками из состава Range не отличается от работы с одной ячейкой, полученной через Cells .

Далее необходимо на лист добавить график. Мы не знаем, как это сделать, да и из-за однократности задачи помнить, где этот график находится в иерархии объектов - расточительно.

Заходим в меню "Вид", нажимаем "Макросы - Запись макроса" и нажимаем "ОК". Переходим на вкладку "Вставка" и добавляем простую гистограмму. Далее выбираем дипазон данных (я взял B1-B5 ), изменяем подписи (выбрал A1-A5 ) подтверждаем изменения и останавливаем запись макроса ("Вид" - "Макросы" - "Остановить запись"). Теперь осталось войти внутрь макроса ("Вид" - "Макросы" - "Макросы"-"Изменить"). Должен получиться примерно такой код VBA:

И вот тут нам понадобится справка, потому что дальше не все так тривиально. Разберем по строчкам:

ActiveSheet.Shapes.AddChart.Select - последний метод ( Select ) нас не интересует, поскольку он просто выделяет добавленную фигуру на листе. Для программной работы выделение объекта излишне. А вот AddChart добавляет объект Shape , а нам нужен объект Chart. VBA дальше идет по пути наименьшего сопротивления - использует свойство Application.ActiveChart ( ActiveChart.ChartType = xlColumnClustered и т.п.). Но нам это не подходит, поскольку (повторюсь) при программной работе с Excel нежелательно использовать "активные элементы", нужно работать именно с тем, что мы добавили. Выясняем, что у объекта Shape есть свойство Chart, именно оно нам нужно. Соответственно, всю дальнейшую работу строим именно на этом, переводя код VBA в Delphi:

Здесь следует обратить внимание, что мы избегаем называть возможно локализованное имя листа (оно может зависеть от языка Office, пользователь может его переименовать и т.п.). Поэтому берем реальное наименование из свойства Sheet.Name.

Вот и все. Полный получившийся код:

В заключение замечание по поводу используемых констант xlColumnClustered и подобных: можно подключить в uses модуль Excel2010 , ExcelXP или другой, имеющийся в вашей версии Delphi. Но можно и подставлять значения констант вручную, через поиск в Google (лучше брать ссылки на первоисточник - microsoft). Например, поиск по xlColumnClustered первой же ссылкой дает перечень констант XlChartType Enumeration

Читайте также: