Понимаю, что проблема скорей всего в моей криворукости, и не возможности увидеть где косяк. Поэтому прошу помочь тут. Имеется Массив с данными $j и необходимо экспортировать его с помощью PHPExcel в xls файл. Проблема в вследующем: При выборке массива, почему то текстовые данные оказываются пустые(имя, отдел,организация). А остальные данные записываются по всем ячейкам только данными из первой итерации цикла.
// Создаем объект класса PHPExcel
$xls = new PHPExcel();
// Устанавливаем индекс активного листа
$xls->setActiveSheetIndex(0);
// Получаем активный лист
$sheet = $xls->getActiveSheet();
// Подписываем лист
$sheet->setTitle('Journal');
// Вставляем текст в ячейку A1
$sheet->setCellValue("A1", 'Журнал командировок');
$sheet->getStyle('A1')->getFill()->setFillType(
PHPExcel_Style_Fill::FILL_SOLID);
$sheet->getStyle('A1')->getFill()->getStartColor()->setRGB('EEEEEE');
// Объединяем ячейки
$sheet->mergeCells('A1:G1');
// Выравнивание текста
$sheet->getStyle('A1')->getAlignment()->setHorizontal(
PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//Заголовки
$sheet->setCellValue("A2", 'Имя');
$sheet->setCellValue("B2", 'Отдел');
$sheet->setCellValue("C2", 'Организация(Адрес и цель)');
$sheet->setCellValue("D2", 'Дата и время убытия');
$sheet->setCellValue("E2", 'Время прибытия');
$sheet->setCellValue("F2", 'Результат');
$sheet->setCellValue("G2", 'Согласование');
$line = 2;
//Вытаскиваем массив из бд
//$condition - временные рамки по которым вытаскиваем данные
$fDate1 = isset($_GET["fDate1"]) && $_GET["fDate1"] ? $_GET["fDate1"] : "";
$fDate2 = isset($_GET["fDate2"]) && $_GET["fDate2"] ? $_GET["fDate2"] : "";
$fName = isset ($_GET['fName']) && $_GET['fName'] ? db_encode_str($_GET['fName']) : NULL;
$condition = NULL;
if ($fDate1) $condition .= ($condition == "" ? "" : " and ") . "time >= convert(datetime, '{$fDate1}', 104)";
if ($fDate2) $condition .= ($condition == "" ? "" : " and ") . "time < convert(datetime, '{$fDate2}', 104)+1";
if ($fName) $condition .= ($condition == "" ? "" : " and ") . "u.name LIKE '%{$fName}%' ";
$dept = isset($_GET['dept']) ? (int)$_GET['dept'] : (count ($deps ) > 0 ? $deps[0]['id'] : 0);
$data= db_query("select j.*, d.name dept, du.name duty, u.name, r.name rname, bktime, result, unresult, reconcile, unreconcile, reconcile_date, result_date,j.name bname
from journal j
join users u on u.id = j.id_user
join duties du on du.id = j.id_duty
join departments d on d.id = j.id_department
left join users r on r.id = j.reconcile
where id_department = $dept " .
"and " . ($condition ? $condition : "").
" ORDER BY time DESC");
$j = db_fetch_assoc($data);
//форматируем даты и ячейки
$time = $j['time']->format("d.m.Y H:i");
$btime = $j['bktime'];
$bname = $j['bname'];
$rtime = $j['reconcile'] ? ($j['reconcile_date']->format("d.m.Y H:i") . $j['rname']);
$result_date = $j['result'] ? ($j['result_date']->format("d.m.Y H:i") . $j['rname']);
//Выводим данные в файл excel
while ($j = db_fetch_assoc($dept) != null){
$line++;
$sheet ->setCellValue("A{$line}", $j['name']);
$sheet ->setCellValue("B{$line}", $j['dept']);
$sheet ->setCellValue("C{$line}", $j['company']);
$sheet ->setCellValue("D{$line}", $time);
$sheet ->setCellValue("E{$line}", $btime);
$sheet ->setCellValue("F{$line}", $rtime . $j['rname']);
$sheet ->setCellValue("G{$line}", $result_date . $j['rname']);
};
Куда глядеть?
Решил вопрос сам. Проблемы были именно в кодировке, и в неправильном выводе массива данных.
Для остальных совет:
header('Content-Type: text/html; charset=utf-8');
и
$name = ($row_l['name']);
$name = iconv("windows-1251","UTF-8",$name);
Т.е И сам файл должен выводиться как utf-8 и обязательно текстовые данные переводим в верную кодировку. Удачи тем, кто будет с этим работать.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я написал змейку, но она движется очень быстроДля фикса надо только добавить в конце цикла while задержку, например, в пол секунды, как это сделать?
В программе массив должен заполниться числами от 0 до 9 и после этого, отсчитывая от указателя, (который, как известно, ссылается всегда на 1 элемент...
Учу ARcore, но кроме сайта разработчика (на котором достаточно мало материалов), не могу найти ни одной книги и ни одного урокаПосоветуйте, пожалуйста,...