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();

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