当前路径:vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Ods.php <?php namespace PhpOffice\PhpSpreadsheet\Writer; use PhpOffice\PhpSpreadsheet\Shared\File; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Exception as WriterException; use PhpOffice\PhpSpreadsheet\Writer\Ods\Content; use PhpOffice\PhpSpreadsheet\Writer\Ods\Meta; use PhpOffice\PhpSpreadsheet\Writer\Ods\MetaInf; use PhpOffice\PhpSpreadsheet\Writer\Ods\Mimetype; use PhpOffice\PhpSpreadsheet\Writer\Ods\Settings; use PhpOffice\PhpSpreadsheet\Writer\Ods\Styles; use PhpOffice\PhpSpreadsheet\Writer\Ods\Thumbnails; use ZipStream\Exception\OverflowException; use ZipStream\Option\Archive; use ZipStream\ZipStream; class Ods extends BaseWriter { /** * Private writer parts. * * @var Ods\WriterPart[] */ private $writerParts = []; /** * Private PhpSpreadsheet. * * @var Spreadsheet */ private $spreadSheet; /** * Create a new Ods. */ public function __construct(Spreadsheet $spreadsheet) { $this->setSpreadsheet($spreadsheet); $writerPartsArray = [ 'content' => Content::class, 'meta' => Meta::class, 'meta_inf' => MetaInf::class, 'mimetype' => Mimetype::class, 'settings' => Settings::class, 'styles' => Styles::class, 'thumbnails' => Thumbnails::class, ]; foreach ($writerPartsArray as $writer => $class) { $this->writerParts[$writer] = new $class($this); } } /** * Get writer part. * * @param string $pPartName Writer part name * * @return null|Ods\WriterPart */ public function getWriterPart($pPartName) { if ($pPartName != '' && isset($this->writerParts[strtolower($pPartName)])) { return $this->writerParts[strtolower($pPartName)]; } return null; } /** * Save PhpSpreadsheet to file. * * @param resource|string $pFilename */ public function save($pFilename): void { if (!$this->spreadSheet) { throw new WriterException('PhpSpreadsheet object unassigned.'); } // garbage collect $this->spreadSheet->garbageCollect(); $this->openFileHandle($pFilename); $zip = $this->createZip(); $zip->addFile('META-INF/manifest.xml', $this->getWriterPart('meta_inf')->writeManifest()); $zip->addFile('Thumbnails/thumbnail.png', $this->getWriterPart('thumbnails')->writeThumbnail()); $zip->addFile('content.xml', $this->getWriterPart('content')->write()); $zip->addFile('meta.xml', $this->getWriterPart('meta')->write()); $zip->addFile('mimetype', $this->getWriterPart('mimetype')->write()); $zip->addFile('settings.xml', $this->getWriterPart('settings')->write()); $zip->addFile('styles.xml', $this->getWriterPart('styles')->write()); // Close file try { $zip->finish(); } catch (OverflowException $e) { throw new WriterException('Could not close resource.'); } $this->maybeCloseFileHandle(); } /** * Create zip object. * * @return ZipStream */ private function createZip() { // Try opening the ZIP file if (!is_resource($this->fileHandle)) { throw new WriterException('Could not open resource for writing.'); } // Create new ZIP stream $options = new Archive(); $options->setEnableZip64(false); $options->setOutputStream($this->fileHandle); return new ZipStream(null, $options); } /** * Get Spreadsheet object. * * @return Spreadsheet */ public function getSpreadsheet() { if ($this->spreadSheet !== null) { return $this->spreadSheet; } throw new WriterException('No PhpSpreadsheet assigned.'); } /** * Set Spreadsheet object. * * @param Spreadsheet $spreadsheet PhpSpreadsheet object * * @return $this */ public function setSpreadsheet(Spreadsheet $spreadsheet) { $this->spreadSheet = $spreadsheet; return $this; } }
相关源码
- 可旋转的彩色立方体C#源代码2021-10-29
- 在线考试系统2021-10-15
- EduSoho开源网校系统源码2019-06-27
- 仿拼多多小程序商城源码2019-06-06
- PHP5网站运行监测系统源码2017-04-14
关于我们 | 顾问团队 | 发展历程 | 联系我们 | 源码上传
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2023. 京ICP备09089570号 | 京公网安备11010702000869号
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2023. 京ICP备09089570号 | 京公网安备11010702000869号