簡體   English   中英

在phpspreadsheet中更改保存目錄

[英]Change saving directory in phpspreadsheet

我正在使用 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);

但是 output 位於

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

是否有其他 function 設置我想要文件的保存目錄?

在路徑中使用點

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

在這一行:

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

改成:

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

這樣, $filename 將只包含文件名。 然后你可以插入你的路徑並讓它按照你的意願工作,就像我對我的那樣:

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

確保這些行被注釋掉。 由於此參數將告訴服務器將 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);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="myfile.xlsx"');
header('Cache-Control: max-age=0');

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

來源https://phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#redirect-output-to-a-clients-web-browser

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM