همانطور که قبلاً از معماری می دانید ، خواندن و نوشتن به یک ذخیره سازی مداوم با استفاده از کلاسهای پایه phpspreadsheet امکان پذیر نیست. برای این منظور ، phpspreadsheet خوانندگان و نویسندگان را در اختیار شما قرار می دهد ، که پیاده سازی phpoffice phpspreadsheet خواننده iReader و phpoffice phpspreadsheet نویسنده iWriter است.
phpoffice phpspreadsheet iofactory
API phpspreadsheet روشهای مختلفی را برای ایجاد phpoffice phpspreadsheet خواننده iReader یا phpoffice phpspreadsheet نویسنده iWriter نمونه ارائه می دهد:
ایجاد مستقیم از طریق phpoffice phpspreadsheet iofactory. تمام نمونه های زیر آن روش ایجاد مستقیم را نشان می دهد. توجه داشته باشید که برای انجام این کار می توانید از کلاس phpoffice phpspreadsheet iofactory نیز استفاده کنید.
ایجاد phpoffice phpspreadsheet خواننده iReader با استفاده از phpoffice phpspreadsheet iofactory
2 روش برای خواندن در یک پرونده در PhpsPreadsheet وجود دارد: با استفاده از نوع فایل خودکار حل و حل و فصل یا صریح.
حل و فصل خودکار نوع پرونده ، phpoffice phpspreadsheet خواننده IREADER را با phpspreadsheet توزیع می کند. اگر یکی از آنها بتواند نام فایل مشخص شده را بارگیری کند ، پرونده با استفاده از آن phpoffice phpspreadsheet خواننده iReader بارگذاری می شود. حالت صریح به شما نیاز دارد تا مشخص کنید که باید از phpoffice phpspreadsheet خواننده iReader استفاده شود.
شما می توانید با استفاده از phpoffice phpspreadsheet iofactory در حالت حل و فصل اتوماتیک با استفاده از نمونه کد زیر ، یک phpoffice phpspreadsheet خواننده iReader ایجاد کنید:
$ spreadsheet = phpoffice phpspreadsheet iofactory :: load ("05FeatureDemo. xlsx") ؛
استفاده معمولی از این ویژگی زمانی است که شما نیاز به خواندن پرونده های بارگذاری شده توسط کاربران خود دارید ، و نمی دانید که آنها در حال بارگذاری پرونده های XLS یا XLSX هستند.
اگر نیاز به تنظیم برخی از خصوصیات را بر روی خواننده دارید ، (به عنوان مثال فقط داده ها را بخوانید ، بعداً در مورد این موارد بیشتر ببینید) ، بنابراین ممکن است بخواهید از این نوع استفاده کنید:
$reader = PhpOfficePhpSpreadsheetIOFactory::createReaderForFile("05featuredemo.xlsx"); $reader>setReadDataOnly(true); $reader>بار ("05FeatureDemo. xlsx") ؛
شما می توانید با استفاده از phpspreadsheet خواننده IREADER با استفاده از phpoffice phpspreadsheet iofactory در حالت صریح با استفاده از نمونه کد زیر ایجاد کنید:
$reader = PhpOfficePhpSpreadsheetIOFactory::createReader("Xlsx"); $spreadsheet = $reader>بار ("05FeatureDemo. xlsx") ؛
توجه داشته باشید که حالت حل و فصل خودکار از نوع صریح کمی کندتر است.
ایجاد phpoffice phpspreadsheet نویسنده iWriter با استفاده از phpoffice phpspreadsheet iofactory
شما می توانید با استفاده از phpoffice phpspreadsheet iofactory یک phpoffice phpspreadsheet نویسنده iWriter ایجاد کنید:
$writer = PhpOfficePhpSpreadsheetIOFactory::createWriter($spreadsheet, "Xlsx"); $writer>ذخیره ("05FeatureDemo. xlsx") ؛
قالب پرونده اکسل 2007 (گسترده)
فرمت پرونده XLSX قالب اصلی پرونده PhpsPreadSheet است. این امکان را برای خروجی صفحه گسترده حافظه به یک پرونده . xlsx فراهم می کند.
phpoffice phpspreadsheet خواننده xlsx
خواندن صفحه گسترده
می توانید با استفاده از کد زیر یک پرونده . xlsx را بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderXlsx(); $spreadsheet = $reader>بار ("05FeatureDemo. xlsx") ؛
فقط داده ها را بخوانید
شما می توانید گزینه SetReadDataOnly را روی خواننده تنظیم کنید تا به خواننده دستور دهید تا یک ظاهر طراحی شده ، اعتبار سنجی داده ها را نادیده بگیرد ، ... و فقط داده های سلول را بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderXlsx(); $reader>setReadDataOnly(true); $spreadsheet = $reader>بار ("05FeatureDemo. xlsx") ؛
فقط ورق های خاص را بخوانید
شما می توانید گزینه SetLoadSheetsonly را روی خواننده تنظیم کنید تا به خواننده دستور دهید که فقط برگه ها را با یک نام مشخص بارگیری کند:
$reader = new PhpOfficePhpSpreadsheetReaderXlsx(); $reader>setLoadSheetsOnly(["Sheet 1", "My special sheet"]); $spreadsheet = $reader>بار ("05FeatureDemo. xlsx") ؛
فقط سلولهای خاص را بخوانید
می توانید گزینه SetReadFilter را روی خواننده تنظیم کنید تا به خواننده دستور دهید فقط سلولهایی را که با یک قانون معین مطابقت دارند ، بارگذاری کند. یک فیلتر خوانده شده می تواند هر کلاس باشد که phpoffice phpspreadsheet خواننده iReadFilter را اجرا کند. به طور پیش فرض ، تمام سلولها با استفاده از phpoffice phpspreadsheet خواننده defaultreadfilter خوانده می شوند.
کد زیر فقط ردیف 1 و ردیف های 20 - 30 از هر برگه در پرونده اکسل را می خواند:
کلاس MyReadFilter پیاده سازی phpoffice phpspreadsheet خواننده IREADFILTER= 20 && $row retu false;>> $reader = new PhpOfficePhpSpreadsheetReaderXlsx(); $reader>setReadFilter( new MyReadFilter() ); $spreadsheet = $reader>بار ("06largescale. xlsx") ؛
فیلتر خواندن ، ردیف ها و ستون های سلولی را دوباره کنترل نمی کند. اگر فیلتر کنید فقط ردیف های 100-200 را بخوانید ، سلولهایی که می خوانید هنوز هم A100-A200 شماره گذاری می شوند ، نه A1-A101. سلولهای A1-A99 بارگیری نمی شوند ، اما اگر سعی کنید با GetCell () برای سلول خارج از محدوده بارگذاری شده خود تماس بگیرید ، پس از آن PhpsPreadSheet یک سلول جدید با مقدار تهی ایجاد می کند.
روش هایی مانند toArray () فرض می کنند که تمام سلولهای موجود در صفحه گسترده از A1 بارگیری شده اند ، بنابراین مقادیر تهی را برای ردیف ها و ستون هایی که در خارج از محدوده فیلتر شما قرار می گیرند ، باز می گردانند: توصیه می شود که محدوده ای را که فیلتر شما درخواست کرده است پیگیری کنید، و به جای آن از RangetoArray () استفاده کنید.
phpoffice phpspreadsheet نویسنده xlsx
نوشتن صفحه گسترده
می توانید با استفاده از کد زیر یک پرونده . xlsx بنویسید:
$writer = new PhpOfficePhpSpreadsheetWriterXlsx($spreadsheet); $writer>ذخیره ("05FeatureDemo. xlsx") ؛
پیش محاسبه فرمول
به طور پیش فرض ، این نویسنده تمام فرمول های موجود در صفحه گسترده را از قبل محاسبه می کند. این می تواند در صفحات گسترده بزرگ و شاید حتی ناخواسته کند باشد. با این حال می توانید فرمول قبل از محاسبه را غیرفعال کنید:
$writer = new PhpOfficePhpSpreadsheetWriterXlsx($spreadsheet); $writer>setPreCalculateFormulas(false); $writer>ذخیره ("05FeatureDemo. xlsx") ؛
توجه داشته باشید فرمول ها هنوز هم در هر ستونی تنظیم می شوند که به صورت خودکار انجام شود حتی اگر از قبل محاسبه شده روی کاذب تنظیم شود
بسته سازگاری Office 2003
به دلیل اشکال موجود در بسته سازگاری Office2003 ، هنگام باز کردن صفحه گسترده XLSX (بیشتر مربوط به محاسبه فرمول) می تواند برخی از مشکلات کوچک وجود داشته باشد. شما می توانید سازگاری Office2003 را با کد زیر فعال کنید:
$writer = new PhpOfficePhpSpreadsheetWriterXlsx($spreadsheet); $writer>setOffice2003Compatibility(true); $writer>ذخیره ("05FeatureDemo. xlsx") ؛
گزینه سازگاری Office2003 فقط در صورت لزوم باید مورد استفاده قرار گیرد زیرا چندین گزینه فرمت پرونده Office2007 را غیرفعال می کند ، در نتیجه صفحه گسترده ای از Office2007 با کیفیت پایین تر می شود.
زمینه های کنترل فرم
phpspreadsheet پشتیبانی محدودی برای کنترل فرم ها (دکمه ها ، کادر چک و غیره) ارائه می دهد. این پشتیبانی فقط برای فرمت Excel 2007 در دسترس است ، و فقط برای بارگیری یک صفحه گسترده با چنین کنترل ها و ذخیره آن به عنوان یک فایل جدید ارائه می شود. پشتیبانی برای افزودن چنین عناصر به صفحه گسترده و حتی برای یافتن آنها برای تعیین خصوصیات آنها در دسترس نیست (بنابراین نمی توانید آنها را اصلاح یا حذف کنید). اصلاح در یک کاربرگ با کنترل ها "خالی از سکنه" است. برخی از اصلاحات به درستی کار خواهند کرد ، اما برخی دیگر به احتمال زیاد باعث ایجاد مشکلاتی می شوند ، به عنوان مثالاضافه کردن نظر به صفحه کار ، یا درج یا حذف ردیف ها یا ستون ها به روشی که باعث می شود کنترل ها مکان را تغییر دهند.
قالب پرونده اکسل 5 (BIFF)
فرمت پرونده XLS فرمت پرونده قدیمی اکسل است که در phpspreadsheet پیاده سازی شده است تا روشی یکنواخت برای ایجاد پرونده های . xlsx و . xls ارائه دهد. این در اصل یک نسخه اصلاح شده از صفحه گسترده Pear_excel_writer است ، اگرچه گسترش یافته است و محدودیت های کمتری دارد و ویژگی های بیشتری نسبت به کتابخانه قدیمی گلابی دارد. این می تواند تمام نسخه های BIFF را که از OLE2 استفاده می کنند ، بخواند: BIFF5 (معرفی شده با دفتر 95) از طریق BIFF8 ، اما نمی تواند نسخه های قبلی را بخواند.
فرمت پرونده XLS دیگر توسعه نخواهد یافت ، فقط یک فرمت فایل اضافی را برای PhpsPreadsheet ارائه می دهد.
محدودیت های Excel5 (BIFF) لطفا توجه داشته باشید که قالب پرونده BIFF محدودیت هایی در مورد سلول های یک ظاهر طراحی شده و استفاده از صفحات گسترده از طریق PHP دارد.
phpoffice phpspreadsheet خواننده xls
خواندن صفحه گسترده
شما می توانید یک پرونده . xls را با استفاده از کد زیر بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderXls(); $spreadsheet = $reader>بار ("05FeatureDemo. xls") ؛
فقط داده ها را بخوانید
شما می توانید گزینه SetReadDataOnly را روی خواننده تنظیم کنید تا به خواننده دستور دهید تا یک ظاهر طراحی شده ، اعتبار سنجی داده ها را نادیده بگیرد ، ... و فقط داده های سلول را بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderXls(); $reader>setReadDataOnly(true); $spreadsheet = $reader>بار ("05FeatureDemo. xls") ؛
فقط ورق های خاص را بخوانید
شما می توانید گزینه SetLoadSheetsonly را روی خواننده تنظیم کنید تا به خواننده دستور دهید که فقط برگه ها را با یک نام مشخص بارگیری کند:
$reader = new PhpOfficePhpSpreadsheetReaderXls(); $reader>setLoadSheetsOnly(["Sheet 1", "My special sheet"]); $spreadsheet = $reader>بار ("05FeatureDemo. xls") ؛
فقط سلولهای خاص را بخوانید
می توانید گزینه SetReadFilter را روی خواننده تنظیم کنید تا به خواننده دستور دهید فقط سلولهایی را که با یک قانون معین مطابقت دارند ، بارگذاری کند. یک فیلتر خوانده شده می تواند هر کلاس باشد که phpoffice phpspreadsheet خواننده iReadFilter را اجرا کند. به طور پیش فرض ، تمام سلولها با استفاده از phpoffice phpspreadsheet خواننده defaultreadfilter خوانده می شوند.
کد زیر فقط ردیف 1 و ردیف های 20 تا 30 از هر برگه در پرونده اکسل را می خواند:
کلاس MyReadFilter پیاده سازی phpoffice phpspreadsheet خواننده IREADFILTER= 20 && $row retu false;>> $reader = new PhpOfficePhpSpreadsheetReaderXls(); $reader>setReadFilter( new MyReadFilter() ); $spreadsheet = $reader>بار ("06largescale. xls") ؛
phpoffice phpspreadsheet نویسنده xls
نوشتن صفحه گسترده
می توانید با استفاده از کد زیر یک پرونده . xls بنویسید:
$writer = new PhpOfficePhpSpreadsheetWriterXls($spreadsheet); $writer>ذخیره ("05FeatureDemo. xls") ؛
اکسل 2003 قالب پرونده XML
Excel 2003 Forment File File یک فرمت فایل است که می تواند در نسخه های قدیمی Microsoft Excel استفاده شود.
محدودیت های XML Excel 2003 لطفا توجه داشته باشید که فرمت XML Excel 2003 دارای محدودیت هایی در مورد سلول های یک ظاهر طراحی شده و استفاده از صفحات گسترده از طریق PHP است. همچنین ، فقط پرونده هایی با استفاده از charset utf-8 پشتیبانی می شوند.
phpoffice phpspreadsheet خواننده xml
خواندن صفحه گسترده
با استفاده از کد زیر می توانید یک فایل اکسل 2003 . xml را بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderXml(); $spreadsheet = $reader>بار ("05FeatureDemo. xml") ؛
فقط سلولهای خاص را بخوانید
می توانید گزینه SetReadFilter را روی خواننده تنظیم کنید تا به خواننده دستور دهید فقط سلولهایی را که با یک قانون معین مطابقت دارند ، بارگذاری کند. یک فیلتر خوانده شده می تواند هر کلاس باشد که phpoffice phpspreadsheet خواننده iReadFilter را اجرا کند. به طور پیش فرض ، تمام سلولها با استفاده از phpoffice phpspreadsheet خواننده defaultreadfilter خوانده می شوند.
کد زیر فقط ردیف 1 و ردیف های 20 تا 30 از هر برگه در پرونده اکسل را می خواند:
کلاس MyReadFilter پیاده سازی phpoffice phpspreadsheet خواننده IREADFILTER= 20 && $row retu false;>> $reader = new PhpOfficePhpSpreadsheetReaderXml(); $reader>setReadFilter( new MyReadFilter() ); $spreadsheet = $reader>بار ("06largescale. xml") ؛
پیوند نمادین (سیلک)
Symbolic Link (SYLK) یک قالب فایل مایکروسافت است که معمولاً برای تبادل داده ها بین برنامه ها ، به طور خاص صفحات گسترده استفاده می شود. پرونده های SYLK معمولاً پسوند . slk دارند. متشکل از فقط شخصیت های ANSI قابل نمایش ، می توان آن را به راحتی توسط سایر برنامه ها مانند پایگاه داده ها ایجاد و پردازش کرد.
محدودیت های SYLK لطفا توجه داشته باشید که فرمت پرونده Sylk محدودیت هایی در مورد سلول های یک ظاهر طراحی شده و استفاده از صفحات گسترده از طریق PHP دارد.
phpoffice phpspreadsheet خواننده slk
خواندن صفحه گسترده
شما می توانید یک فایل . slk را با استفاده از کد زیر بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderSlk(); $spreadsheet = $reader>بار ("05FeatureDemo. slk") ؛
فقط سلولهای خاص را بخوانید
می توانید گزینه SetReadFilter را روی خواننده تنظیم کنید تا به خواننده دستور دهید فقط سلولهایی را که با یک قانون معین مطابقت دارند ، بارگذاری کند. یک فیلتر خوانده شده می تواند هر کلاس باشد که phpoffice phpspreadsheet خواننده iReadFilter را اجرا کند. به طور پیش فرض ، تمام سلولها با استفاده از phpoffice phpspreadsheet خواننده defaultreadfilter خوانده می شوند.
کد زیر فقط ردیف 1 و ردیف های 20 تا 30 از هر برگه در پرونده Sylk را می خواند:
کلاس MyReadFilter پیاده سازی phpoffice phpspreadsheet خواننده IREADFILTER= 20 && $row retu false;>> $reader = new PhpOfficePhpSpreadsheetReaderSlk(); $reader>setReadFilter( new MyReadFilter() ); $spreadsheet = $reader>بار ("06largescale. slk") ؛
Open/Libre Office (. ODS)
Open Office یا Libre Office . ODS پرونده های پرونده استاندارد برای پرونده های Office Office یا Libre Office Calc است.
phpoffice phpspreadsheet خواننده ods
خواندن صفحه گسترده
می توانید یک پرونده . ODS را با استفاده از کد زیر بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderOds(); $spreadsheet = $reader>بار ("05featuredemo. ods") ؛
فقط سلولهای خاص را بخوانید
می توانید گزینه SetReadFilter را روی خواننده تنظیم کنید تا به خواننده دستور دهید فقط سلولهایی را که با یک قانون معین مطابقت دارند ، بارگذاری کند. یک فیلتر خوانده شده می تواند هر کلاس باشد که phpoffice phpspreadsheet خواننده iReadFilter را اجرا کند. به طور پیش فرض ، تمام سلولها با استفاده از phpoffice phpspreadsheet خواننده defaultreadfilter خوانده می شوند.
کد زیر فقط ردیف 1 و ردیف های 20 تا 30 از هر برگه را در پرونده Calc خوانده می شود:
کلاس MyReadFilter پیاده سازی phpoffice phpspreadsheet خواننده IREADFILTER= 20 && $row retu false;>> $reader = new PhpOfficePhpSpreadsheetReaderOds(); $reader>setReadFilter( new MyReadFilter() ); $spreadsheet = $reader>بار ("06largescale. ods") ؛
CSV (مقادیر جدا شده کاما)
CSV (مقادیر جدا شده کاما) اغلب به عنوان قالب پرونده واردات/صادرات با سایر سیستم ها استفاده می شود. phpspreadsheet امکان خواندن و نوشتن به پرونده های CSV را فراهم می کند.
محدودیت های CSV لطفا توجه داشته باشید که قالب پرونده CSV محدودیت هایی در مورد سلولهای یک ظاهر طراحی شده ، قالب بندی شماره ، دارد.
phpoffice phpspreadsheet خواننده csv
خواندن پرونده CSV
شما می توانید یک فایل . csv را با استفاده از کد زیر بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderCsv(); $spreadsheet = $reader>بار ('sample. csv') ؛
همچنین می توانید یک رشته را به گونه ای درمان کنید که گویی محتویات یک فایل CSV به شرح زیر است:
$reader = new PhpOfficePhpSpreadsheetReaderCsv(); $spreadsheet = $reader>LoadPreadSheetFromString (داده $) ؛
تنظیم گزینه های CSV
غالباً ، پرونده های CSV در واقع "کاما از هم جدا شده" نیستند ، یا به عنوان جداکننده از semicolon (؛) استفاده می کنند. می توانید قبل از خواندن پرونده CSV برخی از گزینه ها را تنظیم کنید.
جداکننده به صورت خودکار مشخص می شود ، بنابراین در بیشتر موارد لازم نیست که آن را مشخص کنید. اما در مواردی که تشخیص خودکار متناسب با مورد استفاده نیست ، می توان آن را به صورت دستی تنظیم کرد.
توجه داشته باشید که phpoffice phpspreadsheet خواننده csv به طور پیش فرض فرض می کند که پرونده CSV بارگیری شده UTF-8 رمزگذاری شده است. اگر در حال خواندن پرونده های CSV هستید که در Microsoft Office Excel ایجاد شده اند ، رمزگذاری صحیح ورودی ممکن است ویندو ز-1252 باشد (CP1252). همیشه اطمینان حاصل کنید که رمزگذاری ورودی به طور مناسب تنظیم شده است.
$reader = new PhpOfficePhpSpreadsheetReaderCsv(); $reader>setInputEncoding('CP1252'); $reader>setDelimiter(';'); $reader>setEnclosure(''); $reader>setSheetIndex(0); $spreadsheet = $reader>بار ("sample. csv") ؛
همچنین ممکن است اجازه دهید PhpsPreadSheet تلاش کند تا رمزگذاری ورودی را حدس بزند. این کار را بر اساس آزمایش BOM (UTF-8 ، UTF-16BE ، UTF-16LE ، UTF-32BE یا UTF-32LE) انجام می دهد ، یا با انجام تست های اکتشافی برای آن رمزگذاری ها ، سقوط به یک رمزگذاری قابل توجه (پیش فرضCP1252 است) در صورت عدم موفقیت همه این آزمایشات.
$reader = new PhpOfficePhpSpreadsheetReaderCsv(); $encoding = PhpOfficePhpSpreadsheetReaderCsv::guessEncoding('sample.csv'); // or, e.g. $encoding = PhpOfficePhpSpreadsheetReaderCsv::guessEncoding( // 'sample.csv', 'ISO-8859-2'); $reader>setInputEncoding($encoding); $reader>setDelimiter(';'); $reader>setEnclosure(''); $reader>setSheetIndex(0); $spreadsheet = $reader>بار ('sample. csv') ؛
همچنین می توانید خواننده را تنظیم کنید تا رمزگذاری را حدس بزند و نه اینکه به طور مستقیم GuessEncoding را فراخوانی کنید. در این حالت ، اگر هیچ چیز دیگری کار نمی کند ، رمزگذاری Fallback تنظیم شده کاربر استفاده می شود.
$reader = new PhpOfficePhpSpreadsheetReaderCsv(); $reader>setInputEncoding(PhpOfficePhpSpreadsheetReaderCsv::GUESS_ENCODING); $reader>setFallbackEncoding('ISO-8859-2'); // default CP1252 without this statement $reader>setDelimiter(';'); $reader>setEnclosure(''); $reader>setSheetIndex(0); $spreadsheet = $reader>بار ('sample. csv') ؛
خواننده CSV معمولاً رشته های تهی را در صفحه گسترده بار نمی کند. برای بارگیری آنها:
$reader>setPreservenullString (درست) ؛
سرانجام ، می توانید هنگام اجرای سازنده ، یا از طریق CSV جدید () یا iofactory :: بار ، یک تماس تلفنی را فراخوانی کنید ، و این را داشته باشید که پاسخ های قابل تنظیم را به هر آنچه پیش فرض برای محیط شما مناسب است تنظیم کنید.
عملکرد ConstructorCallback ( phpoffice phpspreadsheet خواننده csv $ خواننده): void<$reader>setInputEncoding(PhpOfficePhpSpreadsheetReaderCsv::GUESS_ENCODING); $reader>setFallbackEncoding('ISO-8859-2'); $reader>setDelimiter(','); $reader>setEnclosure('"'); // Following represents how Excel behaves better than the default escape character $reader>SetEscapeCharacter ((نسخه_ compare (php_version ، '7. 4')<0) ? "x0" : '');> phpoffice phpspreadsheet خواننده csv :: setConstructorCallback ('constructorCallback') ؛$ spreadsheet = phpspreadsheet iofactory :: load ('sample. csv') ؛
یک برگه خاص را بخوانید
پرونده های CSV فقط می توانند شامل یک صفحه کار باشند. بنابراین ، می توانید مشخص کنید که کدام برگه را از CSV بخوانید:
$reader>setSheetIndex (0) ؛
در صفحه گسترده موجود بخوانید
هنگام کار با پرونده های CSV ، ممکن است اتفاق بیفتد که می خواهید داده های CSV را به یک شیء صفحه گسترده موجود وارد کنید. کد زیر یک پرونده CSV را در یک صفحه گسترده $ موجود حاوی برخی از برگه ها بارگیری می کند و بر روی برگه ششم وارد می کند:
$reader = new PhpOfficePhpSpreadsheetReaderCsv(); $reader>setDelimiter(';'); $reader>setEnclosure('"'); $reader>setSheetIndex(5); $reader>LoadIntoExisting ("05FeatureDemo. csv" ، صفحه گسترده $) ؛
پایان خط
پایان خط برای یونیکس ( n) و ویندوز ( r n) پشتیبانی می شوند.
انتهای خط Mac ( r) تا زمانی که PHP از آنها پشتیبانی می کند پشتیبانی می شوند ، که این کار را از طریق انتشار 8. 0 انجام می دهد. پشتیبانی از پایان خط MAC برای 8. 1 کاهش می یابد و قرار است برای همه نسخه های بعدی PHP8 مستهلک شود. phpspreadsheet به پشتیبانی از آنها برای 8.*ادامه خواهد داد. قرار است پشتیبانی با انتشار 9 کاهش یابد. phpspreadsheet دیگر پرونده های CSV را با انتهای خط MAC به درستی کنترل نمی کند.
شما می توانید آزمایش را برای پایان خط MAC به شرح زیر سرکوب کنید:
$reader = new PhpOfficePhpSpreadsheetReaderCsv(); $reader>setTestautodetect (نادرست) ؛
phpoffice phpspreadsheet نویسنده csv
نوشتن پرونده CSV
می توانید با استفاده از کد زیر یک فایل . csv بنویسید:
$writer = new PhpOfficePhpSpreadsheetWriterCsv($spreadsheet); $writer>ذخیره ("05FeatureDemo. csv") ؛
تنظیم گزینه های CSV
غالباً ، پرونده های CSV در واقع "کاما از هم جدا شده" نیستند ، یا به عنوان جداکننده از semicolon (؛) استفاده می کنند. می توانید قبل از نوشتن پرونده CSV برخی از گزینه ها را تنظیم کنید:
$writer = new PhpOfficePhpSpreadsheetWriterCsv($spreadsheet); $writer>setDelimiter(';'); $writer>setEnclosure('"'); $writer>setLineEnding("
"); $writer>setSheetIndex(0); $writer>ذخیره ("05FeatureDemo. csv") ؛
محفظه های CSV
به طور پیش فرض ، تمام زمینه های CSV در شخصیت محفظه پیچیده می شوند ، که به طور پیش فرض برای دو برابر کردن است. شما می توانید برای استفاده از شخصیت محوطه فقط در صورت لزوم تغییر دهید:
$writer = new PhpOfficePhpSpreadsheetWriterCsv($spreadsheet); $writer>setEnclosureRequired(false); $writer>ذخیره ("05FeatureDemo. csv") ؛
یک برگه خاص بنویسید
پرونده های CSV فقط می توانند شامل یک صفحه کار باشند. بنابراین ، می توانید مشخص کنید که کدام برگه برای نوشتن به CSV:
$writer>setSheetIndex (0) ؛
پیش محاسبه فرمول
به طور پیش فرض ، این نویسنده تمام فرمول های موجود در صفحه گسترده را از قبل محاسبه می کند. این می تواند در صفحات گسترده بزرگ و شاید حتی ناخواسته کند باشد. با این حال می توانید فرمول قبل از محاسبه را غیرفعال کنید:
$writer = new PhpOfficePhpSpreadsheetWriterCsv($spreadsheet); $writer>setPreCalculateFormulas(false); $writer>ذخیره ("05FeatureDemo. csv") ؛
نوشتن پرونده های CSV UTF-8
پرونده های CSV در UTF-8 نوشته شده است. اگر آنها دارای شخصیت های خارج از محدوده ASCII نباشند ، هیچ چیز دیگری لازم نیست. با این حال ، اگر چنین کاراکترهایی در پرونده قرار دارند ، یا اگر پرونده با شناسه 2 کاراکتر شروع شود ، باید صریحاً شامل یک هدر فایل BOM باشد. اگر اینگونه نباشد ، اکسل آن شخصیت ها را به درستی تفسیر نمی کند. این می تواند با استفاده از کد زیر فعال شود:
$writer = new PhpOfficePhpSpreadsheetWriterCsv($spreadsheet); $writer>setUseBOM(true); $writer>ذخیره ("05FeatureDemo. csv") ؛
نوشتن پرونده های CSV با رمزگذاری مورد نظر
می توان آن را با رمزگذاری که می تواند توسط MB_Convert_Encoding PHP مشخص شود ، خروجی کند. این مانند کد زیر به نظر می رسد:
$writer = new PhpOfficePhpSpreadsheetWriterCsv($spreadsheet); $writer>setUseBOM(false); $writer>setOutputEncoding('SJIS-WIN'); $writer>ذخیره ("05FeatureDemo. csv") ؛
اعشاری و هزاران جداکننده
اگر برگه ای که صادر می کنید حاوی شماره هایی با اعشاری یا هزاران جداکننده است ، باید قبل از انجام صادرات در مورد شخصیت هایی که می خواهید برای آنها استفاده کنید فکر کنید.
به طور پیش فرض phpspreadsheet در تنظیمات محلی سرور جستجو می کند تا تصمیم بگیرد از چه کاراکترهایی استفاده می شود. اما برای جلوگیری از مشکلات ، توصیه می شود کاراکترها را صریحاً مطابق شکل زیر تنظیم کنید.
کاربران انگلیسی می خواهند قبل از انجام صادرات از این کار استفاده کنند:
phpoffice phpspreadsheet shared stringhelper :: setDecimalSeparator ('.') ؛ phpoffice phpspreadsheet به اشتراک گذاشته شده stringHelper :: setThmsseSeparator ('،') ؛
کاربران آلمانی می خواهند از مقادیر مخالف استفاده کنند.
phpoffice phpspreadsheet shared stringhelper :: setDecimalSeparator ('،') ؛ phpoffice phpspreadsheet به اشتراک گذاشته شده stringHelper :: setThmsseSeparator ('.') ؛
توجه داشته باشید که کد فوق اعشاری و هزار جداکننده را به عنوان گزینه های جهانی تعیین می کند. این همچنین بر نحوه صادر شدن HTML و PDF تأثیر می گذارد.
HTML
phpspreadsheet به شما امکان می دهد تا یک صفحه گسترده را به عنوان فرمت HTML بخوانید یا بنویسید ، برای بازنمایی سریع داده های موجود در آن به هر کسی که یک برنامه صفحه گسترده در رایانه شخصی خود نداشته باشد ، یا بارگیری پرونده های ذخیره شده توسط اسکریپت های دیگر که به سادگی نشانه گذاری HTML را ایجاد می کنند و به آن می دهندپسوند پرونده . xls.
محدودیت های HTML لطفا توجه داشته باشید که قالب پرونده HTML در مورد سلول های یک ظاهر طراحی شده ، قالب بندی شماره ، محدودیت هایی دارد. همچنین ، فقط پرونده هایی با استفاده از charset utf-8 پشتیبانی می شوند.
phpoffice phpspreadsheet خواننده html
خواندن صفحه گسترده
شما می توانید یک پرونده . html یا . htm را با استفاده از کد زیر بخوانید:
$reader = new PhpOfficePhpSpreadsheetReaderHtml(); $spreadsheet = $reader>بار ("05featuredemo. html") ؛
محدودیت های HTML لطفا توجه داشته باشید که HTML Reader هنوز آزمایشی است و هنوز از سلولهای ادغام شده یا جداول تو در تو پشتیبانی نمی کند
phpoffice phpspreadsheet نویسنده html
لطفاً توجه داشته باشید که phpoffice phpspreadsheet نویسنده html فقط به طور پیش فرض اولین برگه را خروجی می کند.
نوشتن صفحه گسترده
می توانید با استفاده از کد زیر یک فایل . htm بنویسید:
$writer = new PhpOfficePhpSpreadsheetWriterHtml($spreadsheet); $writer>ذخیره ("05FeatureDemo. htm") ؛
همه برگه ها را بنویسید
پرونده های HTML می توانند حاوی یک یا چند برگه باشند. اگر می خواهید تمام برگه ها را در یک فایل HTML واحد بنویسید ، از کد زیر استفاده کنید:
$writer>writeallesheets () ؛
یک برگه خاص بنویسید
پرونده های HTML می توانند حاوی یک یا چند برگه باشند. بنابراین ، می توانید مشخص کنید که کدام برگه برای نوشتن به HTML:
$writer>setSheetIndex (0) ؛
تنظیم ریشه تصاویر پرونده HTML
ممکن است شرایطی وجود داشته باشد که بخواهید به صراحت ریشه تصاویر موجود را تنظیم کنید. به عنوان مثال ، به جای:
HTML
ممکن است بخواهید ببینید:
برای دستیابی به این نتیجه می توانید از کد زیر استفاده کنید:
$writer>SetImagesRoot ('http://www. example. com') ؛
پیش محاسبه فرمول
به طور پیش فرض ، این نویسنده تمام فرمول های موجود در صفحه گسترده را از قبل محاسبه می کند. این می تواند در صفحات گسترده بزرگ و شاید حتی ناخواسته کند باشد. با این حال می توانید فرمول قبل از محاسبه را غیرفعال کنید:
$writer = new PhpOfficePhpSpreadsheetWriterHtml($spreadsheet); $writer>setPreCalculateFormulas(false); $writer>ذخیره ("05FeatureDemo. htm") ؛
تعبیه HTML در یک صفحه وب
ممکن است شرایطی وجود داشته باشد که بخواهید HTML تولید شده را در یک وب سایت موجود جاسازی کنید. phpoffice phpspreadsheet نویسنده html پشتیبانی را برای تولید تنها قطعات خاص از کد HTML فراهم می کند ، که به شما امکان می دهد از این قسمت ها در وب سایت خود استفاده کنید.
- generatehtmlheader ()
- Generatyles ()
- GenatesHeetData ()
- generatehtmlfooter ()
- generatehtmlall ()
در اینجا مثالی آورده شده است که همه قطعات را به طور مستقل بازیابی می کند و آنها را در یک صفحه HTML حاصل می کند:
$writer = new PhpOfficePhpSpreadsheetWriterHtml($spreadsheet); $hdr = $writer>generateHTMLHeader(); $sty = $writer>Generatyles (نادرست) ؛// ننویس$ NewStyle = $ Sty Body EOF ؛echo preg_replace ('@@'، "$ newStyle n", $hdr); echo $writer>generateSheetData(); echo $writer>generatehtmlfooter () ؛
ویرایش HTML در هنگام ذخیره از طریق پاسخ به تماس
همچنین می توانید قبل از صرفه جویی در ویرایش HTML تولید شده ، یک عملکرد پاسخ به تماس اضافه کنید. به عنوان مثال ، می توانید خطوط خط را از یک خط سیاه و سفید نازک تغییر دهید:
تابع ChangeGridLines (رشته $ html): رشته $writer = new PhpOfficePhpSpreadsheetWriterHtml($spreadsheet); $writer>setEditHtmlCallback('changeGridlines'); $writer>ذخیره (نام پرونده $) ؛
اعشاری و هزاران جداکننده
به بخش phpoffice phpspreadsheet نویسنده csv نحوه کنترل ظاهر این موارد مراجعه کنید.
PDF
PhpsPreadSheet به شما امکان می دهد تا برای توزیع سریع داده های ارائه شده ، یک صفحه گسترده را به فرمت PDF بنویسید.
محدودیت های PDF لطفا توجه داشته باشید که فرمت فایل PDF در مورد سلول های یک ظاهر طراحی شده ، قالب بندی شماره ، محدودیت هایی دارد.
phpoffice phpspreadsheet نویسنده pdf
نویسنده PDF PHPSpreadSheet یک بسته بندی برای یک کتابخانه ارائه دهنده PDF با حزب سوم مانند TCPDF ، MPDF یا DOMPDF است. اکنون باید یک کتابخانه ارائه دهنده PDF را خودتان نصب کنید. اما phpspreadsheet با تعدادی از کتابخانه های مختلف کار خواهد کرد.
در حال حاضر ، از کتابخانه های زیر پشتیبانی می شود:
| کتابخانه | قابل بارگیری از | نویسنده phpspreadsheet |
| TCPDF | https://github. com/tecnickcom/tcpdf | TCPDF |
| mpdf | https://github. com/mpdf/mpdf | mpdf |
| dompdf | https://github. com/dompdf/dompdf | dompdf |
کتابخانه های مختلف نقاط قوت و ضعف متفاوتی دارند. برخی از آنها خروجی با فرمت بهتری نسبت به سایرین تولید می کنند ، برخی سریعتر یا از حافظه کمتری نسبت به سایرین استفاده می کنند ، در حالی که برخی از پرونده های . pdf کوچکتر تولید می کنند. این انتخاب توسعه دهندگان است که می خواهند از آنها استفاده کنند ، متناسب با شرایط خودشان.
شما می توانید یک نویسنده را با نام خاص خود فوری کنید ، مانند این:
$ نویسنده = phpoffice phpspreadsheet iofactory :: createwriter (صفحه گسترده $ ، "mpdf") ؛
یا می توانید از کدام نویسنده استفاده کنید که با یک نام عمومی تر استفاده می کنید ، بنابراین نیازی نیست به یاد داشته باشید کدام کتابخانه را انتخاب کرده اید ، فقط این که می خواهید پرونده های PDF را بنویسید:
$ class = phpoffice phpspreadsheet نویسنده pdf mpdf :: کلاس ؛ phpoffice phpspreadsheet iofactory :: RegisterWriter ('pdf' ، کلاس $) ؛$ نویسنده = phpoffice phpspreadsheet iofactory :: createwriter (صفحه گسترده $ ، "pdf") ؛
یا می توانید مستقیماً نویسنده مورد نظر خود را به طور مستقیم فوری کنید:
$ نویسنده = جدید phpoffice phpspreadsheet نویسنده pdf mpdf (صفحه گسترده $) ؛
اجرای سفارشی یا پیکربندی
در صورت نیاز به اجرای سفارشی یا پیکربندی سفارشی از یک کتابخانه PDF پشتیبانی شده. شما می توانید کتابخانه PDF و نویسنده PDF را مانند آن گسترش دهید:
کلاس MY_CUSTOM_TCPDF TCPDF را گسترش می دهدکلاس my_custom_tcpdf_writer گسترش می یابد phpoffice phpspreadsheet نویسنده pdf tcpdf> phpoffice phpspreadsheet iofactory :: RegisterWriter ('pdf' ، my_tcpdf_writer :: کلاس) ؛
نوشتن صفحه گسترده
هنگامی که رندر را که می خواهید برای تولید PDF استفاده کنید ، شناسایی کردید ، می توانید با استفاده از کد زیر یک فایل . pdf بنویسید:
$writer = new PhpOfficePhpSpreadsheetWriterPdfMpdf($spreadsheet); $writer>ذخیره ("05FeatureDemo. pdf") ؛
لطفاً توجه داشته باشید که phpoffice phpspreadsheet نویسنده pdf فقط به طور پیش فرض اولین صفحه کار را خروجی می کند.
همه برگه ها را بنویسید
پرونده های PDF می توانند حاوی یک یا چند صفحه کار باشند. اگر می خواهید تمام برگه ها را در یک فایل PDF واحد بنویسید ، از کد زیر استفاده کنید:
$writer>writeallesheets () ؛
یک برگه خاص بنویسید
پرونده های PDF می توانند حاوی یک یا چند صفحه کار باشند. بنابراین ، می توانید مشخص کنید که کدام برگه برای نوشتن به PDF:
$writer>setSheetIndex (0) ؛
تنظیم جهت گیری و مقالات
PhpsPreadSheet سعی خواهد کرد اگر رندر از آن پشتیبانی کند ، از جهت گیری و اندازه کاغذ مشخص شده در صفحه کار برای هر صفحه ای که چاپ می کند ، احترام بگذارد. با این حال ، شما می توانید تمام صفحات را برای داشتن جهت گیری و اندازه کاغذ یکسان تنظیم کنید ، به عنوان مثال
$writer>setOrientation ( phpoffice phpspreadsheet worksheet pageSetup :: جهت گیری_landscape) ؛
پیش محاسبه فرمول
به طور پیش فرض ، این نویسنده تمام فرمول های موجود در صفحه گسترده را از قبل محاسبه می کند. این می تواند در صفحات گسترده بزرگ و شاید حتی ناخواسته کند باشد. با این حال می توانید فرمول قبل از محاسبه را غیرفعال کنید:
$writer = new PhpOfficePhpSpreadsheetWriterPdfMpdf($spreadsheet); $writer>setPreCalculateFormulas(false); $writer>ذخیره ("05FeatureDemo. pdf") ؛
ویرایش PDF در حین ذخیره از طریق پاسخ به تماس
همچنین می توانید برای ویرایش HTML مورد استفاده برای تولید PDF قبل از صرفه جویی ، یک عملکرد پاسخ به تماس اضافه کنید. زیر HTML را ببینید.
اعشاری و هزاران جداکننده
به بخش phpoffice phpspreadsheet نویسنده csv نحوه کنترل ظاهر این موارد مراجعه کنید.
تولید پرونده های اکسل از قالب ها (بخوانید ، اصلاح کنید ، بنویسید)
خوانندگان و نویسندگان ابزاری هستند که به شما امکان می دهند پرونده های اکسل را از قالب ها تولید کنید. این امر به تلاش برای برنامه نویسی کمتری نسبت به تولید پرونده اکسل از ابتدا نیاز دارد ، به خصوص اگر الگوی شما دارای سبک های زیادی ، خصوصیات تنظیم صفحه ، هدرها و غیره باشد.
در اینجا مثالی آورده شده است که چگونه می توان یک فایل الگوی را باز کرد ، چند قسمت را پر کرد و دوباره آن را ذخیره کرد:
$spreadsheet = PhpOfficePhpSpreadsheetIOFactory::load('template.xlsx'); $worksheet = $spreadsheet>getActiveSheet(); $worksheet>getCell('A1')>setValue('John'); $worksheet>getCell('A2')>setValue('Smith'); $writer = PhpOfficePhpSpreadsheetIOFactory::createWriter($spreadsheet, 'Xls'); $writer>ذخیره ('نوشتن. xls') ؛
توجه کنید که بارگیری یک فایل XLSX و تولید یک فایل XLS اشکالی ندارد.
تولید پرونده های اکسل از محتوای HTML
اگر در حال ایجاد یک فایل اکسل از محتوای HTML از پیش ارائه شده هستید ، می توانید با استفاده از HTML Reader به طور خودکار این کار را انجام دهید. این کار در هنگام تولید پرونده های اکسل از محتوای برنامه وب که بارگیری و ارسال به کاربر می شود ، مفید است.
$ htmlstring = '
سلام دنیا |
سلام دنیا |
سلام دنیا |
'; $reader = new PhpOfficePhpSpreadsheetReaderHtml(); $spreadsheet = $reader>loadFromString($htmlString); $writer = PhpOfficePhpSpreadsheetIOFactory::createWriter($spreadsheet, 'Xls'); $writer>ذخیره ('نوشتن. xls') ؛
فرض کنید شما چندین برگه دارید که دوست دارید از HTML ایجاد کنید. این می تواند به شرح زیر انجام شود.
$ firstthtmlstring = '
'$ secondhtmlstring = '
'; $reader = new PhpOfficePhpSpreadsheetReaderHtml(); $spreadsheet = $reader>loadFromString($firstHtmlString); $reader>setSheetIndex(1); $spreadhseet = $reader>loadFromString($secondHtmlString, $spreadsheet); $writer = PhpOfficePhpSpreadsheetIOFactory::createWriter($spreadsheet, 'Xls'); $writer>ذخیره ('نوشتن. xls') ؛
پرچم های خواننده/نویسنده
برخی از خوانندگان و نویسندگان از "پرچم های ویژگی" ویژه پشتیبانی می کنند که باید صریحاً فعال شوند. نمونه ای از این نمودار در صفحه گسترده است. به طور پیش فرض ، هنگامی که یک صفحه گسترده را که شامل نمودارها است ، بارگذاری می کنید ، نمودارها بارگیری نمی شوند. اگر تمام کاری که اگر می خواهید انجام دهید این است که داده ها را در صفحه گسترده بخوانید ، بارگیری نمودارها برای سرعت بارگذاری و استفاده از حافظه یک سربار است. با این حال ، مواقعی وجود دارد که ممکن است بخواهید هرگونه نمودار را در صفحه گسترده و همچنین داده ها بارگیری کنید. برای انجام این کار ، شما باید به صراحت به خواننده بگویید که نمودارها را درج کند.
$reader = PhpOfficePhpSpreadsheetIOFactory::createReaderForFile("05featuredemo.xlsx"); $reader>setIncludeCharts(true); $reader>بار ("صفحه گسترده withcharts. xlsx") ؛
از طرف دیگر ، می توانید این مورد را در تماس برای بارگیری صفحه گسترده مشخص کنید:
$reader = PhpOfficePhpSpreadsheetIOFactory::createReaderForFile("spreadsheetWithCharts.xlsx"); $reader>LOAD ("صفحه گسترده withcharts. xlsx" ، $ خواننده :: load_with_charts) ؛
اگر می خواهید به جای فوری یک خواننده خاص ، از روش Iofactory Load () استفاده کنید ، هنوز هم می توانید این پرچم ها را منتقل کنید.
$ spreadsheet = phpoffice phpspreadsheet iofactory :: load ("spreadsheetwithcharts. xlsx" ، phpoffice phpspreadsheet خواننده ireader :: load_with_charts) ؛
پرچم هایی که در دسترس هستند که می توانند از این طریق به خواننده منتقل شوند عبارتند از:
به همین ترتیب ، هنگام صرفه جویی در پرونده با استفاده از نویسنده ، نمودارهای بارگذاری شده ذخیره نمی شوند مگر اینکه صریحاً به نویسنده بگویید که آنها را درج کند:
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer>setIncludeCharts(true); $writer>ذخیره ('MySavedFileWithCharts. xlsx') ؛
همانطور که با روش Load () ، می توانید پرچم ها را در روش ذخیره () عبور دهید:
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer>ذخیره ('MySavedFileWithCharts. xlsx' ، phpoffice phpspreadsheet نویسنده iwriter :: save_with_charts) ؛
پرچم هایی که در دسترس هستند که می توانند از این طریق به خواننده منتقل شوند عبارتند از:
ترکیب پرچم ها
یکی از مزایای پرچم ها این است که می توانید چندین پرچم را در یک تماس واحد عبور دهید. دو یا چند پرچم را می توان با استفاده از PHP |اپراتور.
$reader = PhpOfficePhpSpreadsheetIOFactory::createReaderForFile("myExampleFile.xlsx"); $reader>LOAD ("صفحه گسترده withcharts. xlsx" ، $ خواننده :: read_data_only | $ خواننده :: SKIP_EMPTY_CELLS) ؛
فارکس به زبان ساده...
ما را در سایت فارکس به زبان ساده دنبال می کنید
برچسب :
نویسنده : طاهره ایرانی
بازدید : <-PostHit->
تاريخ : سه
شنبه
3 مرداد
1402 ساعت: 11:25