Я использую phpspreadsheet для создания файлов Excel из моей базы данных в CodeIgniter.Хотя я пытаюсь открыть экспортированный файл Excel, он показывает мне ошибку:
Excel не может открыть файл 'abc.xlsx', поскольку формат файла или расширение недопустимо.Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла
Вот мой код:
модель
public function getAllMembersSearchByFamily($term)
{
$this->db->select('*,tab_family.family_name');
$this->db->from('tab_members');
$this->db->join('tab_family', 'tab_family.family_id = tab_members.family_id');
$this->db->where('tab_members.family_id', $term);
$query = $this->db->get();
return $query->result();
}
Контроллер:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require "vendor/autoload.php";
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class Applications extends CI_Controller {
public function generatefamilyreport()
{
$output="";
$term = trim($this->input->post('searchterm'));
echo $term;
$result = $this->Family_model->getAllMembersSearchByFamily($term);
if(!empty($result))
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$i = 1;
foreach($result as $res)
{
$sheet->setCellValue('A'.$i, $res->name);
$i++;
}
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="users.xlsx"');
header('Cache-Control: max-age=0');
header('Expires: Fri, 11 Nov 2011 11:11:11 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: cache, must-revalidate');
header('Pragma: public');
$writer->save('php://output');
}
}
}
view
<?php
$attributes = array('class' => 'search-form', 'id' => 'generatereport');
echo form_open('Applications/generatefamilyreport',$attributes);
?>
<input type="text" name="searchterm" id="generatereporttext" <?php if(isset($term) && !empty($term)) { ?> value="<?php echo $term;?>" <?php } ?>>
<button class="btn btn-danger" style="margin-left: 15px;">Generate Report</button>
<?php echo form_close(); ?>
Я впервые использую phpspreadsheet.Может кто-нибудь помочь мне исправить это ??Заранее спасибо!
Редактировать 1
Этот же код работает, когда я пытаюсь использовать встроенные данные, которые не используют данные из базы данных.Файл Excel экспортируется, и я могу открыть его.Вот отредактированный код контроллера для встроенных данных:
public function generatefamilyreport()
{
$spreadsheet = new Spreadsheet();
$spreadsheet->getActiveSheet()->setTitle('Simple');
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A1', 'This')
->setCellValue('B2', 'is')
->setCellValue('C1', 'a')
->setCellValue('D2', 'test.');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="simple.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.0
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
}