PHPExcel;MySQL中的数组存在问题

PHPExcel;MySQL中的数组存在问题,php,mysql,session,phpexcel,Php,Mysql,Session,Phpexcel,很明显,我是PHPExcel的新手。。我对PHP本身也是相当陌生的 该网站具有多级查看/编辑权限 我一直在为一个网站制作一个页面,该网站收集存储在SQL数据库中的信息,并填充excel模板 php包含所有数据库连接等 基本上,我遇到的问题是,当我调用数组填充单元格时,它显示为相同数组值的副本。不仅如此,它还把它们都塞进了同一列 我需要填充的值包括: 零件号说明U/价格Q'ty总计 156666562003灯总成$20.00 1$20.00 运费131514美元12.35 1美元12.35 数据将

很明显,我是PHPExcel的新手。。我对PHP本身也是相当陌生的

该网站具有多级查看/编辑权限

我一直在为一个网站制作一个页面,该网站收集存储在SQL数据库中的信息,并填充excel模板

php包含所有数据库连接等

基本上,我遇到的问题是,当我调用数组填充单元格时,它显示为相同数组值的副本。不仅如此,它还把它们都塞进了同一列

我需要填充的值包括:

零件号说明U/价格Q'ty总计

156666562003灯总成$20.00 1$20.00

运费131514美元12.35 1美元12.35

数据将显示如下:

零件号说明U/价格Q'ty总计

运费131514 131514$12.35$12.35$1$12.35$12.35$12.35$12.35

任何帮助都将不胜感激

<?php

include "./include/application.php";
require './Classes/PHPExcel.php';

error_reporting(E_ALL ^ E_NOTICE);

class CForm extends CApplication
{

function CForm()
{
$this->CApplication();
}

//**********************************************************

function Export($msg = "")
{


if ($_SESSION['aID'] == "" && $_SESSION['mID'] == "237" && $_SESSION['mID'] == "178" &&        $_SESSION['mID'] == "551")
{
    $sWhere = " AND dID = '$_SESSION[mID]'";
}


$sql = "SELECT * FROM dl_warranty_claims 
        INNER JOIN dealers ON (dID = wDealerID)
        WHERE 1 ".$sWhere." AND wID = '$_GET[id]'";

$res = $this->SQL($sql);
if (!($row = $this->FetchArray($res)))
{
    print "You do not have access to view this report.";
    exit();
}

error_reporting(E_ALL ^ E_NOTICE);
// Read the template file
 $inputFileType = 'Excel2007';
 $inputFileName = './templates/warrantyclaimtemplate2.xlsx';
 $objReader = PHPExcel_IOFactory::createReader($inputFileType);
 $objPHPExcel = $objReader->load($inputFileName);

// Adding data to the template
$objPHPExcel->getActiveSheet()->setCellValue('A3', ($row['wDealerName']));
$objPHPExcel->getActiveSheet()->setCellValue('B3', ($row['wID']));
$objPHPExcel->getActiveSheet()->setCellValue('C3', ($row['wCustomerName']));    
$objPHPExcel->getActiveSheet()->setCellValue('D3', ($row['wModelName']));
$objPHPExcel->getActiveSheet()->setCellValue('E3', ($row['wChassisSN']));
$objPHPExcel->getActiveSheet()->setCellValue('F3', ($row['wEngineSN']));
$objPHPExcel->getActiveSheet()->setCellValue('G3', ($row['wDateDelivery']));
$objPHPExcel->getActiveSheet()->setCellValue('H3', ($row['wDateFailure']));
$objPHPExcel->getActiveSheet()->setCellValue('I3', ($row['wDateClaim']));
$objPHPExcel->getActiveSheet()->setCellValue('J3', ($row['wOperatingHours']));

    $sql = "SELECT * FROM dl_warranty_parts 
            WHERE wpWarrantyClaimID = '$_GET[id]'";
    $res = $this->SQL($sql);
    while($rowp = $this->FetchArray($res))
    {
        $objPHPExcel->getActivesheet()->FromArray($rowp, NULL, 'A4');
    }

// Write and save file
 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

 header('Content-Type: application/vnd.openxmlformats-  officedocument.spreadsheetml.sheet');
 header('Content-Disposition: attachment; filename="warrantyclaimreport.xlsx"');

 $objWriter->save('php://output');
}
}


?>

您的保存语句

$objWriter->save('WarrantyClaim.xlsx');
正在将名为
WarrantyClaim.xlsx
的文件写入磁盘(在脚本的当前工作目录中)

然而,您有一个标题,表示您要将输出发送到浏览器

除了为正在编写的文件类型发送正确的标题外:

Filetype    Writer        Content type    
.xls        Excel5        application/vnd.ms-excel
.xlsx       Excel2007     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
保存到
php://output
将文件发送到浏览器

您的读者也有类似的问题:当您应该使用
Excel2007
Reader

来回答最新问题时,使用
Excel5
阅读器来阅读.xlsx文件(请学习如何提问,这样,当您有新问题时,您不会简单地编辑以前的问题,而应该提出新问题)


您的
$this->FetchArray()
方法似乎同时返回枚举关联数据。。。我不知道具体的参数是什么,但是应该有一些设置允许您指定枚举关联,或者指定一个方法调用,例如
FetchAssoc()?错误消息?请注意,您应该使用OfficeOpenXML
.xlsx
文件的
Excel2007
读写器;
Excel5
读写器是用于BIFF格式的
.xls
文件您好,问题是它将我发送到一个空白页,而不是下载excel文档。此外,我已经更改了读写器,我仍然面临同样的问题。我还将save选项更改为$objWriter->save('s)php://output');嗨,马克,谢谢你的回复!我将您的更改应用于我的编码,但是,它仍然不能正常工作。我仍然被重定向到一个空白屏幕。编辑后的代码在我的原始帖子中。我在想,这可能是由于PHP扩展没有正确启用而导致的错误,或者可能是因为我使用了错误的PHP版本。我使用的是5.2.0PHPExcel版本,但目前仍应使用PHP5.2(尽管我当然建议升级)尝试保存到磁盘,看看文件是否正确生成:如果是,则表明问题在于写入browserHi标记,两者都不起作用。。。然而,我做了一些调整,让它吐出一条错误消息。它说它无法访问ZipArchive。据我所知,这是因为PHP扩展没有正确启用。你知道一种简单的调整方法吗?另外,我正在考虑升级PHP版本。。。我只需要确保它不会干扰网站上已经建立的任何东西;但是,如果您无法为5.2版启用它,那么PHPExcel确实提供了一个(速度较慢且内存消耗更大的)替代方案,可以使用
PHPExcel_设置::setZipClass(PHPExcel_设置::PCLZIP)启用该替代方案保存前