【问题标题】:Box/Spout not writing full row盒子/喷口没有写满行
【发布时间】:2019-12-08 10:14:59
【问题描述】:

我正在尝试使用 Box/Spout 将数据写入 Excel 工作表,使用写入器将数组传递给 addrow() 函数,但是当 excel 文件完成时,工作表上缺少数据列。 ..

该数组正好有我需要的数据,我var_dump() 它来显示数据。数据最初来自 mysql 查询,所以我认为直接从 mysqli_fetch_assoc 函数添加行会起作用。遇到这个问题后,我创建了一个名为$newRow 的变量行并将其声明为一个数组,其中包含mysql fetch 数据。这仍然没有奏效。下面的代码来解释我的困惑......

这是我要添加的行的 var_dump:

var_dump($newRow);
array(29) { 
[0]=> string(14) "X" 
[1]=> string(6) "X" 
[2]=> string(4) "X" 
[3]=> string(9) "X" 
[4]=> string(2) "X" 
[5]=> string(1) "X" 
[6]=> string(1) "X" 
[7]=> string(8) "X" 
[8]=> string(0) "" 
[9]=> string(8) "X" 
[10]=> string(16) "X" 
[11]=> string(16) "X" 
[12]=> string(0) "X" 
[14]=> string(7) "X" 
[15]=> string(2) "X" 
[16]=> string(2) "X" 
[17]=> string(1) "X" 
[18]=> string(2) "X" 
[19]=> string(2) "X" 
[20]=> string(2) "X" 
[21]=> string(15) "X" 
[22]=> string(9) "X" 
[23]=> string(2) "X" 
[24]=> string(5) "X" 
[25]=> string(16) "Y" 
[26]=> string(9) "Y" 
[27]=> string(2) "Y" 
[28]=> string(5) "Y" 
}

出于隐私原因,我需要用 X 和 Y 替换真实数据。请理解,这样做我用这些字母替换了真实存在的数据。我会包含我使用的 mysql 查询,但它是不必要的,因为它清楚地成功提取信息......

下一行是:

$writer->addrow($newRow);

请记住,代码看起来完全像这样:

var_dump($newRow);
echo "<br/><br/>";
$writer->addrow($newRow);

并且$newRow$writer-&gt;addrow函数之前没有变化。

很遗憾,excel表格另存为

|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|

在一行中与应该是什么:

|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|Y|Y|Y|Y|

我已经为此困惑了好几个小时,但还没有找到解决方案。我希望我的问题有意义,任何建议都非常感谢。

【问题讨论】:

  • 你使用的是$writer-&gt;openToFile还是$writer-&gt;openToBrowser
  • 是的,我在脚本开头使用它来明显初始化$writer。我忘记添加到问题中的一件事是,所有这些都进入了一个函数,我使用global $writer 来获取相同的变量。奇怪的是,大约 20 小时前,它突然就开始工作了。我根本没有更改任何代码,它开始工作。如果有任何事情会在这里更新。

标签: php arrays excel spout


【解决方案1】:

试试这个

$writer->addRow(WriterEntityFactory::createRowFromArray($newRow));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2016-01-13
    • 2016-09-14
    • 2014-02-02
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多