دریافت خروجی اکسل در php

  • آپدیت شده در تاریخ

دریافت خروجی اکسل در php

امروز قصد داریم به شما روش دریافت خروجی اکسل در php از آرایه و mysql را نشان بدیم.

دریافت خروجی از داده ها یک قابلیت بسیار کاربردی برای ذخیره داده ها به صورت لیست شده و ذخیره آن بر روی کامپیوتر شخصی برای استفاده های آفلاین است . قابلیت گرفتن خروجی از داده ها , برنامه تحت وب شما را بسیار کاربر پسند می کند و به کاربر یا مدیران سایت و سیستم احازه لیست کردن اطلاعات را می دهد .

اکسل (Excel) یکی از بهترین فرمت ها برای گرفتن خروجی در یک فایل است و شما به راحتی می توانید در برنامه های تحت وب به ساخت فایل اکسل با php بپردازید .

در این آموزش , به شما نحوه دریافت خروجی اکسل در php از داده های آرایه ای یا دیتابیس MySQL را نشان می دهیم.  با اسکریپت php ما به راحتی می توانید قابلیت گرفتن خروجی با فرمت اکسل (excel) را پیاده سازی کنید . با یک کلیک , کاربر یا مدیر سایت می توانید داده ها را با خروجی اکسل دریافت و آن را در قالب فایل .xls دانلود کند.

دریافت خروجی اکسل در php از آرایه ها

در این بخش قصد دریافت خروجی اکسل از داده آرایه ای ($data) را داریم .

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

یک تابع به نام filterData() ساختیم که برای فیلتر رشته های ذخیره شده در آرایه از آن بهره خواهیم برد .

در کد php زیر , متغیر $fileName اسم فایل برای دانلود را نگه داری می کند و همچنین محتویات هدر header برای اجبار دانلود فایل , تعریف شده اند .

حالا یک حلقه برای هریک از جفت کلید/مقادیر در $data اجرا می کنیم . با استفاده از متغیر $flag ما اسم ها ستون را به عنوان اولین سطر نمایش می دهیم . تابع array_walk() برای فیلتر داده های باهم در تابع filterData() استفاده شده است .

حالا اسکریپت کامل دریافت خروجی اکسل در php را در زیر میبینید .

دریافت خروجی اکسل در php از دیتابیس MySQL

برای استخراج داده MySQl به Excel توسط زبان PHP به صورت زیر عمل می کنیم .

در کد بالا ابتدا اتصال به پایگاه داده را تغییر داده جدول مورد نظر را از پایگاه داده را مشخص نمایید.توسط متغیر connect به پایگاه داده متصل می شوید.(نحوه اتصال به دیتابیس mysql در php)

در قسمت بعد header را جوری تنظیم می نماییم تا نام فایل و خروجی فایل که اکسل excel می باشد مشخص شود.بعد از آن رکوردها را یکی یکی از پایگاه داده خوانده و در خروجی فایل می نویسد.

دریافت خروجی اکسل در php

استفاده از کتابخانه PHPExcel برای گرفتن خروجی اکسل

روش آخر استفاده از کتابخانه قدرتمند PHPExcel هستش که باید آن را به صورت جداگانه از github دانلود و در پروژه خود استفاده کنید . نحوه پیاده سازی آن به دلیل شی گرایی بودن کد ها بسیار آسان است کافیست از کد های نمونه در فولدر examples استفاده کرده و قدم به قدم اون رو در پروژه خود پیاده سازی کنید

از این کتابخانه بیشتر برای import کردن داده ها از فایل excel به دیتابیس mysql استفاده می کنیم.

 

مثال وارد کردن (import) فایل Excel به دیتابیس MySQL

 

جمع بندی

دریافت خروجی اکسل در php بسیار مفید و کاربردی است بخصوص اگر قصد تبادل اطلاعات بین پلتفرم های مختلف یا برنامه های مختلف حسابداری و اداری را دارید .

از این پس با آموزش های بالا و کد های php می توانید به راختی این قابلیت را در اپلیکیشن های تحت وب خود پیاده سازی کنید

برای دریافت سورس کد آموزش دریافت خروجی اکسل در php به همراه فایل SQL به باکس دانلود مراجعه کنید.

