1

我正在使用 php excel 将数据库中的数据导出为 Excel 格式。我可以将数据库中的所有数据检索到 Excel 中。但是如果我想检索表的列名,我该怎么做。任何人都可以帮忙吗?

这是我的代码:

<?php

   header("Content-Type:application/vnd.ms-excel");
    header("Content-Disposition:attachment;filename=product.xls");
    header("Pragma:no-cache");
    header("Expires:0");

  header('Content-Type: text/html; charset=UTF-8');
        header("Content-type: application/octetstream");
        header('Content-Disposition: attachment; filename="export.csv"');
 /** Error reporting */
  error_reporting(E_ALL);
 ini_set('display_errors', TRUE);
 ini_set('display_startup_errors', TRUE);
   date_default_timezone_set('Europe/London');

  if (PHP_SAPI == 'cli')
die('This example should only be run from a Web Browser');

 /** Include PHPExcel */
require_once '../Classes/PHPExcel.php';
 require_once '../Classes/PHPExcel/Writer/Excel2007.php';
  require_once '../Classes/PHPExcel/IOFactory.php';  

  $con = mysql_connect("localhost","root",""); 
  if (!$con) 
  { 
 die('Could not connect: ' . mysql_error()); 
 } 

 mysql_select_db("litako", $con); 



   $objPHPExcel = new PHPExcel();

  $res= mysql_query("SELECT * FROM vendorlist ");

  /** Error reporting */
  error_reporting(E_ALL);

  date_default_timezone_set('Europe/London');



  $objPHPExcel = new PHPExcel();

 if(!$res){
die("Error");
 }


 $col = 0; 
 $row = 3; 
 while($mrow = mysql_fetch_assoc($res)) { 
$col = 0; 
 foreach($mrow as $key=>$value) { 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); 
    $col++; 
} 
$row++; 
 }
  // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  $objPHPExcel->setActiveSheetIndex(0);

  // Save Excel 2007 file
 $objPHPExcel->setActiveSheetIndex(0);


header('Content-Type: application/vnd.ms-excel');
 header('Content-Disposition: attachment;filename="report.xls"');
  header('Cache-Control: max-age=0');
 // If you're serving to IE 9, then the following may be needed
 header('Cache-Control: max-age=1');
  // If you're serving to IE over SSL, then the following may be needed
 header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
 header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
  header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
  header ('Pragma: public'); // HTTP/1.0

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');


 exit;
4

1 回答 1

0

您在调用 mysql_fetch_assoc 的 while 循环中已经有了列名。$key 值是列名。因此,这是您的代码的更新部分:

 while($mrow = mysql_fetch_assoc($res)) { 
    $col = 0; 
    foreach($mrow as $key=>$value) { 
        // TODO: Do Something With the Column Name like set the row header. Note this crude code sets it every time. You really just want to do it the first time only.
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 0, $key);
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row + 1, $value); 
        $col++; 
    } 
    $row++; 
 }
于 2013-10-03T02:56:35.277 回答