【问题标题】:inserting sql output rows to excel file将sql输出行插入excel文件
【发布时间】:2013-04-30 06:58:27
【问题描述】:

我在一个 sql 表中有 150 行和 40 列..我在网页中显示整个表格..现在,我想要做的是在该网页上创建一个链接,该链接将占用整个表格和将它插入到一个 excel 文件中(如果它创建一个新的 excel 文件,或者修改现有的总和并不重要)......现在我可以通过使用(PHPExcel 库)手动完成它,“objPHPExcel->setCellValue('C5' , $v) "...但是我必须像这样写 40 次(在每个语句中更改 '$v' 变量)并且它在一个将运行 150 次的循环中......因此我不想这样做。 .

现在我想知道我是否可以在 excel 表中逐行插入表格..就像我插入一行时,它会插入 d 行的整个单元格..那样会很容易。 .so 我想知道是否有任何特定的命令可以做到这一点..

如果没有,我还有其他选择吗?我想做的就是使用 php 将整个 sql 表导出到 excel 文件中。

【问题讨论】:

标签: php sql excel


【解决方案1】:

因此,请使用 PHPExcel 精心提供的fromArray() 方法,该方法允许您在一次调用中从数组中写入整行或整块单元格。

查看示例和阅读文档总是有帮助的

补充说明

顺便说一下,$objPHPExcel->setCellValue('C5', $v) 仅在 $objPHPExcel 是工作表时才有效,大多数示例使用 $objPHPExcel 作为工作簿(即工作表的集合),所以不要混淆

编辑

要从数据库中获取结果,请使用

sqlsrv_fetch_array($tsql, SQLSRV_FETCH_ASSOC)

sqlsrv_fetch_array($tsql, SQLSRV_FETCH_NUMERIC)

编辑 2

检查数据库如何设置为处理 NULL 返回;但使用

$objPHPExcel->getActiveSheet()->fromArray($rows, 0, 'A'.$rowCNT);

应将数据库结果中的所有 NULL 值设置为 PHPExcel 中的 0 值

【讨论】:

  • 这是我正在使用的......问题是它在 excel 表中显示每个值(来自数据库的值)两次......其次,数据库中的一些值是 0,对于所有那些值它在 excel 中显示一个空单元格... while($rows = sqlsrv_fetch_array( $tsql ) ) { $objPHPExcel->getActiveSheet()->fromArray($rows, NULL, 'A'.$rowCNT); $rowCNT++; }
  • 选择你的数据库查询,这样你就不会同时返回枚举和关联:一个另一个......这一切都取决于你如何处理你的数据库查询
  • 对于 0 值,首先确保从数据库查询中返回 0 而不是 NULL 值
【解决方案2】:

最简单的方法是导出一个.csv文件,excel也可以读取。 您所要做的就是创建这个页面:

<?
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0"); 
$link = mysql_connect('db', 'dblogin', 'dbpasswd');
@mysql_select_db('dbname') or die( "Unable to select database");
$query=mysql_query("SELECT * FROM whatever");
$j=0;
$nbField = mysql_num_fields($query);
while ($j < $nbField) {
    echo mysql_field_name($query,$j).";";
$j++;   
}
echo "\n";
while ($row = mysql_fetch_array($query, MYSQL_NUM)) { echo implode(";", $row)."\n"; } 
?>

然后你插入一个直接指向这个php页面的链接,它会下载csv文件。

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 2019-04-04
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多