هر سوالی در پیاده سازی کدها داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید.

حسن شفیعی علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم

آموزش های رایگان بیشتر در اینستاگرام ما ...

NETPARADIS /
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۴۲)

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

  1. امیر ۱۹ شهریور ۱۳۹۹

    سلام
    می خواستم از طریق php فایل excel رو به شکلی تولید کنم که در یکی از cellها یک لینک هایپر داشته باشم که فایل یا آدرس اینترنتی رو باز کنه.
    اگر راهنمایی کنید ممنون میشم

    پاسخ
    1. حسن شفیعی ۱۹ شهریور ۱۳۹۹

      سلام.
      درخواست شما بررسی میشه

      پاسخ
  2. محمد رفیعی فرد ۴ مرداد ۱۳۹۹

    سلام ببخشید من یک مشکل دارم اگر میشه حل کنید 🙂
    ۱) چرا توی اکسل همه ستون هارو توی یک رشته می اورد
    ۲)کلمات یا اعداد فارسی را علامت سوال می نویسد
    ۳)و همینطور تمام اطلاعاتی که دریافت می شود به شکل رشته است
    ممنون میشم اگر به سوال من پاسخ دهید (لطفا پاسخ خود را با شماره بیان کنید که من بفهمم کدام جواب مال کدام سوال است)
    محمد رفیعی فرد

    پاسخ
  3. برنامه نویس ۱۸ خرداد ۱۳۹۹

    سلام
    مطلب خوبی هست ولی چرا فارسی ها رو به صورت نا مفهوم میذاره توی فایل؟؟
    بجای اینکه بنویسه سلام اینو تحویل من داده سلام 😂
    از دیتابیس درست میخونه(وقتی vardump می گیرم همه چی رو درست نشون میده اما توی فایل اینطوری میشه!!)

    پاسخ
    1. حسن شفیعی ۱۸ خرداد ۱۳۹۹

      سلام. خوشحالیم که مفید واقع شده.
      اگر از کدهای این بخش دریافت خروجی اکسل در php از دیتابیس MySQL استفاده می کنید باید اوکی باشه چون در کدنهایی میبینید که از utf8 استفاده کردیم و همه چیز باید بصورت درست در فایل ایجاد شده اکسل نمایش داده بشه.

      پاسخ
  4. learner ۳۰ فروردین ۱۳۹۹

    سلام.ممنون از آموزشتون
    یه سوال داشتم ممنون میشم پاسخ بدید.اینکه هر نوع فایل اکسلی رو میشه ایمپورت کرد؟مثلا فایلی که داده هاش از فرمول بدست میان و فرمول ها در یک شیت مجزا نوشته شده. و اینکه آیا میشه همه اکسل رو ایمپورت نکنیم و مثلا تنها چنتا ستون از یک فایل اکسل رو ایمپورت کنیم.

    پاسخ
    1. حسن شفیعی ۳۰ فروردین ۱۳۹۹

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

      پاسخ
  5. مزرجی ۱۷ فروردین ۱۳۹۹

    با سلام ممنون از لطف شما عالی بود
    لطفا آموزش Import کردن اکسل به ارایه رو هم اگر مقدور است بگذارید
    با تشکر

    پاسخ
    1. حسن شفیعی ۱۷ فروردین ۱۳۹۹

      سلام خوشحالیم که مفید واقع شده.
      بسیار ساده هست و کمی اگر روی کدها کار کنید مطمینا خروجی خوبی میگیرید. اگر هم حین انجام مشکل داشتید میتونید اینجا اعلام کنید راهنمایی میشه.
      موفق باشید.

      پاسخ
  6. شبنم ۱۴ اسفند ۱۳۹۸

    باسلام و ممنون از سایت بسیار مفیدتون
    من از این کد استفاده می کنم.مشکلی که هست اینه که من یک ستون تاریخ دارم در جدولم به شکل:۲۰۲۰/۲/۲۷ برای مثال. ولی در خروجی اکسل بهم به صورت#### نمایش میده این ستون رو.پیشاپیش ممنون از راهنماییتون.

    پاسخ
    1. حسن شفیعی ۱۵ اسفند ۱۳۹۸

      سلام. خوشحالیم که مفید واقع شده.
      همینک تست و خروجی دریافت شد. چنین مشکلی با تاریخ ها وجود ندارد. دقت کنید که تست ما روی تاریخ ذخیره شده با اعداد لاتین بود و اعداد فارسی ممکن است این مشکل رو داشته باشند.
      به هر حال روش حل برای اینکه با اعداد فارسی این مشکل رو نداشته باشید. در کد مورد نظر این خط
      echo chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $columnHeader . "\n" . $setData . "\n");
      رو به
      echo $columnHeader . "\n" . $setData . "\n";
      تغییر بدید تا مشکل حل بشه
      موفق باشید.

      پاسخ
  7. امیرحسین آقاجانی ۳۰ بهمن ۱۳۹۸

    با سلام، خیلی ممنون از آموزش خوبتون.
    فقط میشه یاد بدین چطوری میشه اخرین خونه، جمع کل را اضافه کرد ؟

    پاسخ
    1. حسن شفیعی ۳۰ بهمن ۱۳۹۸

      سلام. خوشحالیم که مفید واقع شده.
      در هر دو مثال که از php خالص استفاده کردیم. در یکی داده ها را از آرایه و دیگری از دیتابیس خواندیم.
      برای بدست آوردن جمع آنها می توانید از تابع count() استفاده کنید و در نهایت در خروجی که داخل حلقه foreach اکو و در دیگری داخل حلقه while ایمپلود می شود می توانید مقدار خروجی count() را اضافه کنید.
      موفق باشید.

      پاسخ
      1. امیرحسین آقاجانی ۱ اسفند ۱۳۹۸

        خیلی ممنونممم

        پاسخ
  8. شهرام ۲۴ دی ۱۳۹۷

    درود بر شما
    از کجا می تونم دریافت کنم؟

    پاسخ
    1. حسن شفیعی ۲۴ دی ۱۳۹۷

      سلام. همانطور که در پاسخ قبلی گفته شد, یک مثال از کتابخانه PHPExcel به این پست اضافه شد.
      موفق باشید.

      پاسخ
  9. شهرام ۲۳ دی ۱۳۹۷

    واقعا کارم راه افتاد، ممنونم.
    ای کاش یک آموزش مقدماتی استفاده از کتابخانه Excel php هم قرار بدید. شامل روش تعریف کردن کلاس و بررسی یکی از مثالهای کتابخانه
    ممنون

    پاسخ
    1. حسن شفیعی ۲۳ دی ۱۳۹۷

      سلام. مثال ایمپورت کردن فایل اکسل به یکی از جداول دیتابیس با PHPEXcel اضافه شد.

      موفق باشید.

      پاسخ
  10. شهرام ۲۲ دی ۱۳۹۷

    سلام
    ممنون از آموزش خوبتون
    در کد پایانی اگه بخوام بجای دانلود فایل اکسل، اون رو در هاست ذخیره کنم چی کار باید بکنم؟

    پاسخ
    1. حسن شفیعی ۲۲ دی ۱۳۹۷

      سلام. خوشحالم که مفید واقع شده.
      ابتدا دستور های header را کامنت کنید و به جای echo کردن از تابع file_put_contents برای ذخیره در فایل بهره ببرید.

      file_put_contents(‘myfile.xls’, chr(255).chr(254).iconv(“UTF-8”, “UTF-16LE//IGNORE”, $columnHeader . “\n” . $setData . “\n”), FILE_APPEND);

      موفق باشید.

      پاسخ
      1. امیرحسین آقاجانی ۱ اسفند ۱۳۹۸

        امکانش هست این تیکه کد را برای مثالی که از php خالص استفاده کردین رو هم آموزش بدین ؟
        من اومدم تو اون مثال آرایه هامو تو آرایه اصلی اینطوری تعریف کردم:
        $newArray = array(
        ‘ردیف’ => $key,
        “شرح” => $info,
        “خرج” => $kharj,
        “دریافتی” => $daryafti,
        );
        array_push($data, $newArray);
        چطوری با دستور بالا که لطف کردین، سیوش کنیم؟
        خیلی ممنونم…

        پاسخ
      2. حسن شفیعی ۱ اسفند ۱۳۹۸

        این کدی که ارسال کردید اوکی هست و اگر به مثال اولی “دریافت خروجی اکسل در php از آرایه ها” اضافه کنید در خروجی اکسل نمایش داده میشه.

        پاسخ
  11. مهدی ۲۲ آذر ۱۳۹۷

    این کار ها رو کردم

    منظورم قسمت بدنه اصلی کد بود.

    اتصالات و جدول ها رو اصلاح کردم.

    خروجی فارسی مشکل داشتم با PHP 7

    پاسخ
    1. حسن شفیعی ۲۲ آذر ۱۳۹۷

      با php نسخه ۷ تست نکردیم . در این مورد جستجو کنید در سایت هایی مثل stackoverflow میتونید جواب سوالتون رو پیدا کنید.

      پاسخ
  12. مهدی ۱۹ آذر ۱۳۹۷

    سلام . من عینا کد شما رو کپی کردم فقط آدرس اتصال دیتابیس رو تنظیم کردم.

    هم کاراکتر های فارسی بهم خورد و هم اکسل دانلود شده اصلا هدر ستون نداشت

    پاسخ
    1. حسن شفیعی ۲۰ آذر ۱۳۹۷

      سلام. علاوه بر اطلاعات اتصال به دیتابیس نیاز است در کویری نام جدول رو هم تغییر بدید و همچنین در $columnHeader نام ستون های جدول رو لحاظ کنید.
      موفق باشید.

      پاسخ
  13. فرزاد ۱۳ آذر ۱۳۹۷

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

    پاسخ
    1. حسن شفیعی ۱۳ آذر ۱۳۹۷

      همانطور که خدمتتون گفته شد مشکل اصلی نداشتن ساختار مناسب فایل خروجی است که به احتمال زیاد هم داده ها و ستون ها درست چیده نشدن که حتما نیازه که هی تست و باگ یابی کنید تا نهایتا مشکل حل بشه و از اینجا نمیشه راهنمایی بیشتری ارایه داد.
      موفق باشید.

      پاسخ
  14. فرزاد ۱۳ آذر ۱۳۹۷

    سلام. ممنونم
    اما من وقتی از نمونه کدهای خود phpexcel هم استفاده میکنم. بعد از دانلود شدن فایل اکسل وقتی میخوام بازش کنم خطا میده. یعنی نمونه کد رو بدون هیچ دستکاری خاصی.
    خطای excel cannot open file

    پاسخ
    1. حسن شفیعی ۱۳ آذر ۱۳۹۷

      سلام. احتمالا عملیات قرار گیری داده ها به درستی انجام نشده که بهتره داده ها و اتصال mysql و همچنین مچ بودن اونها با فیلدها و تعداد فیلدهای مشخص شده در اسکریپت یکسان باشه . با بررسی و رفع این موارد مشکل حل میشه .
      موفق باشید.

      پاسخ
  15. رضاکیامنش ۱۱ تیر ۱۳۹۷

    عالی بود مررررسی

    پاسخ
    1. حسن شفیعی ۱۲ تیر ۱۳۹۷

      خوشحالم که مفید واقع شده . موفق باشید.

      پاسخ
  16. محسن ۸ خرداد ۱۳۹۷

    سلام.درمورد استایل دهی فایل اکسل اصلا صحبت نشده.اگه میشه یه مثال بزنید

    پاسخ
    1. حسن شفیعی ۸ خرداد ۱۳۹۷

      سلام . استایل خاصی نیاز نیست . هر چه قدر ستون در فایل اکسل دارید را همان مقدار در متغییر $columnHeader طبق فرمتی که داره قرار میدید و همچنین ستون های دیتابیس رو هم به همان تعداد می سازید.

      موفق باشید.

      پاسخ
      1. محسن ۹ خرداد ۱۳۹۷

        بله.منظورم چیز دیگه ای هست.مثلا اینکه بخوام دو تا سلول merge بشه یا رنگ سلول تغییر کنه و …
        یا اینکه صفحه اکسل right to left بشه.خیلی لازم دارم همچین چیزی رو.اگه میشه یه راهنمایی بکنید

        پاسخ
      2. حسن شفیعی ۹ خرداد ۱۳۹۷

        کتابخانه PHPExcel رو چک کنید احتمالا همچین قابلیتی رو داره .

        موفق باشید.

        پاسخ
      3. محسن ۹ خرداد ۱۳۹۷

        میشه آموزش این کتابخونه رو بذارید ؟یا حداقل منبعشو بذارید ؟

        پاسخ
      4. حسن شفیعی ۹ خرداد ۱۳۹۷

        سلام . از طریق گیت هاب میتونید دریافت کنید. البته این نسخه https://github.com/PHPOffice/PHPExcel دیگه پشتیبانی نمیشه و همان تیم توسعه دهنده ورژن جدید از اون به نام
        PhpSpreadsheet
        رو منتشر کردند که از لینک زیر قابل دسترسه .
        https://github.com/PHPOffice/PhpSpreadsheet

        موفق باشید.

        پاسخ
  17. شمس العلما ۱۱ بهمن ۱۳۹۶

    درود من از پی اچ پی خروجی اکسل میگیرم ولی خروجی زبانهای فارسی را بهم ریخته نمایش میدهد و باید با نت پد آن را کودینگ کنم تا درست شود راهی هست که مستقیم اطلاعات را صحیح نمایش دهد . سپاسگزارم

    پاسخ
    1. حسن شفیعی ۱۱ بهمن ۱۳۹۶

      سلام . بهتر است از کتابخانه PHPExcel استفاده کنید که بدون هیچ تداخل و مشکلی خروجی اکسل رو دریافت کنید که ما هم در پروژه هایی که مینویسیم از این لایبرری بهره می بریم.

      موفق و پیروز باشید

      پاسخ
  18. محمد ۷ آذر ۱۳۹۶

    سلام
    کد زیر در زمان خروجی متون فارسی بانک را به شکل نادرست نمایش می دهد . کجای کد ایراد داره؟؟؟
    set_charset(“utf8″);

    $setRec = mysqli_query($conn, $query_m);

    $columnHeader = ”;
    $columnHeader = “ردیف” . “\t” . “نام” . “\t” . “نام خانوادگی” . “\t”. “نام پدر” . “\t”. “کد ملی” . “\t”. “تاریخ تولد” . “\t”. “جنسیت” . “\t”. “پایه تحصیلی” . “\t”. “استان” . “\t”. “شهرستان” . “\t”. “مدرسه” . “\t”. “مراحل” . “\t”. “تاریخ عضویت” . “\t”;

    $setData = ”;

    while ($rec = mysqli_fetch_row($setRec)) {
    $rowData = ”;
    foreach ($rec as $value) {
    $value = ‘”‘ . $value . ‘”‘ . “\t”;
    $rowData .= $value;
    }
    $setData .= trim($rowData) . “\n”;
    }

    header(“Content-type: application/octet-stream”);
    header(“Content-Disposition: attachment; filename=User_Detail_Reoprt.xls”);
    header(‘Content-Transfer-Encoding: binary’);
    header(“Pragma: no-cache”);
    header(“Expires: 0”);

    echo chr(255).chr(254).iconv(“UTF-8”, “UTF-16LE//IGNORE”, $columnHeader . “\n” . $setData . “\n”);

    exit()

    ?>

    پاسخ
    1. حسن شفیعی ۷ آذر ۱۳۹۶

      سلام . charset رو هنگام اتصال به دیتابیس به صورت صحیح ست نکردید

      این خط

      $conn->set_charset("utf8");

      را بعد از اتصال به دیتابیس ویا همان قبل از اجرای کویری sql خود اضافه کنید , مشکل حل میشه (در کد شما قبل از $setRec = mysqli_query($conn, $query_m); باید اضافه شه)

      موفق باشید

      پاسخ
دوره های آموزشی

دانلود رایگان کتاب آموزش PHP

صفر تا صد PHP و MySQL را یکجا یاد بگیرید
همین الان دانلود کن
نگران نباشید. ایمیل‌های مزاحم نمی‌فرستیم
close-link