Magento 2にphp xlsxライブラリのようなサードパーティのライブラリを含める方法は?
過去7日間、Googleでブラウジングしており、情報を見つけることができませんでした。
Magento 2は、パーサー、ロガーなどのデフォルトフレームワークモジュールを提供します。この場合、xlsx形式でエクスポートレポートを追加する必要がありますか?
Magento 2にphp xlsxライブラリのようなサードパーティのライブラリを含める方法は?
過去7日間、Googleでブラウジングしており、情報を見つけることができませんでした。
Magento 2は、パーサー、ロガーなどのデフォルトフレームワークモジュールを提供します。この場合、xlsx形式でエクスポートレポートを追加する必要がありますか?
回答:
以下は、カスタムlibを作成する手順です
これで私はPHpexcel libを取ります
どこでもあなたの使用は
Phpexcel_PHPExcelを使用します。
Phpexcel_PHPExcel_IOFactoryを使用します。
そして__constructの中
Phpexcel_PHPExcel $xlsx,
$this->excelFactory = $excelFactory;
例のように、xlsxファイルを構築できます
public function getXlsxFile()
{
$component = $this->filter->getComponent();
$name = md5(microtime());
$file = 'export/'. $component->getName() . $name . '.xml';
$this->filter->prepareComponent($component);
$this->filter->applySelectionOnTargetProvider();
/** @var SearchResultInterface $searchResult */
$component->getContext()->getDataProvider()->setLimit(0, 999999);
$searchResult = $component->getContext()->getDataProvider()->getSearchResult();
$this->prepareItems($component->getName(), $searchResult->getItems());
/** @var SearchResultIterator $searchResultIterator */
$searchResultIterator = $this->iteratorFactory->create(['items' => $searchResult->getItems()]);
$filterDataArr = '';
foreach($searchResultIterator as $dataRow){
$filterDataArr[]= $dataRow->getData();
}
$excelDataArray = '';
$sheetTitle = 'export';
$HeadersArray = $this->metadataProvider->getHeaders($component);
$FieldsArray = $this->metadataProvider->getFields($component);
if(($key = array_search('actions', $FieldsArray)) !== false) {
unset($FieldsArray[$key]);
}
if($component->getData('worksheetlabel')){
$sheetTitle = $component->getData('worksheetlabel');
}
$hPos = 0;
foreach($HeadersArray as $key =>$value){
$excelDataArray[$hPos][$key] = $value;
}
$dPos = 1;
if(count($filterDataArr) > 1){
foreach($filterDataArr as $Filterdata){
foreach($FieldsArray as $key=>$value){
$excelDataArray[$dPos][$key] = $Filterdata[$value];
}
$dPos++;
}
}
$this->_Xlsx->getActiveSheet()->fromArray($excelDataArray, null, 'A1' );
$this->_Xlsx->getActiveSheet()->setTitle($sheetTitle);
$this->_Xlsx->setActiveSheetIndex(0);
$callStartTime = microtime(true);
$name = md5(microtime());
$file = '/export/'. $component->getName() . $name . '.xlsx';
$this->directory->create('export');
$objWriter = Phpexcel_PHPExcel_IOFactory::createWriter($this->_Xlsx, 'Excel2007');
$filepath = $this->directory->getAbsolutePath($file);
$objWriter->save($filepath);
return [
'type' => 'filename',
'value' => $file,
'rm' => true // can delete file after use
];
}
lib/internal
は、触れられるべきではありません。lib/external
代わりに作成できます。
どのライブラリをインストールしたいですか?
php xlsxライブラリのグーグル検索の最初の結果は私にこれを与えました:https: //github.com/PHPOffice/PHPExcel
packagistに登録されているのでhttps://packagist.org/packages/phpoffice/phpexcel
次のシェルコマンド(magento2ルートディレクトリから)を使用して、magento2インスタンスに簡単にインストールできます。
composerにはphpoffice / phpexcelが必要です
Magento拡張機能で使用する場合は、モジュールのcomposer.jsonファイルにライブラリが必要です。これにより、拡張機能のインストール時に常に自動的にインストールされます。
その後、オートローディングはcomposerによって処理されます
phpライブラリファイルをmagentoのlibフォルダーに配置します。例:your_magento / lib / phpxlsモジュールファイルの上に、以下のコードを使用してlibファイルを含めます。
$object_manager = Magento\Core\Model\ObjectManager::getInstance();
$dir = $object_manager->get('Magento\App\Dir');
$base = $dir->getDir();
$lib_file = $base.'lib/phpxls/your_lib_file.php'
require_once($lib_file);
編集 Myhelplib.phpなどのモジュールヘルパーフォルダーにファイルを作成します。Mycustomlib.phpファイルの先頭に上記のコードを挿入すると、次のようになります。
$object_manager = Magento\Core\Model\ObjectManager::getInstance();
$dir = $object_manager->get('Magento\App\Dir');
$base = $dir->getDir();
$lib_file = $base.'lib/phpxls/your_lib_file.php'
require_once($lib_file);
namespace Yournamespace\Module\Helper;
class Mycustomlib extends Yourlibclass
{
}
Mycustomlibをモジュールの必要な場所に拡張できます
namespace
コードファイルの最初の行である必要があります。
Magento 2は、モジュールとサードパーティパッケージの両方のcomposerインストールをサポートしています。
PhpExcelは現在廃止されており、新しいPhpSpreadsheetを使用する必要があります。
composer経由のインストール:
composer require phpoffice/phpspreadsheet