وباکا

آموزش تخصصی برنامه نویسی وب

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

در این قسمت کلاس خیلی مفیدی معرفی می کنیم که برای تولید فایل ها اکسل دارای چندین کاربرگ(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

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

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

فهرست مطالب