Web*_*Dev 3 php excel phpspreadsheet
当我尝试打开从应用程序下载的 xls 文件时,出现此错误:
Excel 无法打开该文件,因为文件格式或文件扩展名无效。验证文件未损坏并且文件扩展名与文件格式匹配。
这是我的 php 代码:首先,我上传 xls 文件:
if (is_uploaded_file($_FILES["file_name"]["tmp_name"])) {
if (rename($_FILES["file_name"]["tmp_name"], $directoryDestination.$nameDestination)) {
import::importFile($link,$directoryDestination.$nameDestination, $importLib, $excelName,$enddate);
$_SESSION['message'] = "ok";
}else{
$_SESSION['erreur'] = "Error";
}
Run Code Online (Sandbox Code Playgroud)
然后在我的函数中:
use PhpOffice\PhpSpreadsheet\IOFactory;
importFile($link,$filename, $importLib, $excelName,$enddate){
header('Content-Type: text/html; charset=utf-8');
// loading Excel file
$objPHPExcel = IOFactory::load($filename);
....
database
....
// copy the file
mkdir($new_path,0777);
chmod($new_path, 0777);
copy($filename,$new_path.$excelName);
unlink($filename);
// then , in other file, I try to download the file
$contents = file_get_contents($filepath);
$mime = mime_content_type($filepath);
$size = filesize($filepath);
$parts = explode("/", $file);
$filename = end($parts);
header("Content-Type: {$mime}");
header("Content-disposition: attachment; filename=\"" . basename($filename) . "\"");
header("Content-Length: {$size}");
print($contents);
exit();
Run Code Online (Sandbox Code Playgroud)
我正在使用 MS 2016 (PhpOffice\PhpSpreadsheet)。我已经尝试更改文件扩展名或修复它,但没有成功
谢谢@Danny Battison 当我用 Notpad 打开文件时,我看到文件顶部有空白,所以我在之前添加了ob_end_clean()(doc ):
ob_end_clean();
header("Content-Type: {$mime}");
Run Code Online (Sandbox Code Playgroud)
而且效果很好。