Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 10:31   #1
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
Вопрос Диаграмма в Excel

Ответьте, пожалуйста на вопрос, сам вообще не понимаю как это сделать. Во общем у меня из базы данных идет экспорт данных в excel:

Код:
var
 XLApp,Sheet,Colum:Variant;
 index,i,j:Integer;
begin
 XLApp:= CreateOleObject('Excel.Application');
 XLApp.Visible:=true;
 XLApp.Workbooks.Add(-4167);
 XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
 Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
 Colum.Columns[1].ColumnWidth:=20;
 Colum.Columns[2].ColumnWidth:=20;
 Colum.Columns[3].ColumnWidth:=20;
 Colum.Columns[4].ColumnWidth:=20;
 Colum.Columns[5].ColumnWidth:=20;

 Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
 Colum.Rows[2].Font.Bold:=true;
 Colum.Rows[1].Font.Bold:=true;
 Colum.Rows[1].Font.Color:=clBlue;
 Colum.Rows[1].Font.Size:=14;

 Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт'];
 Sheet.Cells[1,2]:='Анализ по городам';
 Sheet.Cells[2,1]:='Город';
 Sheet.Cells[2,2]:='Число корреспондентов';

  index:=3;
  for i:=1 to FindQuery2.RecordCount do
   begin
    for j:=1 to DBGrid1.Columns.Count do
    Sheet.Cells[Index, j]:=DBGrid1.Fields[j-1].AsString;
    Inc(Index);
    FindQuery2.Next;
   end;

А сделать, чтобы на основе этих файлов в Excele сразу же делалась диаграмма?
Gapro вне форума Ответить с цитированием
Старый 10.12.2009, 11:41   #2
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Пользуйтесь поиском вот к примеру http://www.programmersforum.ru/showthread.php?t=56402
и просмотрите темы внизу страницы
S@fer вне форума Ответить с цитированием
Старый 10.12.2009, 13:41   #3
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Я эти темы просмотрел сразу, там ничего полезного в данном плане не нашел
Gapro вне форума Ответить с цитированием
Старый 10.12.2009, 13:55   #4
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Посмотри вот эту статью Диаграммы Excel в Delphi
и здесь Excel ЧаВо часть IV: Chart, Shape, Picture

Последний раз редактировалось S@fer; 10.12.2009 в 14:04.
S@fer вне форума Ответить с цитированием
Старый 10.12.2009, 14:22   #5
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Код:
  DataRange:=XLApp.ActiveWorkBook.ActiveSheet.UsedRange;
 XLApp.ActiveWorkBook.ActiveSheet.ChartObjects.Add(10,10,100,100);
 Chart:=XLApp.ActiveWorkBook.ActiveSheet.ChartObjects[XLApp.ActiveWorkBook.ActiveSheet.ChartObjects.Count];
 Chart.Chart.ChartWizard(Source:=DataRange,
    Gallery:=4,
    Format:=5,
    PlotBy:=2,
    CategoryLabels:=1,
    SeriesLabels:=1,
    HasLegend:=true,
    Title:='Отчет',
    CategoryTitle:='колво',
    ValueTitle:='тоже');
Вот такой код получился для диаграммы, при компиляции все нормЮ но когда отправляет в Excel, то на третей строчке останавливается с ошибкой.

Помогите плиз, уже вю голову сломал, не вижу ошибки(

Последний раз редактировалось Gapro; 10.12.2009 в 15:26.
Gapro вне форума Ответить с цитированием
Старый 10.12.2009, 16:32   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Знаете, а я делал по-другому.
Я строил диаграмму в программе, а потом экспортировал ее в Excel.
Все было очень просто...
mihali4 вне форума Ответить с цитированием
Старый 10.12.2009, 17:51   #7
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

А каким образом можно выгрузить диаграмму из Delphi в Excel?
Gapro вне форума Ответить с цитированием
Старый 10.12.2009, 18:35   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

"Давно тут сидим..." (к/ф "Белое солнце пустыни")
Давно это было.
Не мудрствовал лукаво - делал снимок, сохранял во временном файле, а из него вставлял...
Я вам обработчик дам, а вы разбирайтесь:
Код:
procedure TfChart.BitBtn1Click(Sender: TObject);
var rct: TRect;
begin
BitBtn1.Visible:=False;
GroupBox1.Visible:=BitBtn1.Visible;
CheckBox3D.Visible:=BitBtn1.Visible;
Application.ProcessMessages;
rct.Left:=Chart1.Left;
rct.Top:=Chart1.Top;
rct.Right:=Chart1.Left+Chart1.Width;
rct.Bottom:=Chart1.Top+Chart1.Height;
Image1.Width:=Chart1.Width;
Image1.Height:=Chart1.Height;
Image1.Canvas.CopyRect(Image1.ClientRect,Canvas,rct);
Image1.Repaint;
Image1.Picture.SaveToFile('C:\tmp.bmp');
Hide;
Application.ProcessMessages;
if BitBtn1.Caption='Экспорт' then
try
main.Workbook.WorkSheets[1].Cells[25,2].Select; //это понятно - задаем, куда вставлять картинку будем
main.Workbook.WorkSheets[1].Pictures.Insert('C:\tmp.bmp').Select;
except
;
end;
DeleteFile('C:\tmp.bmp');
Close;
end;
Естественно, где-то в главной форме этому предшествует
Код:
...
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Application.EnableEvents := false;
Workbook:= ExcelApp.WorkBooks.Add;

...
А после обработчика
Код:
ExcelApp.Visible := true;
Workbook.WorkSheets[1].Cells[1,1].Select;
...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диаграмма skiffter Компоненты Delphi 18 13.10.2009 20:18
Диаграмма в Excel!!!!! oblachko БД в Delphi 1 30.06.2009 07:34
Диаграмма Викдон Паскаль, Turbo Pascal, PascalABC.NET 1 06.12.2008 16:26
Диаграмма Людмилка Microsoft Office Excel 0 24.10.2008 06:51
диаграмма blackstersl Общие вопросы Delphi 0 27.09.2008 22:07