Dưới đây là các bước để tạo lib tùy chỉnh
trong này tôi sẽ dùng lib PHpexcel
- tải xuống lib https://github.com/PHPOffice/PHPExcel/tree/1.8/Class
- giữ thư mục trong lib / nội bộ
- mở PHPExcel.php và thay đổi tên lớp thành Phpexcel_PHPExcel
- Trong thư mục PHPExcel bên cạnh rất nhiều chức năng khởi tạo PHPExcel thay đổi nó thành Phpexcel_PHPExcel khác, nó bị lỗi thông qua lỗi ex lib \ Internal \ Phpexcel \ PHPExcel \ Tính.php
bạn sử dụng như thế nào
sử dụng Phpexcel_PHPExcel;
sử dụng Phpexcel_PHPExcel_IOFactory;
và bên trong __construct
Phpexcel_PHPExcel $xlsx,
$this->excelFactory = $excelFactory;
như ví dụ bạn có thể xây dựng tệp 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
];
}