동적으로 파일을 만드는 프로그램을 만들었습니다. 그것은 잘 작동합니다. 파일을 저장할 위치를 묻는 코드를 추가하면 저장되지만 파일을 열려고하면 '파일 형식 또는 파일 확장이 유효하지 않기 때문에 파일을 열 수 없습니다.'라는 오류 메시지가 나타납니다. 내가 프롬프트없이 저장하면 잘 열립니다. PHP Excel/Excel 2007에서 파일을 열 수 없습니다.
코드의 관련 부분
은 다음과 같습니다if(isset($_POST['esd']))
{
$sqlcust = "SELECT * FROM compliance_customers WHERE Customer_ref = " . $_REQUEST['cust'];
$sqlcustresult = mysqli_query($conn, $sqlcust);
while($row_sqlcustresult = mysqli_fetch_array($sqlcustresult))
{
$name = $row_sqlcustresult['Customer_name'];
}
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$name.'_'.$date.'.xlsx"');
}
#use php excel to create a spreadsheet of the customers current subscription
if((isset($_REQUEST['esd'])) && (!isset($noEsd)))
{
// Set properties for the excel file
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator($_SESSION['username']);
$objPHPExcel->getProperties()->setLastModifiedBy($_SESSION['username']);
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Customer export_" . $customername);
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Customer export_" . $customername);
$objPHPExcel->getProperties()->setDescription($customername . "_" . $date);
$cnt_current_record = 2;
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Content Name');
$objPHPExcel->getActiveSheet()->SetCellValue('B1', 'Content Type');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Content Description');
$sql_excelfile = "SELECT * FROM compliance_changes ORDER BY change_type";
$result_sql_excelfile = mysqli_query($conn, $sql_excelfile);
while($row_sql_excelfile = mysqli_fetch_array($result_sql_excelfile))
{
if(in_array($row_sql_excelfile['change_name'], $excel_array))
{
#echo "<tr class='subscriptiondetails'><td>" .$row_sql_excel['change_name']."</td><td>" .$row_sql_excel['change_type']."</td><td>". $row_sql_excel['change_description']."</td></tr>";
#$objPHPExcel->setActiveSheetIndex($cnt_current_record);
$objPHPExcel->getActiveSheet()->SetCellValue('A' . $cnt_current_record, $row_sql_excelfile['change_name']);
$objPHPExcel->getActiveSheet()->SetCellValue('B' . $cnt_current_record, $row_sql_excelfile['change_type']);
$objPHPExcel->getActiveSheet()->SetCellValue('C' . $cnt_current_record, $row_sql_excelfile['change_description']);
$cnt_current_record++;
}
}
#rename sheet
$sheet_title = $customername;
$objPHPExcel->getActiveSheet()->setTitle($sheet_title);
#write the xls file
#$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$filename = $customername . "_" . $date . ".xlsx";
#$objWriter->save(str_replace('customerdetail2.php', $filename, __FILE__));
$objWriter->save('php://output');
#echo the file has been written
echo $filename . " has been created";
나는 확실히, PHPexcel 지나치게 익숙하지 아니에요 왜 그냥 저장하면 파일을 열고 좋은,하지만 사용할 때 $ objWriter- > save ('php : // 출력'); 코드를 출력하면 실패합니다. 누구든지 도와 줄 수 있습니까?
http://stackoverflow.com/questions/14252465/phpexcel-file-cannot-open-file-because-the-file-format-or-file-extension-is-not –
안녕하세요 @Len_D, 게시 주셔서 감사합니다. 그. 나는 이미 그 해결책을 시도했지만 나에게도 같은 오류를 주었다. –
이 오류가 나타날 때마다 먼저 텍스트 편집기에서 파일을 열고 파일의 시작 또는 끝에있는 공백 문자 (BOM 표식 또는 기타)를 찾습니다. 파일의 내용에 명백한 PHP 사람이 읽을 수있는 오류 메시지 –