默认保存电子表格路径存储在哪里?

Where is the default save spreadsheet path stored at?

找了大概3、4天,才找到phpspreadsheet保存文件路径的存放位置。此处和其他任何地方的常用答案是在 $writer->save($filename) 之前插入我想要的路径 $filename。我已经尝试过了,但它不起作用。

我会在代码和打印输出中展示。这是在本地计算机上,Win 10 专业版。 xampp 的当前版本。全部在localhosts环境下工作,切勿走出防火墙。

来自 phpspreadsheet 示例的代码 33_Chart_create_line.php。正如我所说,尝试插入我想要的路径。那么,默认路径存放在哪里呢?

//Code     // Save Excel 2007 file
$filename = $helper->getFilename(__FILE__);
echo "file name the variable : " . $filename . "<br>";
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->setIncludeCharts(true);
$callStartTime = microtime(true);
$writer->save($filename);
$helper->logWrite($writer, $filename, $callStartTime);

//And my try:
// Save Excel 2007 file
$filename = $helper->getFilename(__FILE__);
echo "file name the variable : " . $filename . "<br>";
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->setIncludeCharts(true);
$callStartTime = microtime(true);
$writer->save("C:/xampp/htdocs/tmp/" . $filename);
$helper->logWrite($writer, $filename, $callStartTime);

正常打印输出消息:

18:45:18 Write Xlsx format to C:\Users\HAL1GB~1\AppData\Local\Temp/phpspreadsheet/33_Chart_create_line.xlsx in 0.0233 seconds

当我插入路径时的消息:

18:45:18 Write Xlsx format to C:\Users\HAL1GB~1\AppData\Local\Temp/phpspreadsheet/33_Chart_create_line.xlsx in 0.0233 seconds

如您所见,它只是将我的路径添加到默认路径,然后无法进行保存。 $filename 的回显,显示路径来自 $helper->getFilename(FILE); 调用。文件名变量:C:\Users\HAL1GB~1\AppData\Local\Temp/phpspreadsheet/33_Chart_create_line.xlsx

错误信息:

Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Writer\Exception: Could not open C:/xampp/htdocs/tmp/C:\Users\HAL1GB~1\AppData\Local\Temp/phpspreadsheet/33_Chart_create_line.xlsx for writing. in C:\xampp\htdocs\MySql\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Writer\Xlsx.php:218 Stack trace: #0 C:\xampp\htdocs\MySql\vendor\phpoffice\phpspreadsheet\samples\Chart_Chart_create_line.php(105): PhpOffice\PhpSpreadsheet\Writer\Xlsx->save('C:/xampp/htdocs...') #1 {main} thrown in C:\xampp\htdocs\MySql\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Writer\Xlsx.php on line 218

保存文件时不要在实际名称中使用 $filename。指定要保存文件的位置和位置的完整路径和名称。使用您的示例:

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

PHPSpreadSheet 自带的fileclass包含一个名为sysGetTempDir的函数。在该函数中,它将使用系统定义的临时文件路径,这就是您所看到的,或者,如果它已定义且可写,则 PHP INIfile 中 upload_tmp_dir 设置的值。

如果您想控制文件的创建位置,请将 PHP INI 文件中的 upload_tmp_dir 值设置为所需的路径。