0

此代码工作正常:

$csvType = $_FILES['csvtype']['tmp_name']['csv-sparkasse'];

function handleCsv($em, $csvType){
    $handle = fopen($csvType, "r");
            $i = 0;
            while (($fileop = fgetcsv($handle, 1000, ";")) !== false) {
                $entity = new Sparkasse();
                $entity->setAuftragskonto($fileop[0]);
                $entity->setBuchungstag($fileop[1]);
                $entity->setValutadatum($fileop[2]);
                $entity->setBuchungstext($fileop[3]);
                $entity->setVerwendungszweck($fileop[4]);
                $entity->setZahlungspflichtiger($fileop[5]);
                $entity->setKontonummer($fileop[6]);
                $entity->setBlz($fileop[7]);
                $entity->setBetrag($fileop[8]);
                $entity->setWaehrung($fileop[9]);
                $entity->setInfo($fileop[10]);

                if ($i > 0) {
                    $em->persist($entity);
                }
                $i++;
            }

            $em->flush();

            /* Update Table Sparkasse and create csv */
            $connection = $em->getConnection();
            $sql = $connection->prepare("UPDATE Sparkasse,Rechnung SET                 Sparkasse.Rechnungsnr = Rechnung.Belegnr
                WHERE Sparkasse.Betrag = Rechnung.Gesamt AND 
                (Sparkasse.Verwendungszweck LIKE CONCAT('%',Rechnung.Belegnr,'%') OR 
                UPPER(Sparkasse.Zahlungspflichtiger) LIKE UPPER(Rechnung.Name) OR 
                UPPER(Sparkasse.Zahlungspflichtiger) = UPPER(Rechnung.Firma) OR 
                Sparkasse.Verwendungszweck LIKE CONCAT('%',Rechnung.Kundennr,'%'))");
            $sql->execute();

            $query = $em->createQuery("SELECT s FROM AdminBundle:Sparkasse s");
            $tableSparkasse = $query->getArrayResult();
            $this->createCsv($tableSparkasse, 'sparkasse.csv');
}

这就是问题所在。csv 文件已下载到浏览器上,并且表格是正确的。但是在文件的最后你可以看到当前页面的php代码。

function createCsv($rows, $filename) {
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=' . $filename);

    $fp = fopen('php://output', 'w');

    foreach ($rows as $fields) {
        fputcsv($fp, $fields, ';', '"');
    }

    fclose($fp);
}

在这里你可以看到文件:https ://dl.dropboxusercontent.com/u/6242507/sparkasse.csv

4

1 回答 1

0

感谢你的回答。第一个答案给了我正确的想法。死后 fclose(); 我测试一个骰子;它工作正常。

在我的 Controller-Action 中,我返回表单:

return $this->render('AdminBundle:Default:index.html.twig', array(
    'form' => $form->createView(),
));

我将其替换为:

return 0;

它工作正常。但我不明白为什么 php 在文件末尾写了关闭后的返回

fclose();
于 2014-02-08T20:00:31.327 回答