我已经搜索了大约3或4天,以找到phpspreadsheet保存文件路径的存储位置。此处和其他任何地方的常用答案都是在$writer->save($filename)
之前的$filename
中插入我想要的路径。我已经尝试过了,但是没有用。
我将显示代码和打印输出。这是在本地计算机上,Win 10专业版。 xampp的当前版本。所有工作都在本地最恶劣的环境中进行,永远不要进入防火墙之外。
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将Xlsx格式写入 C:\ Users \ HAL1GB〜1 \ AppData \ Local \ Temp / phpspreadsheet / 33_Chart_create_line.xlsx 在0.0233秒内
插入路径时的消息:
18:45:18将Xlsx格式写入 C:\ Users \ HAL1GB〜1 \ AppData \ Local \ Temp / phpspreadsheet / 33_Chart_create_line.xlsx 在0.0233秒内
如您所见,它只是将我的路径添加到默认路径,然后无法保存。 $ filename的回显,显示路径来自$helper->getFilename(FILE);
调用。文件名变量:C:\Users\HAL1GB~1\AppData\Local\Temp/phpspreadsheet/33_Chart_create_line.xlsx
错误消息:
致命错误:未捕获的PhpOffice \ PhpSpreadsheet \ Writer \ Exception:可以 没开 C:/ xampp / htdocs / tmp / C:\ Users \ HAL1GB〜1 \ AppData \ Local \ Temp / phpspreadsheet / 33_Chart_create_line.xlsx 用于写作。在 C:\ xampp \ htdocs \ MySql \ vendor \ phpoffice \ phpspreadsheet \ src \ PhpSpreadsheet \ Writer \ Xlsx.php:218 堆栈跟踪:#0 C:\ xampp \ htdocs \ MySql \ vendor \ phpoffice \ phpspreadsheet \ samples \ Chart \ 33_Chart_create_line.php(105): PhpOffice \ PhpSpreadsheet \ Writer \ Xlsx-> save('C:/ xampp / htdocs ...')#1 {main}投入 C:\ xampp \ htdocs \ MySql \ vendor \ phpoffice \ phpspreadsheet \ src \ PhpSpreadsheet \ Writer \ Xlsx.php 在第218行
答案 0 :(得分:0)
保存文件时,请勿使用实际名称中的$filename
。指定要保存文件的位置以及位置的完整路径和名称。使用您的示例将是:
$writer->save('C:/xampp/htdocs/tmp/Example_File.xlsx');
PHPSpreadSheet随附的file
类包含一个名为sysGetTempDir
的函数。在该函数中,它将使用系统定义的临时文件路径,即您所看到的路径;或者,如果已定义并且可写的话,它将使用PHP INIfile中的upload_tmp_dir
设置的值。
如果您想控制文件的创建位置,请将PHP INI文件中的upload_tmp_dir
值设置为所需的路径。