我使用php-export-data库将一些数据导出到Excel文档。
我已按照示例初始化,添加了行并最终确定了文档,并按预期生成了可用的.xls
文件,但是当我打开它时,Excel 2010会抛出一条警告消息the file format and extension of xls don't match
。
该文件仍可使用且可以正常打开,但由于这是针对客户端的,我更希望警告根本不显示。
我用来初始化,添加行和完成文档的代码。
$mailing_list = $event->getMailingList(); //returns an array
$exporter = new ExportDataExcel('browser', 'mailing_list.xls');
$exporter->initialize();
foreach($mailing_list as $mail){
$exporter->addRow($mail);
}
$exporter->finalize();
在查看有关此错误的Microsoft文档时,归结为.xls
文件被重命名为.xlsx
文件,反之亦然。我尝试使用mailing_list.xlsx
代替mailing_list.xls
,但Excel无法打开该文件。
我还没有改变任何东西到图书馆,所以也许问题就在那里?
答案 0 :(得分:2)
出现警告是因为文件扩展名* .xls与XML内容不同。
与https://github.com/elidickinson/php-export-data中提到的一样,此库将以CSV,TSV或Excel XML(又名SpreadsheeML)格式将数据导出到文件或直接导出到浏览器"。
因此,其导出的实际内容类型将是XML,而不是XLS或XLSX。如果您将文件命名为* .xml并使用Excel打开此* .xml,则警告将消失。但是,您无法通过双击确保在Excel中打开此文件。如果将另一个应用程序设置为* .xml文件的默认应用程序,则不会。
因此,无论是使用该警告还是将文件命名为* .xml,或者使用可以真正导出XLS和/或XLSX的库。例如https://github.com/PHPOffice/PHPExcel。
答案 1 :(得分:0)
*.xlsx
个文件。如果您的Excel版本早于此版本,则可以下载并安装Microsoft Office compatibility pack。
查看ExportDataExcel
class上方的注释,文件的格式称为SpreadsheetML。不幸的是,似乎这种类型的文件的正确扩展可能是*.xml
,默认情况下不会在Excel中打开。评论中提到您可以通过为文件提供*.xls
扩展名来解决此问题,但这会显示您收到的警告。