1

我想将 excel 导出到特定文件夹,用户可以将其保存在他们想要的任何地方。目前我已经成功导出到 excel 但我在本地对其进行了测试并将其下载到我的本地服务器文件夹中。我希望有一个人可以帮助我。谢谢你。

$id=$_GET['id'];
$excel=new ExcelWriter("./excel/company".$id.".xls");
if($excel==false)   
echo $excel->error;
$myArr=array("NO", "COMPANY", "ADDRESS1", "ADDRESS2", "ADDRESS3", "POSTCODE", "CITY", "STATE", "PHONE NO", "FAX NO", "EMAIL", "WEBSITE");
$excel->writeLine($myArr);
$qry=mysql_query(" SELECT organizations.*, states.state, cities.city FROM organizations, states, cities WHERE idOrg='$id' AND organizations.state_id=states.idState AND organizations.city_id=cities.idCity");
if($qry!=false)
{
    $i=1;
    while($res=mysql_fetch_array($qry))
    {
        $myArr=array($i,$res['companyName'], $res['add1'], $res['add2'], $res['add3'], $res['postcode'], $res['city'],$res['state'], $res['phoneNo'], $res['faxNo'], $res['email'], $res['website']);
        $excel->writeLine($myArr);
        $i++;
    }
}
4

3 回答 3

3

您的问题标题表明您假设使用 PHP,您可以在客户端的 PC 上保存 Excel 文件。不完全是。您可以将其保存到本地网络服务器(正如您已经发现的那样)。但是要将其传输到客户端 PC,您应该将其作为下载提供。

文件写入完成后(正如您已经在做的那样),向用户提供指向服务器上文件的链接。然后,他们将能够选择应该在他们的 PC 上下载它的位置。

另一种可能性是将excel文件数据作为HTTP响应写出,并将Content-Type标头设置为application/vnd.ms-excel(或任何适合您的文件类型的内容)和a Content-Dispositionof attachment示例)。

我对 ExcelWriter 不熟悉,所以我不知道它是否有某种dump功能。也许在你写出文件之后,你只需执行以下操作:

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename=company'. $id .'.xls');

echo file_get_contents('./excel/company'. $id .'.xls');
于 2012-12-31T15:17:36.613 回答
1

解决方案在他们的文档中

http://pear.php.net/manual/en/package.fileformats.spreadsheet-excel-writer.intro.php

摘自上述网站

// sending HTTP headers
$workbook->send('test.xls'); 

这意味着我们将电子表格发送到浏览器。但是,如果我们只想将电子表格保存在我们的机器中呢?好吧,您只需要省略该行并为工作簿构造函数提供一个有效的文件路径。

例如,如果我们想将我们在第一个示例中创建的同一个电子表格保存到一个名为“test.xls”的文件中,我们可以这样做:

然后,您可以将用户指向该文件的链接,以便他可以将其保存在他喜欢的位置

于 2012-12-31T15:17:13.580 回答
0
"./excel/company".$id.".xls"

是相对路径,您确定这是您要保存的位置吗?您可以使用 $_SERVER['DOCUMENT_ROOT'] 获取文档根目录并使用它+这样的路径。

$_SERVER['DOCUMENT_ROOT'] . "/excel/company".$id.".xls

也不要忘记关闭文件。

$excel->close();
于 2012-12-31T15:14:23.093 回答