PHPExcel;来自 MySQL 的数组问题

标签 php mysql session phpexcel

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

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

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

application.php 包含所有的数据库连接等。

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

我需要填充的值是:

零件编号 描述 U/Price Q'ty Total

15666562003 灯总成 $20.00 1 $20.00

运费 131514 $12.35 1 $12.35

数据会像这样显示:

零件编号 描述 U/Price Q'ty Total

cargo cargo 131514 131514 $12.35 $12.35 1 1 $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 的文件写入磁盘(在脚本的当前工作目录中)。

但是您有 header 表明您要将输出发送到浏览器

除了为您正在编写的文件类型发送正确的 header 之外:

Filetype    Writer        Content type    
.xls        Excel5        application/vnd.ms-excel
.xlsx       Excel2007     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

保存到 php://output 会将文件发送到浏览器

您的阅读器也有类似的问题:使用 Excel5 阅读器读取 .xlsx 文件,而您应该使用 Excel2007 阅读器

关于PHPExcel;来自 MySQL 的数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787017/

相关文章:

php - 验证失败后重新加载页面时,保留 SQL 生成表单的原始顺序(随机)

php - 无法向数据库插入新行

JavaScript 获取数据后滚动

php - 在 CentOS 6.3 上安装 PHP 5.4.11 和 MySQL 5.6.10 时出现问题

mysql - 有一种方法可以在 MySQL 中对不同表的信息进行索引

php - 使用 fetch_object() 显示 MySQL 中另一个相关表的行

ruby-on-rails - OmniAuth OpenID 回调时 session 变量未初始化

php - 从服务器向客户端发送数据?

java - 使用 AND 或 OR 条件手动构建 SQL 查询时出现 MySql 语法错误异常

android - Flurry 日志记录事件并不总是