【问题标题】:Errors while exporting to .xls using PHP使用 PHP 导出到 .xls 时出错
【发布时间】:2012-05-30 11:58:00
【问题描述】:

我之前问过一个类似的问题,但有人告诉我我的问题只是我懒惰,所以让我改一下。

我一直在使用 PHP 类脚本将我的 SQL 数据导出到 .xls 文件,但生成的 excel 文件不显示任何值,并且网页本身也没有显示错误。

我使用的类文件记录在下面的链接中:

http://web.burza.hr/blog/php-class-for-exporting-data-in-multiple-worksheets-excel-xml/

我已将其合并到我的网站中,如下所示

$dbase->loadextraClass('excel.xml');

$excel = new excel_xml();

$header_style = array(
                        'bold'       => 1,
                        'size'       => '14',
                        'color'      => '#000000',
                        'bgcolor'    => '#ffffff'
                    );

$excel->add_style('header',$header_style);


if(isset($_POST['fec_save']))
{
    if($_POST['reporttype']=='films')
    {

        $films = $dbase->runquery("SELECT datetime,title,country_of_origin,language,runningtime,(SELECT name FROM fec_client WHERE filmid = fec_film.filmid) AS client, (SELECT rating_decision FROM fec_rating_report WHERE filmid = fec_film.filmid) AS rating FROM fec_film WHERE datetime >= '".strtotime($_POST['fromdate'])."' AND datetime <= '".strtotime($_POST['todate'])."'",'multiple');

        $filmcount = $dbase->getcount($films);

        //continue with excel buildup
        $columns = array('Date','Title','Origin','Language','Minutes','Client','Rating');
        $excel->add_row($columns,'header');

        for($i=1; $i<=$filmcount; $i++)
        {
            $film = $dbase->fetcharray($films);

            $excel->add_row($film['datetime'],$film['title'],$film['country_of_origin'],$film['language'],$film['runningtime'],$film['client'],$film['rating']);
        }

        $excel->create_worksheet('From_'.str_replace(' ','',$_POST['fromdate']).'_to'.str_replace(' ','',$_POST['todate']));

        $xml = $excel->generate();
        $excel->download('FilmsClassified_from_'.str_replace(' ','',$_POST['fromdate']).'_to'.str_replace(' ','',$_POST['todate']));
    }

}

我想要一些关于我可能做错了什么的帮助。

谢谢

【问题讨论】:

  • 到目前为止你做了什么来调试这个问题?
  • 问题是人们不想开始debugging that 3rd party class...你必须缩小问题范围...尝试创建最小的示例,当你碰壁时,你可以更具体地说明究竟是什么部分给你带来了问题......
  • 正如我在问题中所说,由于新创建的 .xls 文件或创建网页中没有显示错误消息,因此很难缩小问题范围。
  • @Paul - $_POST['fec_save'] 已设置
  • 嗯,您使用的库实际上并没有创建 xls 文件,至少它没有创建 BIFF 文件,而是 Excel 2003 使用的一种名为 SpreadsheetML 的格式。早期版本的 Excel 在打开此文件时会出现问题,而最新版本会发出警告,指出它不是有效的 xls 文件

标签: php mysql xls


【解决方案1】:

发表评论太长:

$xml = $excel->generate();

将所有 xml 文件内容创建为字符串并将其存储在 $xml 而

$excel->create_worksheet('From_'.str_replace(' ','',$_POST['fromdate']).'_to'.str_replace(' ','',$_POST['todate']));

创建 xml 并将其定向到输出,并带有适当的标题以供下载。

所以你没有正确使用这个类,因为那是不必要的重复工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    相关资源
    最近更新 更多