【问题标题】:Error while creating Excel file using PHPOffice/SpreadSheet (ZipArchive::close())使用 PHPOffice/SpreadSheet (ZipArchive::close()) 创建 Excel 文件时出错
【发布时间】:2018-09-03 12:12:59
【问题描述】:

我在 Laravel PHP 框架中使用 PHPOffice/SpreadSheet。我的电脑操作系统是 macOS。

生成 excel 文件时收到此错误

ZipArchive::close(): Failure to create temporary file: No such file or directory

我的完整代码在这里

use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\IOFactory;use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
class SpreadSheetController extends Controller
{
    public function examMarksEntrySheet(Request $request)
    {
        $reader = new Xlsx();
        $spreadSheet = $reader->load($inputFileName);
        $spreadSheet->setActiveSheetIndex(0);
        $activeSheet = $spreadSheet->getActiveSheet();
        // loaded excel file is edited here (hidde)
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="' . $fileName . '.xlsx"');
        header('Cache-Control: max-age=0');
        $writer = IOFactory::createWriter($spreadSheet, 'Xlsx');
        $writer->save('php://output');
    }
}



Laravel 版本:5.5
PHP 版本:7.1.7
PHPOffice/PHPSpreadSheet 版本:1.2
macOS 版本:10.13.3

【问题讨论】:

    标签: excel laravel phpoffice


    【解决方案1】:

    使用成功解决了问题 \PhpOffice\PhpSpreadsheet\Shared\File::setUseUploadTempDirectory(true);
    现在一切正常。

    问题是 phpSpreadSheet 使用的 tmp 目录不能被 PHP 进程写入。将tmp目录改成上传tmp目录,现在问题解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 2018-11-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2018-06-15
      相关资源
      最近更新 更多