Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将MySQL数据导出到Excel矩阵_Php_Mysql_Excel_Export To Excel - Fatal编程技术网

Php 将MySQL数据导出到Excel矩阵

Php 将MySQL数据导出到Excel矩阵,php,mysql,excel,export-to-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 --+-----------------

我有一个名为“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
  |  A    B    C   D
--+------------------
A |
B |
<?php
[..]
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
[..]
?>
我需要从PHP内部执行此操作,但不知道如何执行此操作。我是否首先创建一个空Excel文件,命名所有行和列?(就像这样:)

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

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

from to
-------
A    C
F    K
F    L
B    Z
M    P
P    A
所以我认为我不能一个单元格一个单元格地写,一行一行地写。或者我应该首先查询数据库,按“from”列排序,然后按“to”列排序

如果您能帮助我开始学习,我们将不胜感激。

  • 从mysql获取数据
  • 使用获取的数据构建一个数组(db数据的顺序无关紧要,您可以随时按键/值对数组进行排序)
  • 使用PHPExcel(或ExcelWriter类,或其他任何类)生成excel文件
  • 通过逐列逐行迭代数据数组生成文件
您可能想使用,它们提供了很好的示例,例如:


Excel也能理解html表格。所以你可以:

  • 获取数据
  • 迭代并构建一个表,就像您希望在Excel中显示的那样
  • 设置要下载的头和MIME类型
  • 在Excel中打开(您将收到一条警告消息)
  • 标题应如下所示:

      |  A    B    C   D
    --+------------------
    A |  0   456  233 463
    B | 766   0   215 142
    
      |  A    B    C   D
    --+------------------
    A |
    B |
    
    <?php
    [..]
    header('Content-Type: application/force-download');
    header('Content-Disposition: attachment; filename="'.$filename.'"');
    header('Expires: 0');
    [..]
    ?>
    

    谢谢,我最终构建了一个HTML表(如下所示)以导入Excel。但编写CSV并导入Excel也是一个简单的选择:)谢谢!您是否尝试过将excel导出到txt。格式如果没有,你应该试试,你可以看到文本的结构,然后你可以简单地把它放在你的数据库中。只需将它导出为CSV文件-这是最好的选择。当你导出为CSV时,你可以将它加载到Excel中,执行另存为并将其转换为Excel特定的格式。