代码之家  ›  专栏  ›  技术社区  ›  Nemanja J.

PHPexcel数组值到列

  •  -1
  • Nemanja J.  · 技术社区  · 7 年前

    我在用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列中得到了结果,但它将数组(0)写入数组(49)

    我已经对此进行了测试,当我编写“$nivelacija[0]”时,它会将值写入目标列。

    我不知道如何将每个数组的数组值导出到不同的列中,我所做的只是将其导出到一行,但这对我来说并不管用。

    我可以不使用数组直接将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_转储结果

    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 回复  |  直到 7 年前
        1
  •  0
  •   Mark Baker    7 年前

    如果将数组作为参数提供给 fromArray() 是一个简单的一维数组,然后将其视为一行,该行中的每个单元格都有条目。如果要使用 fromArray() ,则需要一个二维阵列。

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

    将为的每个元素写入一行 $nivelacija 列中的数组 A

        2
  •  0
  •   Nemanja J.    7 年前

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

    $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++;
    }
    

    很好,谢谢你的帮助