2017-06-06 9 views
0

私はPHPExcel Reader機能を使用してExcelテーブルをHTMLテーブルに変換します。PHPExcelメモリエラー

は、私はこのエラーを取得しています。致命的なエラー:メモリ(1827405824を割り当てられた)のうち..

は私のphp.iniファイルで2048Mへの私のmemory_limitを変更しました(106バイトを割り当てしようとしました)

まだエラーが発生しています。

私のExcelファイルの最初のシートを読み込むにはどうすれば問題が解決するのでしょうか?

$excel = glob(''.$test.'\\'.$client.'.{xlsx,xls,xlsm,xlsm.ink}',GLOB_BRACE); 
$filterSubset = new \PHPExcel_Reader_DefaultReadFilter('A','N'); 
$objReader = \PHPExcel_IOFactory::createReaderForFile($excel[0]); 
$objReader->setReadFilter($filterSubset); 

$objPHPExcel = $objReader->load($excel[0]); 

## THIS DOESNT WORK ?! ## 
$objPHPExcel->setActiveSheetIndex(1); 

    $links = $objPHPExcel->getActiveSheet()->getHyperlinkCollection(); 
    var_dump($links); 

    foreach ($links as $link){ 
     $url = $link->getUrl(); 
     $url = str_replace('file','mnt', $url); 
     $link->setUrl($url); 
    } 

$writer = \PHPExcel_IOFactory::createWriter($objPHPExcel, "HTML"); 
$writer->generateStyles(); 
$writer->generateSheetData(); 

EDIT:

私はそのようにそれを行う:var_dump($sheetname);出力は良いものです

public function showClientAction($client) 
{ 
    $excel = glob(''.$path'.{xlsx,xls,xlsm,xlsm.ink}', GLOB_BRACE); 
    $filterSubset = new \PHPExcel_Reader_DefaultReadFilter('A','N'); 
    $objReader = \PHPExcel_IOFactory::createReaderForFile($excel[0]); 
    $objReader->setReadFilter($filterSubset); 

    $worksheetList = $objReader->listWorksheetNames($excel[0]); 
    $sheetname = $worksheetList[0]; 

    /** Advise the Reader of which WorkSheets we want to load **/ 

    $objReader->setLoadSheetsOnly($sheetname); 

    $objPHPExcel = $objReader->load($excel[0]); 

    var_dump($sheetname); 

    $writer = \PHPExcel_IOFactory::createWriter($objPHPExcel, "HTML"); 
    $writer->generateStyles(); 
    $writer->generateSheetData(); 

    return $this->render('MonextPerfclientBundle:Default:testexcel.html.twig', array(
     'excelHtml'=>$writer, 
     'stylesExcel'=>$writer, 
    )); 
} 

、それは素晴らしい作品!

しかし、どうすれば最初のシートだけを確実に読み込むことができますか?

より速くロードのように見えるいけない.. *私の英語をscuze ..

答えて

1

So How can i only load the first sheet of my Excel file, it can maybe solve my issue ?

ストレートPHPExcel Documentation

$inputFileType = 'Excel5'; 
$inputFileName = './sampleData/example1.xls'; 
$sheetname = 'Data Sheet #2'; 

/** Create a new Reader of the type defined in $inputFileType **/ 
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
/** Advise the Reader of which WorkSheets we want to load **/ 
$objReader->setLoadSheetsOnly($sheetname); 
/** Load $inputFileName to a PHPExcel Object **/ 
$objPHPExcel = $objReader->load($inputFileName); 

からあなたが最初のワークシートの名前がわからない場合PHPExcelはhelper methodを提供し、ファイル全体をロードすることなくワークシート名のリストを取得します。

+0

私のExcelファイルにあるフィルタを読み込んで表示し、ドロップダウンボタンでHTMLテーブルで変換することは可能ですか? –