From f1cab31d11862d3513462302665b514160f63fb1 Mon Sep 17 00:00:00 2001 From: Jann Peter Rocas <aeegvk@gmail.com> Date: Tue, 24 Jan 2023 15:39:14 +0800 Subject: [PATCH 1/2] modified version of writeSheetRow modified writeSheetRow as writeSheetRowHeader and force format to general and auto --- xlsxwriter.class.php | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/xlsxwriter.class.php b/xlsxwriter.class.php index e4ebdc5..74c81e1 100644 --- a/xlsxwriter.class.php +++ b/xlsxwriter.class.php @@ -287,6 +287,45 @@ class XLSXWriter $sheet->row_count++; $this->current_sheet = $sheet_name; } + + public function writeSheetRowHeader($sheet_name, array $row, $row_options=null) + { + if (empty($sheet_name)) + return; + + $this->initializeSheet($sheet_name); + $sheet = &$this->sheets[$sheet_name]; + if (count($sheet->columns) < count($row)) { + $default_column_types = $this->initializeColumnTypes( array_fill($from=0, $until=count($row), 'GENERAL') );//will map to n_auto + $sheet->columns = array_merge((array)$sheet->columns, $default_column_types); + } + + if (!empty($row_options)) + { + $ht = isset($row_options['height']) ? floatval($row_options['height']) : 12.1; + $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('<row collapsed="'.($collapsed ? 'true' : 'false').'" customFormat="false" customHeight="'.($customHt ? 'true' : 'false').'" hidden="'.($hidden ? 'true' : 'false').'" ht="'.($ht).'" outlineLevel="0" r="' . ($sheet->row_count + 1) . '">'); + } + else + { + $sheet->file_writer->write('<row collapsed="false" customFormat="false" customHeight="false" hidden="false" ht="12.1" outlineLevel="0" r="' . ($sheet->row_count + 1) . '">'); + } + + $style = &$row_options; + $c=0; + foreach ($row as $v) { + $number_format = 'GENERAL'; + $number_format_type = 'n_auto'; + $cell_style_idx = empty($style) ? $sheet->columns[$c]['default_cell_style'] : $this->addCellStyle( $number_format, json_encode(isset($style[0]) ? $style[$c] : $style) ); + $this->writeCell($sheet->file_writer, $sheet->row_count, $c, $v, $number_format_type, $cell_style_idx); + $c++; + } + $sheet->file_writer->write('</row>'); + $sheet->row_count++; + $this->current_sheet = $sheet_name; + } public function countSheetRows($sheet_name = '') { -- GitLab From f5bdf4658e4295e983d026802f14dabd30074652 Mon Sep 17 00:00:00 2001 From: Jann Peter Rocas <aeegvk@gmail.com> Date: Tue, 24 Jan 2023 15:43:11 +0800 Subject: [PATCH 2/2] Update xlsxwriter.class.php --- xlsxwriter.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xlsxwriter.class.php b/xlsxwriter.class.php index 74c81e1..1c76ed3 100644 --- a/xlsxwriter.class.php +++ b/xlsxwriter.class.php @@ -288,6 +288,7 @@ class XLSXWriter $this->current_sheet = $sheet_name; } + // As suggested in stackoverflow by grabo44 https://stackoverflow.com/users/10551285/grabo44 public function writeSheetRowHeader($sheet_name, array $row, $row_options=null) { if (empty($sheet_name)) @@ -316,8 +317,8 @@ class XLSXWriter $style = &$row_options; $c=0; foreach ($row as $v) { - $number_format = 'GENERAL'; - $number_format_type = 'n_auto'; + $number_format = 'GENERAL'; // set to GENERAL format + $number_format_type = 'n_auto'; // set to auto format type $cell_style_idx = empty($style) ? $sheet->columns[$c]['default_cell_style'] : $this->addCellStyle( $number_format, json_encode(isset($style[0]) ? $style[$c] : $style) ); $this->writeCell($sheet->file_writer, $sheet->row_count, $c, $v, $number_format_type, $cell_style_idx); $c++; -- GitLab