وب آکادمی

مرجع آموزش طراحی و برنامه نویسی وب

استفاده از کلاس xlsxwriter در پی اچ پی برای تولید فایل اکسل

دسته بندی:مقالات فناوری و آموزشی تاریخ انتشار: 5 مهر 1397 برچسب ها : برچسب‌ها:,

در این قسمت کلاس خیلی مفیدی معرفی می کنیم که برای تولید فایل ها اکسل دارای چندین کاربرگ(sheet) استفاده می شود.

اغلب مواقع نیاز داریم تا رکوردهای اطلاعاتی را بصورت excel تولید کنیم. این کار دارای مزایای زیادی است ، می توان برای انتقال اطلاعات از یک نرم افزار به نرم افزار excel یا حتی نرم افزار دیگر ، از این فرمت استفاده کرد.

کلاس xlsxwriter

کلاس xlsxwriter برای ساخت خروجی اطلاعات با فرمت اکسل (xlsx) بکار می رود . با کمک این کلاس می توانید :

  • فایل های ساده اکسل با یک شیت بسازید.
  • فایل های اکسل با چندین شیت بسازید.
  • برای اطلاعات از فرمت های دلخواه استفاده کنید.
  • در تولید فایل اکس از رنگ ها استفاده کنید.
  • فایل های پیشرفته اکسل را تولید کنید.

مثال 1- ساخت فایل ساده اکسل

<?php
set_include_path( get_include_path().PATH_SEPARATOR."..");
include_once("xlsxwriter.class.php");

$header = array(
  'c1-text'=>'string',//text
  'c2-text'=>'@',//text
  'c3-integer'=>'integer',
  'c4-integer'=>'0',
  'c5-price'=>'price',
  'c6-price'=>'#,##0.00',//custom
  'c7-date'=>'date',
  'c8-date'=>'YYYY-MM-DD',
);
$rows = array(
  array('x101',102,103,104,105,106,'2018-01-07','2018-01-08'),
  array('x201',202,203,204,205,206,'2018-02-07','2018-02-08'),
  array('x301',302,303,304,305,306,'2018-03-07','2018-03-08'),
  array('x401',402,403,404,405,406,'2018-04-07','2018-04-08'),
  array('x501',502,503,504,505,506,'2018-05-07','2018-05-08'),
  array('x601',602,603,604,605,606,'2018-06-07','2018-06-08'),
  array('x701',702,703,704,705,706,'2018-07-07','2018-07-08'),
);
$writer = new XLSXWriter();

$writer->writeSheetHeader('Sheet1', $header);
foreach($rows as $row)
   $writer->writeSheetRow('Sheet1', $row);

//$writer->writeSheet($rows,'Sheet1', $header);//or write the whole sheet in 1 call

$writer->writeToFile('xlsx-simple.xlsx');
//$writer->writeToStdOut();
//echo $writer->writeToString();

مثال 2 – ساخت فایل خروجی اکسل با چند شیت

<?php
set_include_path( get_include_path().PATH_SEPARATOR."..");
include_once("../xlsxwriter.class.php");

$header = array(
    'year'=>'string',
    'month'=>'string',
    'amount'=>'price',
    'first_event'=>'datetime',
    'second_event'=>'date',
);
$data1 = array(
    array('2003','1','-50.5','2010-01-01 23:00:00','2012-12-31 23:00:00'),
    array('2003','=B2', '23.5','2010-01-01 00:00:00','2012-12-31 00:00:00'),
    array('2003',"'=B2", '23.5','2010-01-01 00:00:00','2012-12-31 00:00:00'),
);
$data2 = array(
    array('2003','01','343.12','4000000000'),
    array('2003','02','345.12','2000000000'),
);
$writer = new XLSXWriter();
$writer->writeSheetHeader('Sheet1', $header);
foreach($data1 as $row)
   $writer->writeSheetRow('Sheet1', $row);
foreach($data2 as $row)
   $writer->writeSheetRow('Sheet2', $row);

$writer->writeToFile('xlsx-sheets.xlsx');
//$writer->writeToStdOut();
//echo $writer->writeToString();

exit(0);

مثال 3 – ساخت فایل خروجی اکسل با ستون های فرمت دار

<?php
set_include_path( get_include_path().PATH_SEPARATOR."..");
include_once("xlsxwriter.class.php");

