从PHP数组创建XLS文件(行和列相互干扰)

时间:2019-01-09 13:09:25

标签: php

首先,我使用此类通过XML创建Excel文件:https://github.com/oliverschwarz/php-excel

我要导出到Excel的标题;

$headers = array("A","B","C");

我要导出到Excel的数组;

$example = array("a1","a2","a3");
$example2 = array("b1","b2","b3");
$example3 = array("c1","c2","c3");

然后我将这些代码合并到1个数组中;

$result = array($headers,$example,$example2,$example3);

总之,我开始行动;

$xls = new Excel_XML('UTF-8', false, 'Test');
$xls->addArray($result);
$xls->generateXML('xls-file');

之后,这些类将按预期方式创建一个XLS文件,但是;由于我数组的类型,XLS文件方案是意外的。所以我需要帮助我的朋友,我该怎么办?谢谢...

输出就是这样;

A_|__B__|_C
A1|__A2_|_A3
B1|__B2_|_B3
C1|__C2_|_C3

我想要的输出就是这样;

A_|__B__|_C
A1|__B1_|_C1
A2|__B2_|_C2
A3|__B3_|_C3

2 个答案:

答案 0 :(得分:1)

您可以使用array_map()重新整理结果中的数据,然后使用array_unshift()将标头推入数组的开头...

$result = array_map(null, $example, $example2, $example3);
array_unshift($result, $headers);
print_r($result);

这将给。

Array
(
    [0] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )

    [1] => Array
        (
            [0] => a1
            [1] => b1
            [2] => c1
        )

    [2] => Array
        (
            [0] => a2
            [1] => b2
            [2] => c2
        )

    [3] => Array
        (
            [0] => a3
            [1] => b3
            [2] => c3
        )

)

如果您将数据创建为数组数组,则以下操作将执行相同的操作,使用...将该数组作为新参数传递给每个元素...

$example = [ ["a1","a2","a3"], ["b1","b2","b3"], ["c1","c2","c3"]];
$result = array_map(null, ...$example);
array_unshift($result, $headers);
print_r($result);

答案 1 :(得分:0)

每个数组在Excel中直接变成一行。因此,您需要创建数组结构以匹配Excel中所需的行:

$example = array("a1","b2","c1");
$example2 = array("a2","b2","c2");
$example3 = array("a3","b3","c3");

如果实际上这些数组是从某些其他数据源生成的(而不是如您的问题所示那样被硬编码),那么您将必须修改生成它们的代码,以便创建正确的布局。由于您没有共享这样的代码,因此我无法直接帮助您完成这样的过程。