【问题标题】:PHPExcel -> creating duplicate worksheetsPHPExcel -> 创建重复的工作表
【发布时间】:2014-10-20 19:23:55
【问题描述】:

我正在尝试创建一个应用程序来解析项目的 CSV 文件,并为 CSV 文件中的每个项目执行特定的操作。我已经弄清楚了上传/解析,但是,当我将其导出到 Excel 时,每个 CSV 条目都会在工作表中重复。例如,如果 CSV 文件中有 4 个条目,则第一个条目重复 4 次,第二个条目重复 3 次,依此类推。我已经浏览了几天的文档,但我无法找到哪里出错了.下面是生成 XLSX 文件的代码。

if (in_array($type,$csv_types)){
if (move_uploaded_file($tmp_name, $path)){
    foreach ($csv as $locar){
        foreach ($locar as $locid){
            $locs[] = $locid;
            $count = count($locs);
            /*if ($i < $count - 1){
                $objPHPExcel->createSheet();
                $i++;
            }*/
            $xmls = array();
            foreach ($locs as $locids){
                $url = 'Link to XML API' . $locids;
                $xmls[] = $url;
                $objWorkSheet = $objPHPExcel->createSheet();
                $objWorkSheet->setTitle($locids);
                $objPHPExcel->setActiveSheetIndexByName($locids);


            }
            foreach ($xmls as $links){
                $locations = explode("=", $links);
                $row = 1;

                //
                $objPHPExcel->getActiveSheet()->setCellValue('A'.$row,'Location ID:' . $locations[1]);
                $row++;
                $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row,'Database');
                $objPHPExcel->getActiveSheet()->SetCellValue('B'.$row,'URL');
                $row++;


                $xml = simplexml_load_file($links);

                foreach ($xml as $product){
                    foreach ($product->title as $item){
                        $dbtitle = str_replace(',',' ',$item);
                        $dblink = $product->link;

                    }
                    $objPHPExcel->setActiveSheetIndexByName($locations[1]);
                    $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row,$dbtitle);
                    $objPHPExcel->getActiveSheet()->SetCellValue('B'.$row,$dblink);
                    $row++;
                }
            }
        }
    }
}

代码生成的链接仅显示在正确的工作表中(为 csv 中的条目创建的第一个工作表)。任何帮助将不胜感激。

【问题讨论】:

  • 您的所有 foreach 循环都有重复项
  • 请详细说明您认为我可以做些什么来解决它?
  • 您能在pastebin.com 中发布更多代码吗...我需要更多信息。
  • 这就是用于生成电子表格的所有代码,您还需要什么?

标签: php phpexcel


【解决方案1】:

试试这个...

if (in_array($type,$csv_types)){
if (move_uploaded_file($tmp_name, $path)){
    foreach ($csv as $key => $locar){
        $locs[] = $locid[$key];
        $count = count($locs);
            /*if ($i < $count - 1){
                $objPHPExcel->createSheet();
                $i++;
            }*/
        $xmls = array();
        $url = 'Link to XML API' . $locids[$key];
        $xmls[] = $url;
        $objWorkSheet = $objPHPExcel->createSheet();
        $objWorkSheet->setTitle($locids[$key]);
        $objPHPExcel->setActiveSheetIndexByName($locids[$key]);


        $locations = explode("=", $links[$key]);
        $row = 1;

                //
        $objPHPExcel->getActiveSheet()->setCellValue('A'.$row,'Location ID:' . $locations[1]);
        $row++;
        $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row,'Database');
        $objPHPExcel->getActiveSheet()->SetCellValue('B'.$row,'URL');
        $row++;


        $xml = simplexml_load_file($links[$key]);

        foreach ($xml as $product){
            foreach ($product->title as $item){
                $dbtitle = str_replace(',',' ',$item);
                $dblink = $product->link;

            }
            $objPHPExcel->setActiveSheetIndexByName($locations[1]);
            $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row,$dbtitle);
            $objPHPExcel->getActiveSheet()->SetCellValue('B'.$row,$dblink);
            $row++;
        }
    }
}
}

你也可以发布$xml数组(print_r)...

$xml = simplexml_load_file($links[$key]);

【讨论】:

  • 这不起作用,我不得不对其进行大量修改以使其工作,这使问题变得更糟。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 2012-09-24
  • 1970-01-01
相关资源
最近更新 更多