Excel генерирует и отправляет электронную почту с помощью библиотеки phpexcel в Codeigniter

Я попытался создать отчет в формате Excel и отправить электронное письмо с помощью библиотеки PHPExcel. Мне нужно выровнять html в файле excel, поэтому я загружаю свой вывод как html в свою локальную папку. Но я не могу преобразовать файл html в файл Excel, когда мы попробовали код ниже, сгенерированный файл Excel показывает только имя файла html, а не содержимое таблицы html.

 $this->data['report1']=$this->report_m->get_report();
 $this->data['report_details']=$this->report_m->get_report_details();

 $this->load->library('PHPExcel/iofactory');
 $html=$this->load->view('viewfilename',$data,TRUE);

 $tmpfile = time().'.html';
 file_put_contents($tmpfile, $html);
 //by using above code html file created successfully

 //method 1 for reading html
 $reader = new PHPExcel_Reader_HTML; 
 $content = $reader->load($tmpfile); 

 $objWriter = PHPExcel_IOFactory::createWriter($content, 'Excel2007');
 $objWriter->save('excelfile.xlsx');

 //method 2 for reading html
 $objPHPExcel = new PHPExcel();
 $excelHTMLReader = IOFactory::createReader('HTML');
 $excelHTMLReader->loadIntoExisting($tmpfile, $objPHPExcel);
 $objPHPExcel->getActiveSheet()->setTitle('report');

 $writer = IOFactory::createWriter($objPHPExcel, 'Excel2007');
 $writer->save("nameoffiledrrr.xls");

 unlink($tmpfile);

Не уверен, правильно ли я понял ваш вопрос. Я думаю, у вас есть данные в вашей таблице mysql, и вы хотите создать отчет Excel и отправить его по электронной почте?

Stefan Avramovic 31.05.2018 09:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
1 031
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отвечать :

$html=$this->load->view('sendmail_template',$data,TRUE);

include("simple_html_dom.php");
$rowRecords = str_get_html($html);

//echo $html;
$filename = "Report-".$dtimeFile.".xls";
$path='./reports/';
$csv_handler = fopen ($path.$filename,'w');
fwrite ($csv_handler,$rowRecords);
fclose ($csv_handler);

$msg='Report';

$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));

$file_path=base_url('reports/'.$filename);


$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => '[email protected]',
'smtp_pass' => 'xxxxxxxxxx',
'mailtype'  => 'html', 
'charset'   => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");

// Set to, from, message, etc.

$email = $result->to_addr;

$info = "[email protected]";
$infoname = "info";
$message = "PFA Report";
$this->email->set_mailtype("html");
$this->email->from($info, $infoname);
$this->email->to($email);

$subject = 'Report';
$this->email->subject($subject);
$this->email->message($message);
$this->email->attach($file_path);

 $r = $this->email->send();
    if (!$r) {
    echo "Failed to send email:" . $this->email->print_debugger(array("header"));
} else {
     echo "Mail Sent";
}

Другие вопросы по теме