2012-05-13 4 views
1

У меня есть один-ко-многим подобный массив.Группировка строк PHPExcel

пример структуры:

[ 
    [ 
    InvoiceID, 
    [ 
     InvoiceEntry1_label, 
     InvoiceEntry2_label 
    ], 
    [ 
     InvoiceEntry1_value, 
     InvoiceEntry2_value 
    ], 
    Total 
    ], 
    [ 
    InvoiceID, 
    [ 
     InvoiceEntry1_label, 
     InvoiceEntry2_label 
    ], 
    [ 
     InvoiceEntry1_value, 
     InvoiceEntry2_value 
    ], 
    Total 
    ], 
    and so on 
] 

Как я группировать строки с помощью PHPExcel, таким образом, что после сортировки в Excel, строки, принадлежащие к фактуре будет держаться вместе?

Не путайте функциональность и группировку Excel, для которых строки не будут склеиваться после сортировки.

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

ответ

1

В Excel это может быть сделано только с помощью сводных таблиц, как это:

  • листа с исходными данными, причем все строки расширяются до «многих» частей (например, InvoiceID будет скопирован для каждой строки);
  • сводной таблица
    • в списке сводных полей, все столбцы размещены в разделе «с метками строк», без каких-либо столбцов в других разделах 3 (Фильтр отчета, значение, столбцы метка); необязательно, только поля из «большой» части (отношения «один ко многим») могут быть перемещены в раздел «Значения»;
    • право щелкнул каждое поле, настройки полей, установите «подытогами» на «нет»
    • право щелкнул каждое поле, настройки полей, установите «Layout» «Показывать запись метки в табличной форме»
    • перемещаются все поля из «много» часть должна быть последней по порядку;

выше позволили склеивание строк после сортировки, а также фильтрации, с очень приятно выглядящим ко многим репрезентации (где многие части раскалываются текущие строки в дочерние строки).

PHPExcel еще не поддерживает сводные таблицы вообще ("Codeplex: Implement pivot tables"), поэтому приведенную выше таблицу сводных таблиц Excel нельзя создать, отредактировать или прочитать с помощью PHPExcel.

+0

Я знаю, поддержка сводных таблиц находится в списке «делать» (и довольно высоко в приоритете), но время (как всегда) - это ограничение ... надеюсь, до конца года, но в этом случае будет слишком поздно. –

+1

Я только что заметил, что вы являетесь основным разработчиком PHPExcel. Спасибо за лучший читатель/писатель в формате Excel , и спасибо, что сделали его открытым исходным кодом :) –

1

Я не совсем уверен, как я подхожу к этому в самом MS Excel.

Я уверен, что, вероятно, есть решение. Раньше у меня были «скрытые» значения дублированных ячеек, такие как номер счета-фактуры, с использованием условного форматирования, установка цвета переднего плана/текста на цвет фона, если значение invoiceId соответствует значению invoiceId предыдущей строки ... при сортировке, ранее «скрытое» значение invoiceId может затем стать «незакрытым», а ранее «незакрытые» значения invoiceId могут стать «скрытыми». Это небольшое решение, но я не знаю, как лучше это сделать в самом MS Excel без использования сводных таблиц.

+0

Я думал о том, чтобы скрыть то же повторяющееся значение. Тем не менее, я нацелен на что-то более чистое (без VBA и без риска ошибки или искаженного стиля). Сводные таблицы будут распространяться на слишком много листов. –

+0

После изучения еще одного, я согласен с вами, только таблицы сводных таблиц - жизнеспособное решение :( –

Смежные вопросы