вывод данных в виде файла Excel

0

Я пытаюсь открыть файл для экспорта как excel. я могу видеть данные в firebug, но нет возможности предложить файл пользователю. что мне здесь не хватает? Я включил свой код, который обрабатывает запрос и т.д., и приветствовал бы ваши комментарии. большое спасибо

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: attachment; filename=".$_GET['e'].".xls");
header("Pragma: no-cache"); 
header("Expires: 0"); 
$e = $_GET['e'];
// Load the common classes
require_once('../../../includes/common/KT_common.php');

// Load the tNG classes
require_once('../../../includes/tng/tNG.inc.php');

// Make a transaction dispatcher instance
$tNGs = new tNG_dispatcher("../../../");

// Make unified connection variable
$conn_conn= new KT_connection($conn, $database_conn);


    switch($e) {


       case "act":
            mysql_select_db($database_conn, $conn); 

      $select = "SELECT service, activity, company, user, item, filebox, date FROM act";  
      $export = mysql_query($select); 
      $count = mysql_num_fields($export); 
      for ($i = 0; $i < $count; $i++) { 
      $header .= mysql_field_name($export, $i)."\t"; 
      } 
      while($row = mysql_fetch_row($export)) { 
      $line = ''; 
      foreach($row as $value) { 
      if ((!isset($value)) OR ($value == "")) { 
      $value = "\t"; 
      } else { 
      $value = str_replace('"', '""', $value); 
      $value = '"' . $value . '"' . "\t"; 
      } 
      $line .= $value; 
      } 
      $data .= trim($line)."\n"; 
      } 
      $data = str_replace("\r", "", $data); 
      if ($data == "") { 
      $data = "\n(0) Records Found!\n"; 
      } 
      print "$header\n$data"; 

      break;
  • 1
    У вас есть 3 заголовка типа контента, каждый из которых отличается. Вы в основном говорите: «Этот файл - маффин, этот файл - кастрюля с кипящей водой, И этот горшок - тоже кусок карманного пуха». Если вы регулярно не делаете карманный пух и суп с маффинами, это не может быть правдой.
Теги:

1 ответ

1

Реальная проблема заключается в том, что вам нужно указать имя файла в заголовке Content-Disposition, но вам нужен только один заголовок Content-Type, а некоторые другие заголовки кеширования, перечисленные ниже, должны помочь с потенциальными проблемами с IE ssl (если вы используете это)

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
header ('Content-Type: application/vnd.ms-excel');
header ('Content-Disposition: attachment; filename="'.$_GET['e'].'.xls"');
header ('Content-Transfer-Encoding: binary');

В качестве примечания: вы фактически не создаете файл Excel xls, а только файл с разделителями разделов с расширением .xls

  • 0
    спасибо знак Кроме того, люблю описательный Марк Б :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню