phpexcel生成的xls文件作为普通的xml linux打开

时间:2015-03-16 07:06:52

标签: php xml yii xls libreoffice

我正在使用YII,PHP开发一个网站。

我一直在网络的某些部分使用PHPexcel,它运行得很好。在大多数情况下,由phpexcel创建的文件可以由libreoffice打开。但是在一个控制器中它会生成一个精细的xls文件。该文件可以下载。但每次我从libreoffice打开文件时它都会显示文本导入。然后该文件显示libreoffice calc中的实际xml文件。可能是什么问题呢?

我尝试从工作控制器(另一个控制器)复制并粘贴代码,但它仍然生成相同的文件(以普通xml打开)。

可以从PHP修复它还是来自libreoffice的错误?可以在MS.excel中成功打开错误文件。

感谢您的回答。

这些是生成的xml格式。从工作中看起来是一样的。

<?xml version="1.0" encoding="UTF-8"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="generatedName">

这是我的代码。

$data = array();
        $data = array(
            1 => array ('Report Anomali Price'),
        );
        $data = array_merge($data, array(
                array('Item Code','Name', 'Item Price','Unit Code','Location Apotek','Item Price Gondo', 'Unit Code Gondo', 'Percentage Price', 'Date'),
        ));

        $data = array_merge($data, array(
            array(''),
            array('Export By : ' .Yii::app()->user->name .' At : ' .date("d/m/Y H:i:s") .'  -  Copyright ' .date('Y') ),
        ));

        Yii::import('application.extensions.phpexcel.JPhpExcel');
        $title = "AnomaliPriceReport_".date('dmY');
        $xls = new JPhpExcel('UTF-8', false, $title);
        $xls->addArray($data);
        $xls->generateXML($title);

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。 我在生成excel文件之前添加了这个。

ob_end_clean();
ob_start();

希望对有同样问题的人有用。