writeCell($file_writer, 0, 0, '0123', 'string'); $file_writer->close(); $cell_xml = file_get_contents($filename); $this->assertNotEquals('123', $cell_xml); $this->assertEquals('0', $cell_xml);//0123 should be the 0th index of the shared string array @unlink($filename); } /** * @covers XLSXWriter::writeToFile */ public function testWriteToFile() { $filename = tempnam("/tmp", "xlsx_writer"); $header = array('0'=>'string','1'=>'string','2'=>'string','3'=>'string'); $sheet = array( array('55','66','77','88'), array('10','11','12','13'), ); $xlsx_writer = new XLSXWriter(); $xlsx_writer->writeSheet($sheet,'mysheet',$header); $xlsx_writer->writeToFile($filename); $zip = new ZipArchive(); $r = $zip->open($filename); $this->assertTrue($r); $r = $zip->numFiles>0 ? true : false; $this->assertTrue($r); $out_sheet = array(); for($z=0; $z<$zip->numFiles; $z++) { $inside_zip_filename = $zip->getNameIndex($z); if (preg_match("/sheet(\d+).xml/", basename($inside_zip_filename))) { $out_sheet = $this->stripCellsFromSheetXML($zip->getFromName($inside_zip_filename)); array_shift($out_sheet); $out_sheet = array_values($out_sheet); } } $zip->close(); @unlink($filename); $r1 = self::array_diff_assoc_recursive($out_sheet, $sheet); $r2 = self::array_diff_assoc_recursive($sheet, $out_sheet); $this->assertEmpty($r1); $this->assertEmpty($r2); } private function stripCellsFromSheetXML($sheet_xml) { $output=array(); $xml = new SimpleXMLElement($sheet_xml); $i=0; foreach($xml->sheetData->row as $row) { $j=0; foreach($row->c as $c) { $output[$i][$j] = (string)$c->v; $j++; } $i++; } return $output; } public static function array_diff_assoc_recursive($array1, $array2) { foreach($array1 as $key => $value) { if(is_array($value)) { if(!isset($array2[$key]) || !is_array($array2[$key])) { $difference[$key] = $value; } else { $new_diff = self::array_diff_assoc_recursive($value, $array2[$key]); if(!empty($new_diff)) { $difference[$key] = $new_diff; } } } else if(!isset($array2[$key]) || $array2[$key] != $value) { $difference[$key] = $value; } } return !isset($difference) ? array() : $difference; } }