PHPexcel 数组值到列
PHPexcel array values to column
我在用 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]”时有效,它会将值写入目标列。
我不知道如何将每个数组的数组值放到不同的列中,我所能做的就是将它导出到一行,但这对我来说不起作用。
我能以某种方式在没有数组的情况下直接向 excel 查询 pg 吗?即便如此,我还是想解决数组到列的问题。
编辑:
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" } }
如果您作为参数提供给 fromArray()
的数组是一个简单的一维数组,那么它将被视为一行,该行中的每个单元格都有条目。如果你想使用 fromArray()
来写列,那么你需要一个二维数组。
$objPHPExcel->getActiveSheet()->fromArray([$nivelacija], null, 'A1');
将为 $nivelacija
数组的每个元素在 A
列中写入一行
好的,我找到了最佳解决方案
$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++;
}
它工作正常感谢您的帮助
我在用 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]”时有效,它会将值写入目标列。
我不知道如何将每个数组的数组值放到不同的列中,我所能做的就是将它导出到一行,但这对我来说不起作用。
我能以某种方式在没有数组的情况下直接向 excel 查询 pg 吗?即便如此,我还是想解决数组到列的问题。
编辑:
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" } }
如果您作为参数提供给 fromArray()
的数组是一个简单的一维数组,那么它将被视为一行,该行中的每个单元格都有条目。如果你想使用 fromArray()
来写列,那么你需要一个二维数组。
$objPHPExcel->getActiveSheet()->fromArray([$nivelacija], null, 'A1');
将为 $nivelacija
数组的每个元素在 A
好的,我找到了最佳解决方案
$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++;
}
它工作正常感谢您的帮助