Почему экспорт в Excel не экспортируется?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему экспорт в Excel не экспортируется?

Сообщение Anonymous »

Я создаю отчет Excel, используя PHPExcel и Codeigniter3. Поскольку это старый проект, мне пришлось исправлять ошибки. Сейчас я застрял на части экспорта Excel.
Человек, создавший этот проект, сделал запрос, чтобы взять значение таблицы и передать его контроллеру:
function submitExcel() {
const table = document.getElementById('takenTable');
const rows = [...table.rows];

const dataPush = rows.map((row) => {
return [...row.cells].map((cell) => cell.textContent);
});

console.log('Data to be sent:', dataPush);

$.ajax({
type: 'POST',
url: '',
data: JSON.stringify(dataPush),
contentType: 'application/json',
success: function(response) {
console.log('Excel export successful:', response);
alert('Excel file generated successfully!');
},
error: function(xhr, status, error) {
console.error('Error exporting Excel:', error);
alert('An error occurred while generating the Excel file. Please try again later.');
}
});
}
document.getElementById("genereteExcel").addEventListener("click", submitExcel);

Это контроллер, созданный для экспорта. Библиотека доступна:
public function exportExcelTakenReport()
{
try{
$this->load->library('Excel');
$data = json_decode(file_get_contents('php://input'), true);
if(empty($data)){
throw new Exception('Data is empty');
}
error_log('Received data: ' . print_r($data, true));

// Create a new PHPExcel object
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);

// Set the header row
$headerRow = 1;
foreach ($data[0] as $index => $header) {
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($index, $headerRow, $header);
}

// Set the data rows
$dataRow = 2;
foreach ($data as $row) {
foreach ($row as $index => $cell) {
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($index, $dataRow, $cell);
}
$dataRow++;
}

// Set header for the download file
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Taken_Report_' . date('YmdHis') . '.xlsx"');
header('Cache-Control: max-age=0');

// Write the file to PHP output
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
catch(Exception $err){
error_log('Error exporting Excel: ' . $e->getMessage());
return $this->response->JSON(['error' => 'Failed to generate Excel file. Please contact support.']);
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... -exporting
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»