Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php excel上打印变量_Php_Excel - Fatal编程技术网

在php excel上打印变量

在php excel上打印变量,php,excel,Php,Excel,我想从数据库中获取数据并将其保存为excel文件。 到目前为止我得到了什么(创建连接和新的phpexcel对象): 然后我从数据库中获取数据: // 1.Get data // data for final table // format is [username][projectNo] => [process1, process2, ..., processN] $result = []; // map project no to its title $projectNoToTitle

我想从数据库中获取数据并将其保存为excel文件。 到目前为止我得到了什么(创建连接和新的phpexcel对象): 然后我从数据库中获取数据:

// 1.Get data
// data for final table
// format is [username][projectNo] => [process1, process2, ..., processN]
$result = [];
// map project no to its title
$projectNoToTitle = [];
$sql = '
    SELECT uid, username
    FROM `user`
    ORDER BY username
';
$query = mysqli_query($conn, $sql);
// for each user
while ($data = mysqli_fetch_assoc($query)) 
{
    $sql2 = '
        SELECT a.* FROM
        (
            (
              -- select pairs project - leader
              SELECT p.projectNo, p.title, CONCAT(pr.process, "(ld)") AS process
              FROM project p
                LEFT JOIN proc_leader pr ON p.projectNo = pr.projectNo
              AND pr.proc_leader = "' . mysqli_real_escape_string($conn, $data['username']) . '"
            )
            -- union all means we union result of queries, which have structure
            -- and don\'t remove duplicates (it\'s faster than UNION and 
            -- more logical because in our sittuation it won\'t be any duplicates) 
            UNION ALL 
            (
              -- select pairs project - checker
              SELECT p.projectNo, p.title, CONCAT(pch.process, "(chk)") AS process
              FROM project p
                LEFT JOIN proc_checker pch ON p.projectNo = pch.projectNo
              AND pch.proc_checker = "' . mysqli_real_escape_string($conn, $data['username']) . '"  
            )
            UNION ALL 
            (
              -- select pairs project - checker
              SELECT p.projectNo, p.title, CONCAT(pch.process, "(staff)") AS process
              FROM project p
                LEFT JOIN proc_staff pch ON p.projectNo = pch.projectNo
              AND pch.proc_staff = "' . mysqli_real_escape_string($conn, $data['username']) . '"  
            )           
        ) AS a
            ORDER BY a.projectNo
        ';
    $query2 = mysqli_query($conn, $sql2);
    // for each project => process pair of user
    while ($data2 = mysqli_fetch_assoc($query2)) {
        $username = $data['username'];
        $projectNo = $data2['projectNo'];
        $projectTitle = $data2['title'];
        $process = $data2['process'];

        $projectNoToTitle[$projectNo] = $projectTitle;

        if (!isset($result[$username])) {
            $result[$username] = [];
        }
        if (!isset($result[$username][$projectNo])) {
            $result[$username][$projectNo] = [];
        }
        if ($process) {
            $result[$username][$projectNo][] = $process;
        }
    }
}
然后我想将收到的数据打印到excel表格中:

$Letter='B';
$Number=2;  
$F = $objPHPExcel->createSheet(); //Setting index when creating
$objPHPExcel->setActiveSheetIndex(1);

// 2. Output data

if ($result) 
{
        // output body
        $body = '';
        foreach ($result as $username => $usernameData) {
            $row = '' . htmlspecialchars($username) . '';
            $F->setCellValue('A'.$Number, $row);
            foreach ($projectNoToTitle as $projectNo => $projectTitle) {
                $r = isset($usernameData[$projectNo])
                    ? implode(', ', $usernameData[$projectNo])
                    : 'N/A';
                $row .= '' . htmlspecialchars($r) . '';
            }
            $body .= $row;
        }

    $F->setCellValue('A'.'1', 'username');

    $F->fromArray($projectNoToTitle, null, 'B1');


    $F->getRowDimension($Number)->setRowHeight(20);
    $F->getColumnDimension($Letter)->setWidth(40);  
    $F->getColumnDimension('A')->setWidth(30);              
    ++$Number;
    ++$Letter;

    // Redirect output to a client’s web browser (Excel5)
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="HeadCount.xls"');
    header('Cache-Control: max-age=0');

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;   
}
我试图打印
正文
,但它在一个单元格中提供了所有信息。喜欢 如果我只打印
我只得到一个
如何打印所有必需的数据?我需要smth像但在excel中。我知道我可以将我得到的表保存为excel,但问题是我以后需要添加更多信息,所以我想使用phpexcel来完成。感谢您的帮助

您需要在looplike@nogad声明中设置单元格值,您必须单独设置每个单元格。你不需要把一根巨大的绳子连在一起。看起来你也从来没有用
$body
anyway@nogad什么样的循环?我应该循环什么?@Cfreak是的,我试图打印它,我在一个单元格中获得了所有信息,如第一张屏幕截图所示。您已经有了循环。您需要在循环中设置单元格值。如@nogad所述,您必须单独设置每个单元格。你不需要把一根巨大的绳子连在一起。看起来你也从来没有用
$body
anyway@nogad什么样的循环?我应该循环什么?@Cfreak是的,我试着打印它,我在一个单元格中得到了所有信息,就像第一张屏幕截图上一样。你已经有了循环
$Letter='B';
$Number=2;  
$F = $objPHPExcel->createSheet(); //Setting index when creating
$objPHPExcel->setActiveSheetIndex(1);

// 2. Output data

if ($result) 
{
        // output body
        $body = '';
        foreach ($result as $username => $usernameData) {
            $row = '' . htmlspecialchars($username) . '';
            $F->setCellValue('A'.$Number, $row);
            foreach ($projectNoToTitle as $projectNo => $projectTitle) {
                $r = isset($usernameData[$projectNo])
                    ? implode(', ', $usernameData[$projectNo])
                    : 'N/A';
                $row .= '' . htmlspecialchars($r) . '';
            }
            $body .= $row;
        }

    $F->setCellValue('A'.'1', 'username');

    $F->fromArray($projectNoToTitle, null, 'B1');


    $F->getRowDimension($Number)->setRowHeight(20);
    $F->getColumnDimension($Letter)->setWidth(40);  
    $F->getColumnDimension('A')->setWidth(30);              
    ++$Number;
    ++$Letter;

    // Redirect output to a client’s web browser (Excel5)
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="HeadCount.xls"');
    header('Cache-Control: max-age=0');

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;   
}