CSV 文件中的可点击 URL Link 格式 下载 PHP
Clickable URL Link formatting in CSV file Download in PHP
我为用户提供了从我的 PHP 站点网页下载表格数据的选项。
用户单击可用的“下载为 CSV/Excel”按钮后,网页上 HTML table 中的数据将成功下载为 CSV 文件。
到这里为止一切都很好,并且在以下 PHP 代码的帮助下工作正常:
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=data.csv");
header("Pragma: no-cache");
header("Expires: 0");
...
...
...
$csvdata.="{$row['ProdName']},{$row['ProdQty']},{$row['ProdPrice']},<a href='https://example.com/page1.html'>Link</a>,https://example.com/page1.html,"."\n";
echo $csvdata."\n";
这是在 MS Excel 中打开时 CSV 文件中的数据显示方式的屏幕截图:
A、B 和 C 列都很好。
但是,对于 D(或 E)列,我想合并一个 CLICKABLE URL link,这样当用户在 MS Excel 中打开下载的 CSV 文件时,他们应该能够获得可点击的 link,点击后应该会在浏览器中将他们带到我网站上的相应网页。
理想情况下,它应该显示为“更多详细信息”蓝色 link,如屏幕截图中单元格 D9 和 D10 中所示。
从上面的PHP代码可以看出,我试过用<a href>
作为D列的值,direct text URL
作为E列的值,但是都没有打开在 Excel.
中打开文件时可点击 link
有什么方法可以通过修改PHP代码来实现吗?
“CSV”代表“comma-separated 值”(或有时是“character-separated 值”),字面上就是这样——一堆值,用逗号(或其他字符)分隔).它没有格式,没有交互性,没有特殊功能,它只是数据。
如果您想要一个包含自定义格式和功能的电子表格,您需要生成一些其他文件格式,例如由 Excel。这不像将 CSV 文件放在一起那么容易,但是有一些库可以帮助您做到这一点,例如 PhpSpreadsheet. There is an example in the manual of how to make a cell clickable using that library;适应你的例子:
$spreadsheet->getActiveSheet()->setCellValue('D2', 'More Details');
$spreadsheet->getActiveSheet()->getCell('D2')->getHyperlink()->setUrl('https://example.com/page1.html')
请使用 HYPERLINK 功能使 CSV 超链接生效
示例(请另存为test.csv):
a, b, c, d ,"=HYPERLINK(""http://www.yahoo.com"",""See Yahoo"")"
e, f, g, h ,"=HYPERLINK(""http://www.yahoo.com"",""See Yahoo"")"
因此,修改您的代码以使用上述格式,例如:
<?php
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=data.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo '1,2,3,"=HYPERLINK(""http://www.yahoo.com"",""See Yahoo"")"' . "," . '"=HYPERLINK(""http://www.google.com"",""Google"")"'."\n";
echo '8,7,6,"=HYPERLINK(""http://www.yahoo.com"",""See Yahoo"")"' . "," . '"=HYPERLINK(""http://www.google.com"",""Google"")"'."\n";
?>
我为用户提供了从我的 PHP 站点网页下载表格数据的选项。 用户单击可用的“下载为 CSV/Excel”按钮后,网页上 HTML table 中的数据将成功下载为 CSV 文件。
到这里为止一切都很好,并且在以下 PHP 代码的帮助下工作正常:
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=data.csv");
header("Pragma: no-cache");
header("Expires: 0");
...
...
...
$csvdata.="{$row['ProdName']},{$row['ProdQty']},{$row['ProdPrice']},<a href='https://example.com/page1.html'>Link</a>,https://example.com/page1.html,"."\n";
echo $csvdata."\n";
这是在 MS Excel 中打开时 CSV 文件中的数据显示方式的屏幕截图:
A、B 和 C 列都很好。
但是,对于 D(或 E)列,我想合并一个 CLICKABLE URL link,这样当用户在 MS Excel 中打开下载的 CSV 文件时,他们应该能够获得可点击的 link,点击后应该会在浏览器中将他们带到我网站上的相应网页。
理想情况下,它应该显示为“更多详细信息”蓝色 link,如屏幕截图中单元格 D9 和 D10 中所示。
从上面的PHP代码可以看出,我试过用<a href>
作为D列的值,direct text URL
作为E列的值,但是都没有打开在 Excel.
有什么方法可以通过修改PHP代码来实现吗?
“CSV”代表“comma-separated 值”(或有时是“character-separated 值”),字面上就是这样——一堆值,用逗号(或其他字符)分隔).它没有格式,没有交互性,没有特殊功能,它只是数据。
如果您想要一个包含自定义格式和功能的电子表格,您需要生成一些其他文件格式,例如由 Excel。这不像将 CSV 文件放在一起那么容易,但是有一些库可以帮助您做到这一点,例如 PhpSpreadsheet. There is an example in the manual of how to make a cell clickable using that library;适应你的例子:
$spreadsheet->getActiveSheet()->setCellValue('D2', 'More Details');
$spreadsheet->getActiveSheet()->getCell('D2')->getHyperlink()->setUrl('https://example.com/page1.html')
请使用 HYPERLINK 功能使 CSV 超链接生效
示例(请另存为test.csv):
a, b, c, d ,"=HYPERLINK(""http://www.yahoo.com"",""See Yahoo"")"
e, f, g, h ,"=HYPERLINK(""http://www.yahoo.com"",""See Yahoo"")"
因此,修改您的代码以使用上述格式,例如:
<?php
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=data.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo '1,2,3,"=HYPERLINK(""http://www.yahoo.com"",""See Yahoo"")"' . "," . '"=HYPERLINK(""http://www.google.com"",""Google"")"'."\n";
echo '8,7,6,"=HYPERLINK(""http://www.yahoo.com"",""See Yahoo"")"' . "," . '"=HYPERLINK(""http://www.google.com"",""Google"")"'."\n";
?>