PHPExcel
をSymfony2
プロジェクトで使用する必要があります。ライブラリを使用するためにプロジェクトを正しく設定する方法を知っている人はいますか?ベンダーディレクトリに配置する必要がありますか?設定ファイルなどで何を変更する必要がありますか?
composerを使用してプロジェクトを管理している場合は、composer.jsonファイルを変更するだけです。
"autoload": {
"psr-4": {
"": "src/",
"": "vendor/phpoffice/phpexcel/Classes/"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
それから加えて
use PHPExcel;
use PHPExcel_IOFactory;
コントローラファイルに追加すると、次のようにPHPExcelを使用できます。
$objPHPExcel = new PHPExcel();
それが役に立てば幸い。
実際、それを正しく行うには、次の手順に従う必要があります。
deps
ファイルを編集し、PHPExcel
から依存関係を追加します[PHPExcel] git=http://github.com/PHPOffice/PHPExcel.git target=/phpexcel version=Origin/master
不足しているすべての依存関係をインストールするには、php bin/vendors install
を実行します(この場合はPHPExcel
)
app/autoload.php
のプレフィックスセクションを更新します。
$loader->registerPrefixes(array( // ... 'PHPExcel' => __DIR__.'/../vendor/phpexcel/Classes', ));
Tests/01simple-download-xls.php
のPHPExcel
の例に基づくコード):<?php
namespace Demo\MyBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use PHPExcel;
use PHPExcel_IOFactory;
class DemoController extends Controller
{
public function demoAction()
{
$response = new Response();
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Me")
->setLastModifiedBy("Someone")
->setTitle("My first demo")
->setSubject("Demo Document");
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!')
->setCellValue('C1', 'Hello')
->setCellValue('D2', 'world!');
// Set active sheet index to the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
$response->headers->set('Content-Type', 'application/vnd.ms-Excel');
$response->headers->set('Content-Disposition', 'attachment;filename="demo.xls"');
$response->headers->set('Cache-Control', 'max-age=0');
$response->prepare();
$response->sendHeaders();
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit();
}
}
bootstrapファイルでオートローダーを構成します:
$loader->registerPrefixes(array(
// Swift, Twig etc.
'PHPExcel' => __DIR__ . '/../vendor/phpexcel/lib/PHPExcel'
));
それで全部です。
実際に最善の解決策は、 https://github.com/liuggio/ExcelBundle を使用することです。 @Crozinのソリューションを使おうとしましたが、IOFactory :: createWriterに関するエラーが発生していました。これがお役に立てば幸いです、シモーネ
Symfony 2.3以降、これを実行できるようになりました。
...
"require": {
...
"phpoffice/phpexcel": "dev-master"
...
},
...
次に、composer update
を実行するだけで、依存関係が自動的に解決されます。
または、composer require phpoffice/phpexcel:dev-master
ファイルをいじりたくない場合は、composer.json
を実行できます。
composer(Symfony2.1以降))を使用すると、非常に簡単で、composer.json
を変更するだけで済みます。
名前空間を登録する必要はもうありません!
注意すべき点は2つだけです。
package
タイプのソリューションしか見つかりませんでした。vendor
ディレクトリのディレクトリ全体を削除する必要があります関連するリンクは次のとおりです。 PHPExcelをcomposer and Symfony2.2 で使用)