2017-08-06 9 views
1

Symfonyがなければ、これはデータベースにExcelデータを投稿する方法です。liuggio/ExcelBundleを使用してデータベースにデータを投稿する方法

// Include PHPExcel_IOFactory 

require_once ('../Classes/PHPExcel/IOFactory.php'); 
$inputFileName = 'abc.xls'; 

// Read your Excel workbook 
try { 
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
    $objPHPExcel = $objReader->load($inputFileName); 
} catch(Exception $e) { 
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); 
} 

// Get worksheet dimensions 
$sheet = $objPHPExcel->getSheet(0); 
$highestRow = $sheet->getHighestRow(); 
$highestColumn = $sheet->getHighestColumn(); 

// Loop through each row of the worksheet in turn 
for ($row = 1; $row <= $highestRow; $row++){ 

    // Read a row of data into an array 
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, 
            NULL, 
            TRUE, 
            FALSE); 
    // Insert row data array into your database of choice here 

} 

ExcelBundleとなってしまいました。ドキュメンテーションはこの仕事で私を助けません。私は同様の質問で与えられたすべてのアドバイスを試したことがあり、私はこれを行うことができません。

以下の例のように、ファイルからオブジェクトを作成すると、全く動作しません:

$phpExcelObject = $this->get('phpexcel')->createPHPExcelObject('file.xls');

このタスクを達成するためにどのように?

+1

あなたは試したコードを** Symfonyに投稿し、正確に "何もできません"と指定してください。 [最小限で完全で検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)を読み、それに応じて[How to Ask](http://stackoverflow.com/help/)に更新してください。 How-To-Ask)ディレクティブを使用します。 –

+0

@gp_sflover、私が試みてきたことを投稿すれば、すべてを複雑にするでしょう。 Symfonyで上記の作業をどのように達成するかは私の問題です。ありがとう – maestro

+0

インストール手順に従っていますか?あなたが試したコードはどこですか?それはコントローラで動作しないのでない場合 –

答えて

1

次のように私はこれを働い:

  1. はLiuggio/ExcelBundle /コントローラ/ FakeController.phpが
  2. が存在するパスはアプリ/設定config.ymlとのrouting.ymlを更新していることを確認していることを確認しています提供されるファイルで更新(Liuggio/ExcelBundle /テスト/アプリ)
  3. 次のようにFakeControllerを更新し、あなたが製品テーブルを更新していると仮定すると:

    <?php 
    
    namespace Liuggio\ExcelBundle\Controller; 
    
    use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
    use Symfony\Component\HttpFoundation\Response; 
    use AppBundle\Entity\Product; 
    
    class FakeController extends Controller 
    { 
        public function insertAction() 
        { 
         $data = []; 
         $appPath = $this->container->getParameter('kernel.root_dir'); 
         $file = realpath($appPath . '/../web/excelFiles/abc.xls'); 
    
         $phpExcelObject = $this->get('phpexcel')->createPHPExcelObject($file); 
         $sheet = $phpExcelObject->getActiveSheet()->toArray(null, true, true, true); 
    
         $em = $this->getDoctrine()->getManager(); 
         $data['sheet'] = $sheet; 
         //READ EXCEL FILE CONTENT 
         foreach($sheet as $i=>$row) { 
         if($i !== 1) { 
          $product = new Product(); 
    
          $product->setProductCode($row['A']); 
          $product->setProductName($row['B']); 
          $product->setProductRetailPrice($row['C']); 
          $product->setProductCost($row['D']); 
          $product->setProductTax($tax); 
          $product->setCategory($category); 
          //... and so on 
    
    
          $em->persist($product); 
          $em->flush(); 
          //redirect appropriately 
          } 
         } 
         $data['obj'] = $phpExcelObject; 
         return $this->render('excel/read.html.twig', ['data' => $data ]); 
        } 
    
    } 
    
  4. を210
+0

多くの人に感謝...あなたは私の時間を救った。 – Josiah

+0

symfony 3.3でこれを使用できますか? –

+0

はいできます。それは私が使っていたものです。 – maestro

関連する問題