2014-10-20 67 views
0

我想创建一个应用程序,将解析项目的CSV文件,并为CSV文件中的每个项目做特定的事情。我有上传/解析,但是,当我将其导出到Excel时,每个CSV条目都在工作表中复制。例如,如果CSV文件中有4个条目,则第一个条目将被复制4次,第二个条目将被复制3次,等等。我已经查看了几天的文档,并且我无法找到我要出错的位置。以下是生成XLSX文件的代码。PHPExcel - >创建重复的工作表

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中的条目创建的工作表)中。任何帮助将不胜感激。

+0

你必须从所有的foreach循环重复护理 – rubberchicken 2014-10-20 19:59:05

+0

来阐述你的想法我可以解决它吗? – 2014-10-22 04:26:59

+0

你可以在http://pastebin.com/发布更多的代码...我需要更多的信息。 – rubberchicken 2014-10-22 13:49:17

回答

0

尝试......

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]); 
+0

这不起作用,或者我不得不大幅修改它甚至开始使其工作,并且使问题变得更糟。谢谢您的帮助。 – 2014-11-04 21:25:11