آخرين پست هاي ارسالي انجمن ايران دلفي

تماشای رایگان فیلم ایرانی ، خارجی و کودک آکادمی دلفی
نمایش نتایج: از 1 به 1 از 1

موضوع: آموزش ایمپورت از فایل اکسل به MySql و اکسپورت از MySql به فایل اکسل

Threaded View

  1. #1
    مدیرکل سایت admin آواتار ها
    تاریخ عضویت
    September 2008
    محل سکونت
    تهران ، آیسک
    سن
    39
    نوشته ها
    522
    تشکر ها
    247
    تشکر شده 250 بار در 160 ارسال.
    Blog Entries
    1

    آموزش ایمپورت از فایل اکسل به MySql و اکسپورت از MySql به فایل اکسل

    با سلام خدمت تمامی کاربران عزیز.


    بنا به درخواست یکی از کاربران ، در این آموزش نحوه ایمپورت کردن از فایل اکسل به MySql وهمچنین اکسپورت کردن از MySql به فایل اکسل را خدمت شما دوستان ارائه میکنم .



    توضیحات :


    کدها در محیط localhost نوشته شده است.

    در این آموزش جهت خواندن و نوشتن فایل اکسل از کلاس PHPExcel استفاده شده است .

    در این آموزش همچنین خواهید آموخت :

    • روش های ارسال اطلاعات از طریق متدهای POST و GET
    • نحوه آپلود فایل و ذخیره در سرور
    • روش دانلود فایل توسط مرورگر
    • تولید کد خطای مناسب برای کاربر
    • سوییچ بین صفحات مختلف با تگ A
    • ارسال اطلاعات بین صفحات مختلف توسط متد GET





    ساخت دیتابیس



    ابتدا یک دیتابیس با نام db در phpmyadmin ایجاد کرده و کد اسکریپت زیر را جهت ساخت جدول مربوطه در تب sql کپی و آنرا اجرا میکنیم (go)

    کد PHP:
    -- phpMyAdmin SQL Dump
    -- version 4.1.12
    -- http://www.phpmyadmin.net
    --
    -- 
    Host127.0.0.1
    -- Generation TimeJan 212018 at 06:02 AM
    -- Server version5.6.16
    -- PHP Version5.5.11

    SET SQL_MODE 
    "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone "+00:00";


    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;

    --
    -- 
    Database: `db`
    --

    -- --------------------------------------------------------

    --
    -- 
    Table structure for table `tbl_test`
    --

    CREATE TABLE IF NOT EXISTS `tbl_test` (
      `
    idint(11NOT NULL AUTO_INCREMENT,
      `
    first_namevarchar(150COLLATE utf8_persian_ci NOT NULL,
      `
    last_namevarchar(150COLLATE utf8_persian_ci NOT NULL,
      `
    emailvarchar(150COLLATE utf8_persian_ci NOT NULL,
      `
    birthdayvarchar(150COLLATE utf8_persian_ci NOT NULL,
      `
    cityvarchar(150COLLATE utf8_persian_ci NOT NULL,
      `
    countryvarchar(150COLLATE utf8_persian_ci NOT NULL,
      `
    addressvarchar(150COLLATE utf8_persian_ci NOT NULL,
      
    PRIMARY KEY (`id`)
    ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=;

    --
    -- 
    Dumping data for table `tbl_test`
    --

    INSERT INTO `tbl_test` (`id`, `first_name`, `last_name`, `email`, `birthday`, `city`, `country`, `address`) VALUES
    (1'alireza''azadi''a_azadi1984@yahoo.com''1984''bandar abbas''iran''golshahr'),
    (
    2'hassan''bahrami''h.bahrami@gmail.com''1989''bandar abbas''iran''golshahr'),
    (
    3'mohamad''beiranvand''m.beiranvand@yahoo.com''1989''bandar abbas''iran''unknow'),
    (
    4'mohsen''safari''m.safari@yahoo.com''1985''bandar abbas''iran''unknow');

    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */

    فایل کانکشن :


    بعد از ایجاد جدول tbl_test یک فایل بنام cnn.php ایجاد کرده و کدهای زیر را درون آن کپی میکنیم . این فایل ارتباطمون را با دیتایس برقرار میکنه .

    نکته : بجای نام کاربری و پسورد در کد زیر نام کاربری و پسورد دیتابیس خودتون رو قرار دهید .

    کد PHP:
    <?php

    date_default_timezone_set
    ("Asia/Tehran");

    $host 'localhost';
    $db_name 'db';
    $db_user 'نام کاربری دیتابیس';
    $db_pass 'پسورد دیتابیس';


    $pdo = new PDO("mysql:host={$host};dbname={$db_name}"$db_user$db_pass);


    ?>
    فایل واسط برای آپلود فایل توسط کاربر جهت ایمپورت

    یک فایل با نام import.php ایجاد و کدهای زیر را در آن کپی میکنیم

    این فایل واسط کاربریمون برای آپلود فایل توسط کاربر و خواندن فایل فوق و ایمپورت (وارد کردن) آن به دیتابیس هست.

    کد PHP:
    <?php
        
    if(isset($_GET['template']))
        {
            
    $file './template.xlsx';

            
    header("Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");        
            
    header("Content-Disposition: attachment; filename="basename($file));
            
    header("Content-Length: " filesize($file));
            
    header("Pragma: no-cache");
            
    header("Expires: 0");
            
    readfile$file );
        }
    ?>
        
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="Description" content="import to excel">
    <meta name="Keywords" content="import, xlsx, excel">
    <meta name="author" content="a.azadi">

        
    <title>Untitled Document</title>


    <style>
        
        *{margin: 0;padding: 0;}
        
        .container{ margin: auto;position: absolute;top: 0;bottom: 0;left: 0;right: 0;width: 50%;height: 40%;}
        
        #imp_sec form{line-height: 25px;}
        
        a{text-decoration: none;}
        
    </style>

    </head>

    <body>


        
    <div class="container" >
        
        <div id="imp_sec">

            <div style="text-align: center;">
            <?php
                
    if(isset($_GET['code']))
                {
                    
    $msg '';
                    switch(
    $_GET['code'])
                    {
                        case 
    100:

                            
    $msg 'file import successfully';                            
                            break;

                        case 
    110:

                            
    $msg 'error : unknow error in upload file';                            
                            break;

                        case 
    120:

                            
    $msg 'error : file extension is not valid';
                            break;


                        case 
    130:

                            
    $msg 'error : file size is not valid / maximum 5mb';
                            break;

                        case 
    140:

                            
    $msg 'error : File not uploaded';
                            break;

                        case 
    150:

                            
    $msg 'error : File not uploaded';
                            break;

                        case 
    200:

                            
    $msg 'error : the excel library not found';
                            break;

                        case 
    210:

                            
    $msg 'error : input file name is not valid';
                            break;

                        default:

                            
    $msg 'error :  unknow error';
                            break;                            

                    }

                    
    $color = ($_GET['code'] == 100) ? '#008000' '#f00';
                    echo 
    "<p style='color:{$color};padding:20px 10px;font-size:18px;text-transform: capitalize;'>{$msg}</p>";
                }            
            
    ?>
            </div>

            <fieldset style="border-radius: 4px;padding: 0 10px;">
                <legend style="padding: 0 10px;">import from file</legend>

                <form action="run_import.php" method="post" enctype="multipart/form-data" name="frm_imp" style="padding: 40px 25px;">

                    <span style="color: #f00;font-size: 12px;line-height: 35px;">Allowed files : xls , xlsx</span>

                    <div>
                        <input type="file" name="file">
                    </div>

                    <a href="?template=1">template</a>

                    <div style="float: right;margin-top: 15px;">
                        <button style="padding:2px 10px;">Import</button>
                    </div>

                </form>

            </fieldset>

        </div>

        <div style="float: right;">
            <a href="export.php" style="padding:0 10px; " >goto export to file</a>
        </div>
        
    </div>
        
    </body>

    <script>
        
    </script>
        
    </html>


    فایل دریافت و خواندن فایل کاربر و دستورات ذخیره سازی

    یک فایل با نام run_import.php ایجاد و کدهای زیر را در آن قرار میدهیم .

    کد PHP:
    <?php

    require_once('cnn.php');

    $excel_library_path 'PHPExcel/Classes/PHPExcel/IOFactory.php';

    if( ! 
    file_exists($excel_library_path))
    {
        
    header('Location:import.php?code=200');
        exit();
    }

    require_once(
    $excel_library_path);


    if ( ! isset(
    $_FILES['file']))
    {
        
    header('Location:import.php?code=210');
        exit();
    }


    $file $_FILES['file'];

    $file_name $file['name'];
    $file_type $file['type'];
    $file_err $file['error'];
    $file_size $file['size'];
    $file_tmp $file['tmp_name'];


    if(
    $file_err)
    {
        
    header('Location:import.php?code=110');
        exit();
    }


    $ext pathinfo($file_namePATHINFO_EXTENSION);
    $ext strtolower($ext);


    if( ! 
    in_array($ext, array('xls','xlsx')))
    {
        
    header('Location:import.php?code=120');
        exit();        
    }


    if(
    $file_size 50000)
    {
        
    header('Location:import.php?code=130');
        exit();        
    }


    $target_dir "uploads/";
    $target_file $target_dir basename($file_name);


    $valid true;
    if( ! 
    is_dir($target_dir))
    {
        
    $valid mkdir($target_dir,'0755');
    }


    if ( ! (
    $valid && move_uploaded_file($file_tmp$target_file)))
    {
        
    header('Location:import.php?code=140');
        exit();
    }


    $file $target_file;


    $objPHPExcel PHPExcel_IOFactory::load($file);

    $sheet $objPHPExcel->getSheet(0);

    $total_rows $sheet->getHighestRow();

    $total_columns $sheet->getHighestColumn();


    $fields = array('first_name' 'last_name''email''birthday''city''country''address');


    $sql "insert into tbl_test ";

    $sql .= '(`'.implode('`,`' $fields).'`)';

    $sql .= 'values ('.rtrim(str_repeat('?,'count($fields)), ',').')';


    $stmt $pdo->prepare($sql);


    $error false ;

    for(
    $row 2$row <= $total_rows$row++)
    {    
        
    $row_data $sheet->rangeToArray('A' $row ':' $total_columns $rowNULLTRUEFALSE);
        
        
    $res = @$stmt->execute($row_data[0]);
        
        if( ! 
    $res)
        {
            
    $error true;
        }
        
    }

    unlink($target_file);


    if(
    $error)
    {
        
        
    header('Location:import.php?code=150');
        exit(
    $res);
    }


    header('Location:import.php?code=100');
    exit();


    ?>

    فایل واسط نمایش اطلاعات درون دیتابیس

    یک فایل با نام export.php ایجاد کرده و کدهای زیر را درون آن کپی میکنیم

    این فایل اطلاعات درون جدول tbl_test که ایجاد کردیم را نمایش ودر صورت نیاز از آن خروجی اکسل میگیریم .
    کد PHP:
    <?php require_once('cnn.php'); ?>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="Description" content="export to excel">
    <meta name="Keywords" content="export, xlsx, excel">
    <meta name="author" content="a.azadi">


    <title>Untitled Document</title>


    <style>
        
        *{margin: 0;padding: 0;}
        
        html,body
        {
           margin:0;
           padding:0;
           height:100%;
        }
        
        .header{width: 100%;background-color: #B7C4ED;height: 50px;}
        
        
        .container{ margin: auto;position: absolute;top: 0;bottom: 0;left: 0;right: 0;width: 80%;height: 90%;}
        
        
        .footer{width: 100%;background-color: #B7C4ED;height: 50px;}
        
        .tbl{table-layout: fixed;border-collapse: collapse;}
        .tbl td, .tbl th {border: 1px solid #333;height: 25px;line-height: 25px; text-align: center;padding: 0 5px;white-space:  nowrap;}
        .tbl thead tr:nth-child(1){background-color: #CFBCFF;}
        .tbl tbody tr:nth-child(even){background-color: #f4feff;}
        .tbl tbody tr:nth-child(odd){background-color: #fffded;}
        
        .tbl th {color:#1D4B7B;text-transform: capitalize;}
        
        
        a{text-decoration: none;text-transform:capitalize; }
        
    </style>

    </head>

    <body>

    <div class="container">
        
        
        <div style="padding: 40px;">
            
            <table class="tbl">
                
                <?php 

                    $stmt 
    $pdo->prepare('select * from tbl_test');

                    
    $stmt->execute();

                    
    $res $stmt->fetchAll(PDO::FETCH_OBJ);
                
    ?>
                
                <?php if($res){ ?>
                
                    <thead>
                        <tr>
                            <th style="width: 3%;">row</th>
                            <th style="width: 12%;">first name</th>
                            <th style="width: 12%;">last name</th>
                            <th style="width: 17%;">email</th>
                            <th style="width: 12%;">birthday</th>
                            <th style="width: 12%;">city</th>
                            <th style="width: 10%;">country</th>
                            <th style="width: 22%;">address</th>                                                
                        </tr>
                    </thead>
                        
                    <tbody>        
                
                    <?php foreach($res as $key => $val){ ?>

                        <tr>
                            <td><?php echo ++$key?></td>
                            <td><?php echo $val->first_name?></td>
                            <td><?php echo $val->last_name?></td>
                            <td><?php echo $val->email?></td>
                            <td><?php echo $val->birthday?></td>
                            <td><?php echo $val->city?></td>
                            <td><?php echo $val->country?></td>
                            <td><?php echo $val->address?></td>                    
                        </tr>
                
                    <?php ?>
                    
                    </tbody>
                
                <?php ?>
                
            </table>
                
            <div>                
                <div style="float: left;padding:5px;"><a href="run_export.php">export excel</a></div>
                <div style="float: right;padding:5px;"><a href="import.php">goto import from file</a></div>
            </div>
        
        </div>
        
        
    </div>


    </body>

    <script>
        
    </script>

    </html>

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

    یک فایل با نام run_export.php ایجاد کرده و کدهای زیر را درون آن کپی میکنیم.
    کد PHP:
    <?php

    require_once('cnn.php');
    require_once(
    'PHPExcel/Classes/PHPExcel.php');
    require_once(
    'PHPExcel/Classes/PHPExcel/IOFactory.php');



    $obj_excel = new PHPExcel();

    $obj_excel->getProperties()->setCreator("a.azadi")
                                 ->
    setLastModifiedBy("a.azadi")
                                 ->
    setTitle("this a test")
                                 ->
    setSubject("create excel")
                                 ->
    setDescription("description of file.")
                                 ->
    setKeywords("xlsx - xls");




    $active_sheet $obj_excel->setActiveSheetIndex(0);


    $stmt $pdo->prepare('select * from tbl_test');
    $stmt->execute();
    $data $stmt->fetchAll(PDO::FETCH_OBJ);



    $active_sheet->setCellValue('A1''Row');
    $active_sheet->setCellValue('B1''first_name');    
    $active_sheet->setCellValue('C1''last_name');    
    $active_sheet->setCellValue('D1''email');    
    $active_sheet->setCellValue('E1''birthday');    
    $active_sheet->setCellValue('F1''city');    
    $active_sheet->setCellValue('G1''country');    
    $active_sheet->setCellValue('H1''address');


    $i 1;
    foreach(
    $data as $val)
    {
        
    $i++;
        
        
    $active_sheet->setCellValue('A'.$i$val->id);
        
    $active_sheet->setCellValue('B'.$i$val->first_name);
        
    $active_sheet->setCellValue('C'.$i$val->last_name);
        
    $active_sheet->setCellValue('D'.$i$val->email);
        
    $active_sheet->setCellValue('E'.$i$val->birthday);
        
    $active_sheet->setCellValue('F'.$i$val->city);
        
    $active_sheet->setCellValue('G'.$i$val->country);
        
    $active_sheet->setCellValue('H'.$i$val->address);
        
    }


    $file 'excel'.date("Y_m_d__H_i_s").'.xlsx';

    $objWriter PHPExcel_IOFactory::createWriter($obj_excel'Excel2007');
    $objWriter->save($file);




    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename="basename($file));
    header("Content-Length: " filesize($file));
    header("Pragma: no-cache");
    header("Expires: 0");


    readfile$file );

    unlink($file);

    ?>

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

    نکته : فایل های فولدر phpExcel (کلاس ها) توسط برنامه نویسان حرفه ای نوشته شده اند

    اینجانب فقط فایل های قسمت بالا را کدنویسی کردم

    در پایان ، کدهای کامل پروژه رو واستون آپلود کردم ، امیدوارم توانسته باشم خدمتی در زمینه پیشرفت برنامه نویسی تحت وب برای شما عزیزان ارائه داده باشم.

    نویسنده : [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    منبع : [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]








    فايل هاي پيوست شده فايل هاي پيوست شده
    دلفی ،*جذاب ترین زبان طراحی نرم افزار ...

موضوعات مشابه

  1. دانلود کتاب آموزش MySql
    توسط b_itman_b در انجمن My SQL
    پاسخ: 9
    آخرين نوشته: 05 / February / 2017, 01:38 PM
  2. ارسال و دریافت داده از طریق پورت کام یا همان سریال
    توسط arman.m.80 در انجمن کامپوننت ها در دلفی
    پاسخ: 1
    آخرين نوشته: 18 / April / 2016, 02:48 PM
  3. وصل شدن به mysql سرور
    توسط neda_noroozi در انجمن My SQL
    پاسخ: 2
    آخرين نوشته: 28 / February / 2016, 09:47 PM
  4. پاسخ: 2
    آخرين نوشته: 17 / August / 2015, 09:59 PM
  5. پاسخ: 0
    آخرين نوشته: 28 / June / 2015, 02:38 PM

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •