Answer the question
In order to leave comments, you need to log in
How to change the date format when exporting to Excel?
A hackneyed question to the point of stupidity, but my brain is already boiling so much that I can’t. I'm new to php so please don't be too harsh.
I exported the database to Excel with mailing. The code works, everything seems to be fine, but not quite. (Googling, I can not figure out what and where).
Please help, don't joke, we all once studied and sat on programming tasks for a long time, although they seemed simple.
So, to the point:
the code is working, but at the output, the date in the American format is displayed in the field (it is already written in the database, from where I take the data). How to translate it into human format?
Thanks in advance to everyone who responded, not kicked. All the best, love the beaver :-)
Code:
// Create new PHPExcel object
echo date('H:i:s') , " Создан файл Excel" , EOL;
$objPHPExcel = new PHPExcel();
// Set document properties
echo date('H:i:s') , " Установка свойств документа" , EOL;
$objPHPExcel->getProperties()->setCreator("")
->setLastModifiedBy("")
->setTitle("")
->setSubject("")
->setDescription("")
->setKeywords("")
->setCategory("");
// Add some data
echo date('H:i:s') , " Добавление данных" , EOL;
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Проект')
->setCellValue('B1', 'Код')
->setCellValue('C1', 'Тема')
->setCellValue('D1', 'Статус')
->setCellValue('E1', 'Исполнитель')
->setCellValue('F1', 'Автор')
->setCellValue('G1', 'Создано')
->setCellValue('H1', 'Описание')
->setCellValue('I1', 'Дата совещания')
->setCellValue('J1', 'Срок исполнения');
$count = 1;
echo "Data:";
$get_jira = $DBH->query("SELECT * FROM БД WHERE OTKRITA = 1 AND Proect = 'ТАБЛИЦА'");
//while($get_jira_db = $get_jira->fetch()) {
while($get_jira_db = $get_jira->fetch(PDO::FETCH_ASSOC)) {
$count++;
$A = $get_jira_db['Proect'];
$B = $get_jira_db['CodZadachi'];
$C = $get_jira_db['Tema'];
$D = $get_jira_db['Status'];
$E = $get_jira_db['Ispolnitel'];
$F = $get_jira_db['Avtor'];
$G = $get_jira_db['DataSozdania'];
$H = $get_jira_db['Opisanie'];
$I = $get_jira_db['DataSoveschania'];
$J = $get_jira_db['SrokIspolnenia'];
//Устанавливаем кодировку столбцов, потому что без этого ни хрена не грузит в столбцы русские буквы.
$C = iconv( "cp1251","UTF-8", $C);
$D = iconv( "cp1251","UTF-8", $D);
$E = iconv( "cp1251","UTF-8", $E);
$F = iconv( "cp1251","UTF-8", $F);
//Устанавливаем автоматическую ширину столбцов непосредственно в конечном файле Excel, который получит пользователь на свой e-mail.
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$count, $A)
->setCellValue('B'.$count, $B)
->setCellValue('C'.$count, $C)
->setCellValue('D'.$count, $D)
->setCellValue('E'.$count, $E)
->setCellValue('F'.$count, $F)
->setCellValue('G'.$count, $G)
->setCellValue('H'.$count, $H)
->setCellValue('I'.$count, $I)
->setCellValue('J'.$count, $J);
}
echo "--data end--";
// Rename worksheet
echo date('H:i:s') , " Присвоение имени" , EOL;
$objPHPExcel->getActiveSheet()->setTitle('Выгрузка');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Save Excel 95 file
echo date('H:i:s') , " Запись в формат Excel" , EOL;
$callStartTime = microtime(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save(str_replace('.php', '.xls', __FILE__));
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;
echo date('H:i:s') , " Файл записан как: " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
echo 'Создано за время ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
// Echo memory usage
echo date('H:i:s') , ' Текущее использование памяти : ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;
// Echo memory peak usage
echo date('H:i:s') , " Пиковое использование памяти: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;
// Echo done
echo date('H:i:s') , " Файл записан" , EOL;
echo 'Файл сохранен по пути: ' , getcwd() , EOL;
// пример использования
$file = "excel.xls"; // файл
$mailTo1 = "ПОЧТА 1"; // кому
$mailTo2 = "ПОЧТА 2"; // кому
$from = "ЯЩИК С КОТОРОГО ШЛЮ"; // от кого
$subject = "Рассылка"; // тема письма
$message = "Ваша рассылка"; // текст письма
$r1 = sendMailAttachment($mailTo1, $from, $subject, $message, $file); // отправка письма c вложением
$r2 = sendMailAttachment($mailTo2, $from, $subject, $message, $file); // отправка письма c вложением
echo ($r1)?'Письмо отправлено ':'Ошибка. Письмо не отправлено!<p>';
echo ($r2)?'Письмо отправлено ':'Ошибка. Письмо не отправлено!';
//$r = sendMailAttachment($mailTo, $from, $subject, $message); // отправка письма без вложения
//echo ($r)?'Письмо отправлено':'Ошибка. Письмо не отправлено!';
/**
* Отправка письма с вложением
* @param string $mailTo
* @param string $from
* @param string $subject
* @param string $message
* @param string|bool $file - не обязательный параметр, путь до файла
*
* @return bool - результат отправки
*/
function sendMailAttachment($mailTo, $from, $subject, $message, $file = false){
$separator = "---"; // разделитель в письме
// Заголовки для письма
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: $from\nReply-To: $from\n"; // задаем от кого письмо
$headers .= "Content-Type: multipart/mixed; boundary=\"$separator\""; // в заголовке указываем разделитель
$headers .= "Content-type: text/html; charset=utf-8'\n";
// если письмо с вложением
if($file){
$bodyMail = "--$separator\n"; // начало тела письма, выводим разделитель
$bodyMail .= "Content-type: text/html; charset=utf-8\n"; // кодировка письма
$bodyMail .= "Content-Transfer-Encoding: quoted-printable"; // задаем конвертацию письма
$bodyMail .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode(basename($file))."?=\n\n"; // задаем название файла
$bodyMail .= $message."\n"; // добавляем текст письма
$bodyMail .= "--$separator\n";
$fileRead = fopen($file, "r"); // открываем файл
$contentFile = fread($fileRead, filesize($file)); // считываем его до конца
fclose($fileRead); // закрываем файл
$bodyMail .= "Content-Type: application/octet-stream; name==?utf-8?B?".base64_encode(basename($file))."?=\n";
$bodyMail .= "Content-Transfer-Encoding: base64\n"; // кодировка файла
$bodyMail .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode(basename($file))."?=\n\n";
$bodyMail .= chunk_split(base64_encode($contentFile))."\n"; // кодируем и прикрепляем файл
$bodyMail .= "--".$separator ."--\n";
// письмо без вложения
}else{
$bodyMail = $message;
}
$result = mail($mailTo, $subject, $bodyMail, $headers); // отправка письма
return $result;
}
Answer the question
In order to leave comments, you need to log in
One of the options is to convert the date to the required format in the query:
see MySQL date and time formatting
functions MySQL CASE function
Example of string-value concatenation (addition)...
SELECT
Proect,
CodZadachi,
Tema,
Status,
Ispolnitel,
Avtor,
CONCAT(
CASE DATE_FORMAT(DataSozdania,'%m')
WHEN '01' THEN 'Январь'
WHEN '02' THEN 'Февраль'
WHEN '03' THEN 'Март'
WHEN '04' THEN 'Апрель'
WHEN '05' THEN 'Май'
WHEN '06' THEN 'Июнь'
WHEN '07' THEN 'Июль'
WHEN '08' THEN 'Август'
WHEN '09' THEN 'Сентябрь'
WHEN '10' THEN 'Октябрь'
WHEN '11' THEN 'Ноябрь'
WHEN '12' THEN 'Декабрь'
END,
DATE_FORMAT(DataSozdania,' %e %H:%i %Y')
) AS DataSozdania,
Opisanie,
DataSoveschania,
SrokIspolnenia,
FROM БД WHERE OTKRITA = 1 AND Proect = 'ТАБЛИЦА'
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question