日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

shell读取excel_[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具...

發布時間:2025/3/15 php 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell读取excel_[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該擴展包可讓你輕松讀取和寫入簡單的 Excel 和 CSV 文件。在后臺使用生成器來確保低內存使用,即使在處理大型文件時也是如此。

這是有關如何讀取 Excel 或 CSV 的示例。

SimpleExcelReader::create($pathToFile)->getRows()->each(function(array $rowProperties) {// process the row});

如果 $ pathToFile 以 .csv 結尾。則假定為 CSV 文件。如果以 .xlsx 結尾,則假定為 Excel 文件。

安裝

你可以通過 composer 安裝該軟件包:

$ composer require spatie/simple-excel

用法

讀取 CSV

想象你有一個包含如下內容的 CSV 文件

email,first_name john@example.com,john jane@example.com,jane// $rows是 IlluminateSupportLazyCollection 的一個實例 $rows = SimpleExcelReader::create($pathToCsv)->getRows();$rows->each(function(array $rowProperties) {// 循環的第一個 $rowProperties 應該是下面這樣的// ['email' => 'john@example', 'first_name' => 'john'] });

讀取 Excel 文件

讀取 Excel 文件與讀取 CSV 文件相同。只需確保提供給 SimpleExcelReader 的 create 方法的路徑以 xlsx 結尾。

使用懶集合

getRows 將返回 LazyCollection 實例,該實例是 Laravel 框架的一部分。因為在后臺使用了生成器,即使是大文件內存使用量也會較低。

你可以在這里. 找到關于 LazyCollection 的方法

這是一個簡單的愚蠢的例子,我們只想處理 first_name 長度大于 5 的行。

SimpleExcelReader::create($pathToCsv)->getRows()->filter(function(array $rowProperties) {return strlen($rowProperties['first_name']) > 5})->each(function(array $rowProperties) {// processing rows});

讀取一個沒有標題的文件

如果你要讀取一個沒有標題的文件,你應該使用 noHeaderRow()

// $rows是 IlluminateSupportLazyCollection 的一個實例 $rows = SimpleExcelReader::create($pathToCsv)->noHeaderRow()->getRows()->each(function(array $rowProperties) {// 第一次循環的 $rowProperties 會是下面這樣// [0 => 'john@example', 1 => 'john'] });

自己創建一個閱讀器

首先我們已經引入了 box/spout 這個包。 你可以通過 getReader 方法獲取一個閱讀器的接口 BoxSpoutReaderReaderInterface

$reader = SimpleExcelReader::create($pathToCsv)->getReader();

寫入文件#

這里將展示如何寫入一個 CSV 文件:

$writer = SimpleExcelWriter::create($pathToCsv)->addRow(['first_name' => 'John','last_name' => 'Doe',])->addRow(['first_name' => 'Jane','last_name' => 'Doe',]);

pathToCsv 文件將包含以下內容:

first_name,last_name John,Doe Jane,Doe

寫入 Excel 文件

寫入 Excel 文件與寫入 CSV 相同。只需確保提供給 SimpleExcelWriter 的 create 方法的路徑以 xlsx 結尾。

將 Excel 文件流式傳輸到瀏覽器

無需將文件寫入磁盤,您可以將其直接流式傳輸到瀏覽器。

$writer = SimpleExcelWriter::streamDownload('your-export.xlsx')->addRow(['first_name' => 'John','last_name' => 'Doe',])->addRow(['first_name' => 'Jane','last_name' => 'Doe',])->toBrowser();

寫入沒有標題的文件

如果正在寫入的文件沒有標題行,則應使用 noHeaderRow() 方法。

$writer = SimpleExcelWriter::create($pathToCsv)->noHeaderRow()->addRow(['first_name' => 'Jane','last_name' => 'Doe',]); });

這將輸出:

Jane,Doe

添加布局

這個包底層使用了 box/spout 包。該軟件包包含一個 StyleBuilder ,可用于格式化行。請注意樣式只能在 Excel 文檔上使用。

use BoxSpoutWriterCommonCreatorStyleStyleBuilder; use BoxSpoutCommonEntityStyleColor;$style = (new StyleBuilder())->setFontBold()->setFontSize(15)->setFontColor(Color::BLUE)->setShouldWrapText()->setBackgroundColor(Color::YELLOW)->build();$writer->addRow(['values, 'of', 'the', 'row'], $style)

有關樣式的更多信息,請查閱 Spout 文檔.

使用替代定界符

默認情況下, SimpleExcelReader 將假定分隔符為 ,。

使用其他分隔符的方法:

SimpleExcelWriter::create($pathToCsv)->useDelimiter(';');

獲取寫入的行數

您可以獲取寫入的行數。該數字包括自動添加的標題行。

$writerWithAutomaticHeader = SimpleExcelWriter::create($this->pathToCsv)->addRow(['first_name' => 'John','last_name' => 'Doe',]);$writerWithoutAutomaticHeader->getNumberOfRows() // returns 2

手動使用 writer 對象

因基于 box/spout 包,所以你可以通過 getWriter 來獲取到底層的 BoxSpoutReaderWriterInterface 實現:

$writer = SimpleExcelWriter::create($pathToCsv)->getWriter();

更多學習內容請訪問:

八重櫻:騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)?zhuanlan.zhihu.com

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要的可以加入我的官方群點擊此處。

總結

以上是生活随笔為你收集整理的shell读取excel_[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。