2014-10-20 68 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