Текущий архив: 2003.05.19;
Скачать: CL | DM;
ВнизChart в Excel Найти похожие ветки
← →
Kate (2003-04-29 10:17) [0]Подскажите, пожалуйста, как из delphi изменить диапазон значений в excel, по которому строится диаграмма? тип диаграммы - линейный график. исходный код на vba:
ActiveChart.SeriesCollection(1).Values = "="Исходные данные"!R2C2:R7C2"
← →
Nikolay M. (2003-04-29 10:31) [1]Если через раннее связывание, то точно так же:
var
Cell1, Cell2 : OleVariant;
Sheet1, Sheet2 : Excel_TLB._Worksheet;
Range: Excel_TLB.Range;
Series : Excel_TLB.Series;
begin
Sheet1 := Workbook.Sheets["Лист1"] as _WorkSheet;
Sheet2 := Workbook.Sheets["Лист2"] as _WorkSheet;
Sheet1.Select (EmptyParam, LOCALE_USER_DEFAULT);
Sheet1.Activate (LOCALE_USER_DEFAULT);
Cell1 := Sheet2.Cells.Item[1, 1];
Cell2 := Sheet2.Cells.Item[1, 10];
ExcelApp.ActiveChart.SetSourceData (Sheet2.Range[Cell1, Cell2], xlColumns);
end;
Только если ты правишь уже имеющуюся диаграмму (например, создал ее руками и редактируешь получившийся шаблон), то эта диаграмма должна быть выделена, иначе fMain.ExcelApp.ActiveChart будет nil. Вот такие грабли :(
← →
Kate (2003-04-29 10:43) [2]ок. спасибо. но проблема немного не в этом. объясню подробнее:
график состоит из линий, каждая линия строится на основании столбца в таблице, расположенной на листе "Исходные данные". причем если сразу указать диапазон для линии с первой строки до, например, 400-й, линия не построится, потому как в таблице именно в этом столбце будут заполнены, например, строки 5-10. поэтому нужно четко указать, что для данной линии (для данного ряда) диапазон значений будет в строках с 5 по 10. если есть идеи, буду благодарна
← →
Nikolay M. (2003-04-29 10:55) [3]Потрясно... От того, как указать исходные данные для графика плавно перешли к "как указать с 5 по 10 строки"...
У листа есть свойство UsedRange - какие ячейки заняты данными.
← →
Kate (2003-04-29 11:09) [4]блин! имелось в виду что нужно указать для, например, первой линии - что значения находятся в диапазоне R5C2:R10C2. и если уж так весело прикалываемся, то, между прочим, я спрашивала про диапазон значений для ряда, а не источник данных для всей диаграммы
← →
Nikolay M. (2003-04-29 11:20) [5]:))))
Вот выдрал. Думаю вместо XValues можно тупо писать Values, но сам не заморачивался.
var
Series : Excel_TLB.Series;
begin
Series := fMain.ExcelApp.ActiveChart.SeriesCollection (1, LOCALE_USER_DEFAULT) as Excel_TLB.Series;
Series.Name := "="Задание №1"";
Series.XValues := "=" + #39 + "Данные для хар. кривых" + #39 + "!R2C1:R100C1";
end;
← →
Kate (2003-04-29 12:31) [6]спасибо. я, правда, не пользуюсь библиотекой типов, но этот код натолкнул меня на правильную мысль. теперь у меня новая проблема - как получить ActiveChart, учитывая, что я не создаю диаграмму, а открываю файл?
← →
Nikolay M. (2003-04-29 14:50) [7]По поводу чарта я написал еще в первом посте - если диаграмма уже создана в книге, то она должна быть выделена (в своем листе, разумеется). А потом Activate и Select для листа с этой диаграммой и ActiveChart будет то, что нужно. Только что делать, если диаграмм больше одной на листе, я не знаю :(
Есть Charts, ChartObject(s), но я с ними запарился ковыряться и сделал так, что у меня на одном листе не могло быть больше одного графика.
← →
Kate (2003-04-30 09:48) [8]Николай, спасибо, я уже разобралась, все работает четко, причем не важно, сколько диаграмм на листе. так что если будут проблемы в этом плане, обращайся, подскажу как грамотно сделать. а у меня очередная заморочка: надо изменить диапазон значений на оси Y. я уже запарилась с этими Axis и Axes. если есть идеи, подскажи, пожалуйста
← →
Nikolay M. (2003-04-30 10:49) [9]Ушло на мыло.
Страницы: 1 вся ветка
Текущий архив: 2003.05.19;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.012 c