Прежде всего, у меня есть следующая таблица mysql ( sold_items_records ) следующим образом
item_no qty price date time
x1 2 10 2014-4-21 2014-4-21 00:8:20
x2 4 12 2014-4-21 2014-4-21 00:8:20
x3 1 15 2014-4-22 2014-4-22 00:10:55
x1 2 11 2014-4-22 2014-4-22 01:11:40
x1 2 11 2014-4-22 2014-4-22 01:11:40
Структуры для даты (date) и для времени (datetime).
Следующим шагом будет экспорт приведенной выше таблицы в формат Excel .xls на основе времени! так вот код PHP ниже:
error_reporting(E_ALL); require_once ('Classes/PHPExcel.php'); // Create new PHPExcel object $objPHPExcel = new PHPExcel(); // Set document properties $objPHPExcel->getProperties()->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->setTitle("Office 2007 XLSX Test Document") ->setSubject("Office 2007 XLSX Test Document") ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") ->setKeywords("office 2007 openxml php") ->setCategory("Test result file"); $query = "SELECT * from sold_items_records ORDER BY time"; $result = mysql_query($query); while ( $row = mysql_fetch_assoc($result) ) { if ( !isset($curtime) || $curtime != $row['time'] ) { $curtime = $row['time']; $query2 = "SELECT item_no,qty,price,date,time from sold_items_records where time = '".$curtime."'"; $result2 = mysql_query($query2); //Excuting Values from Mysql to Excel $row2 = 2; // 1-based index while($row_data2 = mysql_fetch_assoc($result2)) { echo $row_data2['time']; $col2 = 0; //Row Headers $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'Item No') ->setCellValue('B1', 'QTY') ->setCellValue('C1', 'Price') ->setCellValue('D1', 'Date') ->setCellValue('E1', 'Time'); //Row Values foreach($row_data2 as $key2=>$value2) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col2, $row2, $value2); $col2++; } $row2++; } // Rename worksheet $objPHPExcel->getActiveSheet()->setTitle('Simple'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); //Check if File Name Exists $name = 'C:/Sales-'.date("d-m-Y",strtotime($row['time'])).'.xls'; $index = 1; while(file_exists($name)) { $name = $name.'--'.$index.".xls"; $index++; } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save($name); } }
Необходимый результат вывода состоит в том, чтобы иметь несколько файлов Excel на основе времени группировки ... Под этим я подразумеваю, что файл должен называться A) (Sale-2014-4-21) B) (Sale-2014-4-22) и (Распродажа-2014-4-22---1) Да, две даты совпадают, потому что ВРЕМЯ отличается для ОДНОЙ и той же даты.
при открытии файла excel для каждого файла A) отображаются правильные элементы x1 и x2... В то время как для файла B) он показывает X3 X1 и X1... Это не то, что мне нужно, вместо этого он должен показывать только X3... То же самое относится к файлу C) результат будет X1 X1 и X3... который должен отображать только X1 и X1...
Честно говоря, это один сложный вопрос, я потратил 5 дней, пытаясь выяснить, почему ... К счастью, я попытался использовать альтернативный способ в формате CSV, результат был на 100% верным, как и требовалось. Но когда я вернусь к В формате Excel время кажется испорченным или оно может игнорировать время.
Итак, я думаю, это формат времени в Excel. Есть идеи, как заставить Excel читать всю временную строку?
Спасибо