PHPexcel生成的XLS文件以纯XML Linux打开


phpexcel-generated xls file open as plain xml linux

我正在使用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);

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

ob_end_clean();
ob_start();

希望它对有相同问题的人有用。