我有一个名为“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/