$sheet1header = array(
    'c1-string'=>'string',
    'c2-integer'=>'integer',
    'c3-custom-integer'=>'0',
    'c4-custom-1decimal'=>'0.0',
    'c5-custom-2decimal'=>'0.00',
    'c6-custom-percent'=>'0%',
    'c7-custom-percent1'=>'0.0%',
    'c8-custom-percent2'=>'0.00%',
    'c9-custom-text'=>'@',//text
);
$sheet2header = array(
    'col1-date'=>'date',
    'col2-datetime'=>'datetime',
    'custom-date1'=>'YYYY-MM-DD',
    'custom-date2'=>'MM/DD/YYYY',
    'custom-date3'=>'DD-MMM-YYYY HH:MM AM/PM',
    'custom-date4'=>'MM/DD/YYYY HH:MM:SS',
    'custom-date5'=>'YYYY-MM-DD HH:MM:SS',
    'custom-date6'=>'YY MMMM',
    'custom-date7'=>'QQ YYYY',
);
$sheet3header = array(
    'col1-dollar'=>'dollar',
    'col2-euro'=>'euro',
    'custom-amount1'=>'0',
    'custom-amount2'=>'0.0',//1 decimal place
    'custom-amount3'=>'0.00',//2 decimal places
    'custom-currency1'=>'#,##0.00',//currency 2 decimal places, no currency/dollar sign
    'custom-currency2'=>'[$$-1009]#,##0.00;[RED]-[$$-1009]#,##0.00',//w/dollar sign
    'custom-currency3'=>'#,##0.00 [$€-407];[RED]-#,##0.00 [$€-407]',//w/euro sign
    'custom-currency4'=>'[$¥-411]#,##0;[RED]-[$¥-411]#,##0', //japanese yen
    'custom-scientific'=>'0.00E+000',//-1.23E+003 scientific notation
);
$pi = 3.14159;
$date = '2018-12-31 23:59:59';
$amount = '5120.5';

$writer = new XLSXWriter();
$writer->setAuthor('Some Author');
$writer->writeSheetHeader('BasicFormats',$sheet1header);
$writer->writeSheetRow('BasicFormats',array($pi,$pi,$pi,$pi,$pi,$pi,$pi,$pi,$pi) );
$writer->writeSheetHeader('Dates',$sheet2header);
$writer->writeSheetRow('Dates',array($date,$date,$date,$date,$date,$date,$date,$date,$date) );
$writer->writeSheetHeader('Currencies',$sheet3header);
$writer->writeSheetRow('Currencies',array($amount,$amount,$amount,$amount,$amount,$amount,$amount,$amount,$amount) );
$writer->writeToFile('xlsx-formats.xlsx');
//$writer->writeToStdOut();
//echo $writer->writeToString();

echo '#'.floor((memory_get_peak_usage())/1024/1024)."MB"."\n";
exit(0);

مثال 4 –  ساخت فایل خروجی اکسل دارای قالب بندی

<?php
set_include_path( get_include_path().PATH_SEPARATOR."..");
include_once("xlsxwriter.class.php");
$writer = new XLSXWriter();
$styles1 = array( 'font'=>'Arial','font-size'=>10,'font-style'=>'bold', 'fill'=>'#eee', 'halign'=>'center', 'border'=>'left,right,top,bottom');
$styles2 = array( ['font-size'=>6],['font-size'=>8],['font-size'=>10],['font-size'=>16] );
$styles3 = array( ['font'=>'Arial'],['font'=>'Courier New'],['font'=>'Times New Roman'],['font'=>'Comic Sans MS']);
$styles4 = array( ['font-style'=>'bold'],['font-style'=>'italic'],['font-style'=>'underline'],['font-style'=>'strikethrough']);
$styles5 = array( ['color'=>'#f00'],['color'=>'#0f0'],['color'=>'#00f'],['color'=>'#666']);
$styles6 = array( ['fill'=>'#ffc'],['fill'=>'#fcf'],['fill'=>'#ccf'],['fill'=>'#cff']);
$styles7 = array( 'border'=>'left,right,top,bottom');
$styles8 = array( ['halign'=>'left'],['halign'=>'right'],['halign'=>'center'],['halign'=>'none']);
$styles9 = array( array(),['border'=>'left,top,bottom'],['border'=>'top,bottom'],['border'=>'top,bottom,right']);
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles1 );
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles2 );
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles3 );
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles4 );
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles5 );
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles6 );
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles7 );
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles8 );
$writer->writeSheetRow('Sheet1', $rowdata = array(300,234,456,789), $styles9 );
$writer->writeToFile('xlsx-styles.xlsx');

دریافت لیست کامل مثال های قابل اجرا و کلاس xlsxwriter

یک پاسخ به “استفاده از کلاس xlsxwriter در پی اچ پی برای تولید فایل اکسل”

  1. قائم علی آبادی گفت:

    فوق العاده بود و به شدت کارم رو جلو انداخت، ممنونم 🙂

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هفده + بیست =