diff --git a/examples/ex11-row-group-collapse.php b/examples/ex11-row-group-collapse.php new file mode 100644 index 000000000..7b640f2a4 --- /dev/null +++ b/examples/ex11-row-group-collapse.php @@ -0,0 +1,38 @@ + 'string'); +foreach (range(2, 11) as $col) { + $column_header[] = array("C$col" => 'integer'); +} +$writer->writeSheetHeader('Sheet1', $column_header); + +$row_count = 0; +foreach (range("a", "j") as $letter) { + $row_data = array($letter); + foreach (range(1, 10) as $col_count) { + $number = rand()%10000; + $row_data[] = $number; + @$total[$col_count] += $number; + } + + /** + * Set outlineLevel=1 for collapsed rows and every 5th row + * set outlineLevel=0 and display totals + */ + $row_options = array('collapse' => true, 'hidden' => true, 'outlineLevel' => 1); + $writer->writeSheetRow('Sheet1', $row_data, $row_options); + if (++$row_count % 5 === 0) { + $row_options = array('collapse' => true, 'hidden' => false, 'outlineLevel' => 0); + $writer->writeSheetRow('Sheet1', array_merge(array("Total after \"$letter\""), $total), $row_options); + } + +} + +$writer->writeToFile('xlsx-group-row-collapse.xlsx'); +echo '#'.floor((memory_get_peak_usage())/1024/1024)."MB"."\n"; diff --git a/xlsxwriter.class.php b/xlsxwriter.class.php index a987735f8..ef47b8bc8 100644 --- a/xlsxwriter.class.php +++ b/xlsxwriter.class.php @@ -258,10 +258,11 @@ public function writeSheetRow($sheet_name, array $row, $row_options=null) if (!empty($row_options)) { $ht = isset($row_options['height']) ? floatval($row_options['height']) : 12.1; + $outlineLevel = isset($row_options['outlineLevel']) ? intval($row_options['outlineLevel']) : 0; $customHt = isset($row_options['height']) ? true : false; $hidden = isset($row_options['hidden']) ? (bool)($row_options['hidden']) : false; $collapsed = isset($row_options['collapsed']) ? (bool)($row_options['collapsed']) : false; - $sheet->file_writer->write('