【问题标题】:Change saving directory in phpspreadsheet更改 phpspreadsheet 中的保存目录
【发布时间】:2018-11-14 08:19:46
【问题描述】:

我使用 PhpSpreadsheet 生成 XLS 文件,所有功能都运行良好,除了它将本地文件保存在临时目录中,我想将它们保存在特定文件夹中。

use PhpOffice\PhpSpreadsheet\IOFactory;
require __DIR__ . '/Header.php';

$spreadsheet = require __DIR__ . '/templates/MyTemplate.php';

$filename = $helper->getFilename("MyFilename", 'xls'); 
$writer = IOFactory::createWriter($spreadsheet, 'Xls');

$callStartTime = microtime(true);
$writer->save($filename);
$helper->logWrite($writer, $filename, $callStartTime);

但是输出位于

Write Xls format to /var/folders/pn/lyj970q90lq20mjv39bpgx_80000gn/T/phpspreadsheet/MyFilename.xls in 0.0640 seconds

还有其他功能可以设置我想要文件的保存目录吗?

【问题讨论】:

  • $writer->save($filename); 在里面添加你想要的路径
  • 它不起作用。我试过$writer->save("/full/path/",$filename);$writer->save("/full/parh/".$filename); 并没有工作和$writer->save($filename, "/full/path");
  • 只有第二个例子是有效的,如果它不起作用检查文件\目录权限。
  • 这很奇怪,我给了文件夹 777 权限,甚至使用 $writer->save(__DIR__."/".$filename); 也不起作用
  • 我也有同样的问题,你解决了吗?

标签: php phpspreadsheet


【解决方案1】:

在路径中使用点

$writer->save("./templates/MyFilename.xls");

【讨论】:

    【解决方案2】:

    在这一行:

    $filename = $helper->getFilename("MyFilename", 'xls'); 
    

    改为:

    $filename = basename($helper->getFilename("MyFilename", 'xls')); 
    

    这样,$filename 将只包含文件名。然后你可以插入你的路径并让它按照你的意愿工作,就像我对我的一样:

    $writer->save('C:/xampp/htdocs/tmp/' . $outputFileName);
    

    【讨论】:

      【解决方案3】:

      确保将这些行注释掉。由于此参数将告诉服务器将 Xlsx 导出为可下载文件。不在特定的自定义位置。

      // Redirect output to a client’s web browser (Xlsx)
      // header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
      // header('Content-Disposition: attachment;filename="'.$FileName.'"');
      // 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->save("Location/Of/YourFolder".$YourFileName);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-24
        • 1970-01-01
        • 1970-01-01
        • 2017-09-03
        • 2010-10-12
        相关资源
        最近更新 更多