PHP SQLSRV导出到Excel

时间:2016-08-01 19:51:26

标签: php sql export-to-excel sqlsrv

我正在使用PHP和SQLSRV尝试将表导出到Excel。我用MySQLi这个方法没问题。

无论如何,这是我用来导出到Excel的代码:

 <?php
   include("../include/database.php");
   global $ts; 
   $ts = date('mdY-His');
   session_start();

   $sql = "SELECT 
           [BOL_DATE]
           ,[BOOKING_NUM]
           ,[BOL_NUM]
           ,[VOYAGE]
           ....
           FROM DETAIL
           WHERE
           // bunch of other stuff not necessary to show";

   header("Content-Type: application/xls"); 
   header("Content-Disposition: attachment; filename=fulldetails-".$ts.".xls");  
   header("Pragma: no-cache"); 
   header("Expires: 0");
   header("Content-Transfer-Encoding: binary ");

   $sep = "\t"; //tabbed character

   if($result = $dbc->sqlsrv_query($sql)) // <- error is here
  {
    while( $finfo = sqlsrv_fetch_array($sql, SQLSRV_FETCH_ASSOC) ) 
    {
      printf($finfo->name . $sep);
    }
  }

  print("\n");   

  while( $finfo = sqlsrv_fetch_array($sql, SQLSRV_FETCH_ASSOC) ) 
  {
    $schema_insert = "";
    for($j = 0; $j < sqlsrv_num_fields($result); $j++)
    {
      if(!isset($row[$j]))
        $schema_insert .= "NULL".$sep;
      elseif ($row[$j] != "")
        $schema_insert .= "$row[$j]".$sep;
      else
        $schema_insert .= "".$sep;
    }
    $schema_insert = str_replace($sep."$", "", $schema_insert);
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
    $schema_insert .= "\t";
    print(trim($schema_insert));
    print "\n";
  }
 ?>

触发此过程时出现的错误,Excel工作表显示此错误:

 Fatal error:  Call to a member function sqlsrv_query() on a non-object in C:\server\htdocs\main\reports\reports.php  

指向上面标有“错误就在这里”的部分。

在我指出错误的上面一行,我甚至将其更改为:

 if($result = sqlsrv_query($dbc, $update))

但是导出结果时,excel表格是空白的。

如何编辑我的代码才能使其正常工作?

0 个答案:

没有答案