PHPexcel数组值到列

时间:2017-12-04 12:53:38

标签: php arrays excel phpexcel

我在使用PHPexcel填充具有数组值的列时遇到问题我将查询结果添加到数组中。 A,B,C列......不是行!

while (($red = pg_fetch_assoc($resultID))) {
$nivelacija[] = $red ['nivelacija'];
$dokument[] = $red ['dokument'];
$sifra[] = $red ['sifra'];
$naziv[] = $red ['naziv'];
$kol[] = $red ['kol'];
$pdv[] = $red ['pdv'];
$datum[] = $red ['datum'];
$stara[] = $red ['stara'];
$nova[] = $red ['nova'];
$marza[] = $red ['marza'];
$razlika[] = $red ['razlika'];
$zaduzenje[] = $red ['zaduzenje'];

    }

我尝试过这样做

    for ($i = 1; $i <= 10; $i++) {  
$objPHPExcel->getActiveSheet()->fromArray($nivelacija, null, 'A' . $i);
}

但没有成功,看起来像fromArray函数只能针对特定的细胞。所以我尝试改用这个

for ($i = 1 , $vrednost=0; $i <= 50; $i++ , $vrednost++ ) {
$objPHPExcel->getActiveSheet()->setCellValue('A' .$i, "$nivelacija[$vrednost]" ); }

但是像这样我在A列中得到了结果,但在任何地方它都将Array(0)写入Array(49)

我已经测试了这个,当我写&#34; $ nivelacija [0]&#34;它将值写入目标列。

我不知道如何将每个数组的数组值都放到一个不同的列中,我设法做的就是将它导出到一行,但这对我来说不起作用。

我可以以某种方式直接将pg查询到没有数组的excel吗?即便如此,我想解决数组到列的问题。

编辑:

var_dump ($nivelacija);

的结果
array(8) { [0]=> string(8) "NMP03945" [1]=> string(8) "NMP03944" [2]=> string(8) "NMP03943" [3]=> string(8) "NMP03942" [4]=> string(8) "NMP03942" [5]=> string(8) "NMP03942" [6]=> string(8) "NMP03941" [7]=> string(8) "NMP03940" } 

它只有8个值,因为日期仅选择1天。它假设每月使用未知的数值

----添加了$ sve数组

$sve = array($nivelacija, $dokument, $sifra, $naziv, $kol, $pdv, $datum, $stara, $nova, $marza, $razlika, $zaduzenje);

var_dumping的结果

array(12) { [0]=> array(8) { [0]=> string(8) "NMP03945" [1]=> string(8) "NMP03944" [2]=> string(8) "NMP03943" [3]=> string(8) "NMP03942" [4]=> string(8) "NMP03942" [5]=> string(8) "NMP03942" [6]=> string(8) "NMP03941" [7]=> string(8) "NMP03940" } [1]=> array(8) { [0]=> string(8) "RNB15269" [1]=> string(8) "RNB15266" [2]=> string(8) "RNB15264" [3]=> string(8) "RNB15261" [4]=> string(8) "RNB15261" [5]=> string(8) "RNB15261" [6]=> string(8) "RNB15262" [7]=> string(8) "RNB15255" } [2]=> array(8) { [0]=> string(7) "0670723" [1]=> string(7) "4610602" [2]=> string(7) "4610800" [3]=> string(7) "1011910" [4]=> string(7) "4320350" [5]=> string(7) "0291415" [6]=> string(7) "2631463" [7]=> string(7) "4610513" } [3]=> array(8) { [0]=> string(40) "Gree Viola Profi inverter Wifi klima 18k" [1]=> string(16) "Matrix HDMI 1.5m" [2]=> string(31) "CCP-USB2-AMBM-10 USB Printer 3m" [3]=> string(28) "Green PC G1840/H81/4GB/320GB" [4]=> string(21) "HP LaserJet Pro M102a" [5]=> string(31) "Monitor 19 Philips 193V5LSB2/10" [6]=> string(25) "Maxell speedboat USB 16GB" [7]=> string(20) "PC-186 naponski kabl" } [4]=> array(8) { [0]=> string(1) "1" [1]=> string(1) "3" [2]=> string(1) "1" [3]=> string(1) "1" [4]=> string(1) "1" [5]=> string(1) "1" [6]=> string(1) "1" [7]=> string(1) "1" } [5]=> array(8) { [0]=> string(2) "20" [1]=> string(2) "20" [2]=> string(2) "20" [3]=> string(2) "20" [4]=> string(2) "20" [5]=> string(2) "20" [6]=> string(2) "20" [7]=> string(2) "20" } [6]=> array(8) { [0]=> string(10) "2017-11-18" [1]=> string(10) "2017-11-18" [2]=> string(10) "2017-11-18" [3]=> string(10) "2017-11-18" [4]=> string(10) "2017-11-18" [5]=> string(10) "2017-11-18" [6]=> string(10) "2017-11-18" [7]=> string(10) "2017-11-18" } [7]=> array(8) { [0]=> string(10) "94990.0000" [1]=> string(8) "280.0000" [2]=> string(8) "290.0000" [3]=> string(10) "22990.0000" [4]=> string(9) "9990.0000" [5]=> string(9) "9990.0000" [6]=> string(9) "1190.0000" [7]=> string(8) "290.0000" } [8]=> array(8) { [0]=> string(10) "94000.0000" [1]=> string(8) "200.0000" [2]=> string(8) "150.0000" [3]=> string(10) "22000.0000" [4]=> string(9) "9500.0000" [5]=> string(9) "8700.0000" [6]=> string(9) "1050.0000" [7]=> string(8) "250.0000" } [9]=> array(8) { [0]=> string(7) "-1.0422" [1]=> string(8) "-28.5714" [2]=> string(8) "-48.2759" [3]=> string(7) "-4.3062" [4]=> string(7) "-4.9049" [5]=> string(8) "-12.9129" [6]=> string(8) "-11.7647" [7]=> string(8) "-13.7931" } [10]=> array(8) { [0]=> string(9) "-990.0000" [1]=> string(8) "-80.0000" [2]=> string(9) "-140.0000" [3]=> string(9) "-990.0000" [4]=> string(9) "-490.0000" [5]=> string(10) "-1290.0000" [6]=> string(9) "-140.0000" [7]=> string(8) "-40.0000" } [11]=> array(8) { [0]=> string(4) "-990" [1]=> string(4) "-240" [2]=> string(4) "-140" [3]=> string(4) "-990" [4]=> string(4) "-490" [5]=> string(5) "-1290" [6]=> string(4) "-140" [7]=> string(3) "-40" } } 

2 个答案:

答案 0 :(得分:0)

如果作为fromArray()的参数提供的数组是一个简单的1-d数组,那么它将被视为一行,其中包含该行中每个单元格的条目。如果您想使用fromArray()编写列,那么您需要一个二维数组。

$objPHPExcel->getActiveSheet()->fromArray([$nivelacija], null, 'A1');

将为$nivelacija

A数组的每个元素写一行

答案 1 :(得分:0)

好的,我找到了最佳解决方案

$row = 4; // 1-based index
while($row_data = pg_fetch_assoc($resultID)) {
    $col = 0;
    foreach($row_data as $key=>$value) {
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
        $col++;
    }
    $row++;
}

及其工作正常,谢谢你的帮助