文件格式和扩展名不匹配
我正在使用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无法打开文件。
我没有改变任何图书馆,所以也许问题在那里?
出现警告是因为文件扩展名* .xls与XML的内容不同。
正如在https://github.com/elidickinson/php-export-data中提到的,这个库将“导出CSV,TSV或者Excel XML(aka SpreadsheeML)格式的数据到一个文件或者直接导入浏览器”。
因此,其导出的实际内容types将是XML,而不是XLS或XLSX。 如果你命名文件* .xml并用Excel打开这个* .xml,那么警告就会消失。 但是,你不能确定这个文件是通过双击在Excel中打开的。 如果有另一个应用程序设置为* .xml文件的默认应用程序,则不会。
因此,无论您是否接受该警告,或者将文件命名为* .xml,或者使用了可以导出XLS和/或XLSX的库。 例如https://github.com/PHPOffice/PHPExcel 。
*.xlsx
文件只能使用Excel 2007或更高版本默认打开。 如果您的Excel版本比此更旧,则可以下载并安装Microsoft Office兼容包 。
查看ExportDataExcel
类上面的注释,该文件的格式称为SpreadsheetML。 不幸的是,这种types的文件的正确扩展名似乎是*.xml
,默认情况下它不能在Excel中打开。 这些评论提到,你可以通过给文件一个*.xls
扩展名来解决这个问题,但是这会带来你得到的警告。