mk-j / PHP_XLSXWriter

Lightweight XLSX Excel Spreadsheet Writer in PHP
MIT License
1.84k stars 663 forks source link

Allow column types to be overridden when writing sheet rows #331

Closed abrynczka closed 1 year ago

abrynczka commented 1 year ago

This PR adds a new writeSheetRowWithColTypes method used to set or override column types while writing row data.

The original column types defined by writeSheetHeader are retained so that the process can revert back to them after writing the current row's data, allowing the header versions to serve as default definitions for the columns.

Additionally, users can limit the column type override to target specific columns rather than the entire row:

$writer->writeSheetHeader($sheet, ['col1' => 'string', 'col2' => 'integer']);
$writer->writeSheetRow($sheet, ['val1', 1]);

$writer-> writeSheetRowWithColTypes($sheet, ['val2', 'n/a'], [], ['string', 'string']); // override the entire row
$writer-> writeSheetRowWithColTypes($sheet, ['val3', '?'], [], [1 => 'string']); // override col 2 only
mk-j commented 1 year ago

You can do this now... maybe its good enough as is on master...

$writer->writeSheetHeader('Sheet1', $header1);
$writer->writeSheetRow('Sheet1', $row1 );
$writer->writeSheetHeader('Sheet1', $header2);
$writer->writeSheetRow('Sheet1', $row2);