Closed prabakaran-p closed 3 years ago
You can loop the original data, and create new array value, based on the order of header, for example :
$dataNew = [];
foreach ($data as $val) {
$newRow = array();
foreach ($header as $key) {
$newRow[] = isset($val[$key]) ? $val[$key] : '';
}
$dataNew[] = $newRow;
};
foreach ($dataNew as $value) {
$writer->writeSheetRow('Sheet1', $value, $row_options = array('height' => 40, 'wrap_text' => true));
}
Thank you @ebta
$filename = "hello.xlsx"; header('Content-disposition: attachment; filename="' . XLSXWriter::sanitize_filename($filename) . '"'); header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8"); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); header('Pragma: public'); $writer = new XLSXWriter(); $header =array('email name', 'sent', 'delivery', 'bounced', 'opened', 'clicked');
$writer->writeSheetHeader('Sheet1', $headerVal, $col_options=array('widths'=>$headerWidth, 'font-style'=>'bold','halign'=>'left','hidden'=>$hiddenVal)); //header
$data = array(array('id'=>2, 'opened'=>3,'delivery'=>3,'email name'=>'hi','sent'=>4,'clicked'=>4), array('id'=>3, 'opened'=>3,'delivery'=>3,'email name'=>'hels','sent'=>4,'clicked'=>4), array('id'=>6, 'opened'=>3,'delivery'=>3,'email name'=>'hi','sent'=>4,'clicked'=>4));
foreach ($data as $value) { $writer->writeSheetRow('Sheet1', $value, $row_options = array('height' => 40, 'wrap_text' => true)); }
The data array to be mapped to the corresponding header. Can anyone help me to find a solution?