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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2014, 13:55   #1
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
Вопрос Как обратиться к диаграмме Excel

Здравствуйте! Помогите решить такую задачу. Мне нужно сформировать книгу Excel, в которой 2 листа. На первом листе - диаграмма, на втором - источник данных этой диаграммы.
Формирую по заранее подготовленному шаблону. На лист 2 выгружаю данные с SQL сервера с помощью создания СОМ - объекта. В принципе, задача уже почти решена. Проблема в том, что я не знаю, как программно через php можно изменить свойства диаграммы - источник данных и ее заголовок. Можно ли как-то к ним обратиться? Иначе пользователю после формирования файла с данными придется вручную переопределять источник данных диаграммы(поскольку каждый раз количество строк в источнике разное) и заголовок, а это как-то не очень красиво, хотелось бы сразу вывести ему полностью готовый файл.
Код:
....//здесь создаем источник данных для диаграммы


$excel = new COM("Excel.Application") or die("Unable to instanciate excel"); 
$excel->Visible = false; 


$excel->Application->Visible = 1; 
$excel->DisplayAlerts = 0; 
# Открытие сущуствующей проформы 
$excel->Workbooks->Open("C:\Zatraty\Shablon.xls"); 
$sheet = $excel->Worksheets(1); 
$sheet->activate; 
$j=3;
$n=1;

    while($rowdef=odbc_fetch_array($resdef)){
        foreach ($rowdef as $key => $value){
            $cell = $sheet->Cells($j,A); 
            $cell->Activate; 
            $cell->value = my_iconv('cp1251', 'utf-8', $n); 
            $cell = $sheet->Cells($j,B); 
            $cell->Activate; 
            $cell->value = my_iconv('cp1251', 'utf-8', $rowdef['NaimNesootv']);
            $cell = $sheet->Cells($j,C); 
            $cell->Activate; 
            $cell->value = my_iconv('cp1251', 'utf-8', $rowdef['Kol']);
        }
        $j++;
        $n++;
    }
    while ($j <= 5000) {
        $cell = $sheet->Cells($j,D); 
            $cell->Activate; 
            $cell->value = null;
        $j++;
    }
 
$excel->Workbooks[1]->SaveAs("C:\\temp\\Pareta.xls"); 

$excel->Quit(); 
$excel = Null;
Как можно решить эту проблему и вообще возможно ли это при таком способе решения задачи?

Последний раз редактировалось Swatch; 02.10.2014 в 14:13.
Swatch вне форума Ответить с цитированием
Старый 03.10.2014, 08:30   #2
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
Печаль

Неужели никто не может помочь? Наверное, примерно такая конструкция должна быть, но я не могу никак довести ее до ума, чтобы работала:
Код:
$chart=$excel->ActiveSheet->ChartObjects["Chart"]->Chart;
$chart->Activate;
$chart->SetSourceData(Sheets("Data").Range($i));
Swatch вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратиться к текущей книге excel из Visual Basic-приложения ольгаг Microsoft Office Excel 14 11.06.2013 13:30
в диаграмме excel можно было вбивать данные и изменять ее вид Mr_skiner Общие вопросы Delphi 1 08.06.2010 20:30
построение окружности на диаграмме excel MilanAC Помощь студентам 1 18.08.2009 18:18
Как обратиться к ячейке файла Excel не открывая его Alexandro Microsoft Office Excel 3 28.05.2008 12:02
Как из проги обратиться к Excel ? Drozd Общие вопросы Delphi 3 26.03.2008 18:24