gpt4 book ai didi

php - 如何将MySQL中的50万行39列数据转换为Excel

转载 作者:行者123 更新时间:2023-11-29 13:10:00 24 4
gpt4 key购买 nike

我有一个 PHP Web 应用程序,可以使用 PHPExcel 将数据转换为 Excel 文件。该 Web 应用程序在 Linux 计算机内运行。

这些是所涉及的步骤。

  1. 我需要运行多个联接查询才能获取所需的数据。
  2. 然后,我使用 PHPExcel 获取数据并将其写入 Excel 文件。
  3. 分批重复步骤 1-2,每次约 5000 行。

我注意到仅生成约 50000 行(约为 10%)所需的时间就接近 15 分钟,这太长了。

我需要每天生成一次这个 Excel 文件。

我有以下选择。

a) 我可以检索步骤 1 中所需的所有数据并将数据存储到单独的 MySQL 表中,而不是重复执行步骤 1 和 2 大约 10 次。

然后我尝试 PHPExcel 并读取该表一次并写入 Excel 文件一次。

最后,我会把这张 table 擦干净。

b) 与a) 相同,但不使用PHPExcel,而是找到一种在云Windows 实例中运行MySQL For Excel 来生成Excel 文件的方法。

如果需要进一步格式化,我将使用 PHPExcel 来格式化此 Excel 文件。

Linux 机器和 Windows 云实例之间发送数据的方式是通过电子邮件附件,因为 Linux 机器位于防火墙内。

我发布这个问题是为了看看是否有人有更好的想法。

与此同时,我会尝试选项a)。

我不知道如何针对选项 b) 运行 Windows 实例和 microsoft excel。

最佳答案

对我来说,最好的方法是使用 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');

关于php - 如何将MySQL中的50万行39列数据转换为Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22218215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com