我有一个PHP Web应用程序,可以使用PHPExcel将数据转换为excel文件。 Web应用程序在Linux机器内运行。
这些是涉及的步骤。
我注意到单独产生~50000行(大约10%)的时间差不多是15分钟,这太长了。
我需要每天生成一次这个excel文件。
在我的头顶,我有以下选择。
a)我不是重复执行步骤1和2大约10次,而是可以检索步骤1中所需的所有数据,并将数据存储到单独的MySQL表中。
然后我尝试PHPExcel并读取此表一次并编写excel文件一次。
最后,我会再把这张桌子擦干净。
b)与a)相同但不是使用PHPExcel,而是找到一种在云端Windows实例中运行MySQL For Excel以生成Excel文件的方法。
如果需要进一步格式化,我将使用PHPExcel格式化此Excel文件。
在Linux机器和Windows云实例之间发送数据的方式是通过电子邮件附件,因为Linux机器在防火墙内。
我发布这个问题,看看是否有人有更好的主意。
与此同时,我会尝试选项a)。
我不知道如何为选项b)运行Windows实例和microsoft excel。
答案 0 :(得分:1)
至于我,最好的方法是使用mysql SELECT INTO OUTFILE。您可以将结果导出到csv,Microsoft Excel将正确打开
示例:
SELECT * INTO OUTFILE '/tmp/result.csv'
FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ‘\\’
LINES TERMINATED BY '\n'
FROM table
之后,你可以使用像PHPexcel这样的php库来转换csv到xls
include 'PHPExcel/IOFactory.php';
$objReader = PHPExcel_IOFactory::createReader('CSV');
// If the files uses a delimiter other than a comma (e.g. a tab), then tell the reader
$objReader->setDelimiter("\t");
// If the files uses an encoding other than UTF-8 or ASCII, then tell the reader
$objReader->setInputEncoding('UTF-16LE');
$objPHPExcel = $objReader->load('MyCSVFile.csv');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('MyExcelFile.xls');