php - 将 MySQL 数据导出到 Excel 矩阵

标签 php mysql excel export-to-excel

我有一个名为“relations”的 MySQL 表,如下:

from to count
-------------
A    B  456
A    C  233
A    D  463
B    A  766
B    C  215
B    D  142

(实际上,“from”和“to”包含人名,表包含 150 行)。我现在需要将此表导出到 (150x150) 矩阵形式的 Excel 文件(不是 CSV),如下所示:

  |  A    B    C   D
--+------------------
A |  0   456  233 463
B | 766   0   215 142

我需要在 PHP 中执行此操作,但不知道如何进行。我是否首先创建一个空的 Excel 文件,命名所有行和列? (就像这样:)

  |  A    B    C   D
--+------------------
A |
B |

如果我这样做,那么如何连接到正确的单元格以插入正确的计数?或者我是否从 PHP 中一起编写 Excel 文件?

此外,实际上该表不是结构化的,因此它看起来像:

from to
-------
A    C
F    K
F    L
B    Z
M    P
P    A

所以我认为我无法逐单元、逐行编写。或者我应该首先查询数据库以按“from”列排序,然后按“to”列排序。

任何帮助我入门的帮助将不胜感激。

最佳答案

您可能想使用 Pear::Spreadsheet_Excel_Writer ,他们提供了很好的例子here如:

<?php
require_once 'Spreadsheet/Excel/Writer.php';

// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();

// sending HTTP headers
$workbook->send('test.xls');

// Creating a worksheet
$worksheet =& $workbook->addWorksheet('My first worksheet');

// The actual data
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Age');

非常简单且易于访问。

但我的个人经验:如果您需要写入大量数据,请不要使用它,我保存了 8 列和 60 000 行,前 10 000 行大约需要 2 分钟,接下来的 10 000 行大约需要 45 分钟3 小时后,我在达到 30 000 之前停止了脚本。我最终使用 perl variant大约需要 3 分钟才能完成 60 000 行。

讽刺的是,我现在在 Excel 中使用 CSV 导入:)

关于php - 将 MySQL 数据导出到 Excel 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184543/

相关文章:

php中的多个分隔符 explode

php - 在 PDO SQL 语句中使用 PHP 变量时出现问题

php - 在我的数据库中使用 mysql 确认数据时出现问题

mysql - 使用 SQLAlchemy 创建时自动递增非唯一 ID

Excel VBA IN 关键字

sql - Excel Vba - 在 sql 字符串中使用撇号

php - 将 GPS 纬度/经度从不同格式转换为一种格式(在 PHP 中)

php - 参数为 false 时插入空值

php - WordPress 加载更多评论

arrays - 将多维项添加到数组中,然后一次检索所有项