Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> excel и php 
:(
    Опции темы
lumentek
Дата 14.9.2010, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



   
В PHPExcel существует метод $objPHPExcel->getActiveSheet()->mergeCells(), который позволяет объединить ячейки в таблице, например, $objPHPExcel->getActiveSheet()->mergeCells('A1:A5'); объединяет строки А1:А5.
Так вот у меня это происходит в цикле — динамически.
Например, есть значения

id_отдела Отед Сотрудник

1 Финансы Иванов И.И.
1 Финансы Смирнов С.С.
1 Финансы Петров А.А,
2 Бухгалтерия Сидоров А.В.

В таблицк Excel название отделов записываются, например в строки столбца A.
Данные выводятся из быза, непосредственно циклом.

Код

<?  
$number = 0; //счетчик  
while($arr = ...){  
$number = $number +1; // инкремент  
    if($arr['id_section'] != $id_section){  
        // тут записываем название отдела  
    }   
    else {  
            ///а здесь идет все тот же отдел, поэтому нужно сделать объединение ячеек      
            // на выходе нужно получить такое значение, которое будет агрументом  
            //специального метода объединения ячеек —  
            //"A1:A3" (4 строка ужене катит, так кактам новый отдел — бухгалтерия)  
        }  
    }   
 ?> 

Я не знаю насколько доходчиво изложил суть, но сам догнать никак не могу. как тут правильно подойти. Если мало указал входных данных - спрашивайте!
PM MAIL   Вверх
skyboy
Дата 14.9.2010, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



ну, сравнение в цикле у тебя есть.
записываешь название только в последнюю ячейку среди одинаковых. записываешь индекс в отдельный массив.
после заполнения таблицы проходишь по массиву и объединяешь соответствующие ячейки.
PM MAIL   Вверх
lumentek
Дата 14.9.2010, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



skyboy, будем по-порядкуsmile Не совсем осмыслил.

Цитата

1. записываешь название только в последнюю ячейку среди одинаковых.

Дело  втом что я и не знаю как мне отследить эту самую последнюю  ячейку среди одинаковых(

Цитата

записываешь индекс в отдельный массив.

Не совсем понял. Что Вы тут имеете ввиду?

PM MAIL   Вверх
skyboy
Дата 14.9.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(lumentek @  14.9.2010,  10:33 Найти цитируемый пост)
Дело  втом что я и не знаю как мне отследить эту самую последнюю  ячейку среди одинаковых(

я попутал. с твоей структурой удобнее записывать в первую:
Код

$prev_section_id = -1;
$index = 0;
$indexToStartCollapse = 0; // это индекс ячейки, с которой начался список для  текущего отдела
while($arr = ...){  
   $index++;
    if($arr['id_section'] != $prev_section_id){  
        // записываем в ячейку $index название отдела
       // объединяем ячейки предыдущего отдела: с $indexToStartCollapse по $index - 1
        $indextoStartCollapse = $index;
    }   
    else {  
        //  .....
        }  
    }   

PM MAIL   Вверх
lumentek
Дата 14.9.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



А разве переменная $prev_section_id в дальнешем не должна присваивать значение переменной  $arr['id_section'] в блоке if(){..}?
PM MAIL   Вверх
skyboy
Дата 14.9.2010, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



то-то я думаю, забыл что-то smile
да, конечно
PM MAIL   Вверх
lumentek
Дата 14.9.2010, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



skyboy, только я не совсем понял где будет конечное значение. 
То есть мне нужно для метода, объединяющего ячейки задать значения: начальное и конечное — $objPHPExcel->getActiveSheet()->mergeCells("A{$start}:A{$end}");

Где именно я должен вызывать данный метод?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.