2015-05-20 100 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

相关问题