2015-05-20 116 views
2

我是phpexcel的新手,所以我使用附加的代碼將數據從數據庫導出到xls文件。它可以在任何其他瀏覽器中正常運行,除了Chrome,其下載的文件沒有「擴展名」而不是xls。 這是我的代碼錯了,或者它是一個瀏覽器設置,應該修改?有人能幫我嗎?由於Chrome導出錯誤的「文件擴展名」而不是xls

文件下載[InventárioLivros(20-05-2015) -]

我的代碼:

<?php 

date_default_timezone_set("Atlantic/Cape_Verde"); 
require_once '../../assets/PHPExcel_1.8.0/Classes/PHPExcel.php'; 
require_once '../../assets/PHPExcel_1.8.0/Classes/PHPExcel/IOFactory.php'; 

$objPHPExcel = new PHPExcel(); 
$Archive = "Inventário Livros"; 
$date = date('d/m/Y'); 

require '../conexao/conexao.php'; 

$objPHPExcel->getProperties() 
     ->setCreator("RELM") 
     ->setLastModifiedBy("RELM") 
     ->setTitle("Inventário Livros") 
     ->setSubject("Inventário") 
     ->setDescription("") 
     ->setKeywords("") 
     ->setCategory(""); 

$objPHPExcel->getDefaultStyle()->getFont()->setName('Calibri'); 
$objPHPExcel->getDefaultStyle()->getFont()->setSize(11); 
$objPHPExcel->getActiveSheet()->getRowDimension('9')->setRowHeight(20); 
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(5); 
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(9); 
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(40); 
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30); 
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12); 
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12); 
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12); 

//=======================================Cabeçalho do Doc==============================================// 
$objPHPExcel->getActiveSheet()->setCellValue('C7', "Relação dos livros existentes na biblioteca"); 
$objPHPExcel->setActiveSheetIndex(0)->mergeCells('C7:F7'); 

$objPHPExcel->getActiveSheet() 
     ->getStyle('C7:F7') 
     ->getAlignment() 
     ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 

$objPHPExcel->getActiveSheet() 
     ->getStyle('C7:F7') 
     ->getFont() 
     ->setBold(true); 

$objPHPExcel->getActiveSheet() 
     ->getStyle('C7:F7') 
     ->getFont() 
     ->setSize(14); 

//=======================================Imagem==============================================// 
$objDrawing = new PHPExcel_Worksheet_Drawing(); 
$objDrawing->setName('header'); 
$objDrawing->setDescription('Cabeçalho da pagina'); 
$objDrawing->setPath('../../images/header.png'); 
$objDrawing->setCoordinates('C1'); 
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); 

//=================================Conteudo(posiçao e estilo)==============================// 
$y = 9; 

$objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue("A" . $y, 'Nº') 
     ->setCellValue("B" . $y, 'Estante') 
     ->setCellValue("C" . $y, 'Obra') 
     ->setCellValue("D" . $y, 'Autor') 
     ->setCellValue("E" . $y, 'Categoria') 
     ->setCellValue("F" . $y, 'Ano Esc.') 
     ->setCellValue("G" . $y, 'Obs.'); 

$objPHPExcel->getActiveSheet() 
     ->getStyle('A9:G9') 
     ->getFill() 
     ->setFillType(PHPExcel_Style_Fill::FILL_SOLID) 
     ->getStartColor()->setARGB('FFEEEEEE'); 

$objPHPExcel->getActiveSheet() 
     ->getStyle('A9:G9') 
     ->getAlignment() 
     ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 

$objPHPExcel->getActiveSheet() 
     ->getStyle('A9:G9') 
     ->getFont() 
     ->setBold(true); 

$objPHPExcel->getActiveSheet() 
     ->getStyle('A9:G9') 
     ->getFont() 
     ->setSize(12); 


$borders = array(
    'borders' => array(
     'allborders' => array(
      'style' => PHPExcel_Style_Border::BORDER_THIN, 
      'color' => array('argb' => 'FF000000'), 
     ) 
    ), 
); 

$objPHPExcel->getActiveSheet() 
     ->getStyle('A9:G9') 
     ->applyFromArray($borders); 

$query = "SELECT * FROM book AS B INNER JOIN category AS C ON B.category_id=C.id_category INNER JOIN scholarity AS S ON B.scholarity_id=S.id_scholarity ORDER BY number"; 
$res = mysql_query($query); 
while ($row = mysql_fetch_array($res)) { 

    $y++; 

    $objPHPExcel->setActiveSheetIndex(0) 
      ->getStyle('A' . $y . ":G" . $y) 
      ->applyFromArray($borders); 

    $objPHPExcel->setActiveSheetIndex(0) 
      ->setCellValue("A" . $y, $row['number']) 
      ->setCellValue("B" . $y, $row['shelf']) 
      ->setCellValue("C" . $y, $row['title']) 
      ->setCellValue("D" . $y, $row['author']) 
      ->setCellValue("E" . $y, $row['category_name']) 
      ->setCellValue("F" . $y, $row['scholarity_name']) 
      ->setCellValue("G" . $y, $row['obs']); 
} 

header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment; filename= "' . $Archive . ' (' . $date . ') " '); 
header('Cache-Control: max-age-0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 

exit; ?> 
+1

您的文件名建議不包含擴展名。希爾我加了一個。 header('Content-Disposition:attachment; filename =''。$ Archive。'('。$ date。').xls「') –

+0

很好......現在導出的文件如下所示:**InventárioLivros(20 -05-2015)。xls - **。在文件擴展名後面加上短劃線,不知道發生了什麼。謝謝... @PeterPaulKiefer – Kowts

+1

.xls之後有一個空格。這可能是問題所在。我不知道。 –

回答

1

你添加一個HTTP頭 「內容處置」,以你的迴應。該標題告訴Chrome瀏覽器以及其他人;-),瀏覽器應該在其文件保存窗口中顯示哪個文件名。只需將.xls添加到您的文件名,瀏覽器就會使用它。

+0

這是一個http頭域的列表:http://de.wikipedia.org/wiki/Liste_der_HTTP-Headerfelder –

+0

我已經完成了@PeterPaulKiefer ...現在該文件帶有* .xls擴展名和一個** - **在文件末尾。 kkkkkk ??? – Kowts

相關問題