وارد كردن فايل اكسل به ديتابيس

mohsen162

Member
با سلام خدمت دوستان
مي خوام يك برنامه بنويسم كه يك input و يك دكمه ارسال داشته باشه هر ماه يك فايل اكسل رو در اون وارد كنند
خودش اون فايل اكسلو بخونه وارد ديتابيسم كه mysql هست بكنه
براي اينكه بگم تا كجا خوندم ميگم كه بعد از سرچ كردن به اين سايت
کد:
http://weblog.alvanweb.com/2011/07/10/import-microsoft-excel-to-mysql-with-php/
برخوردم گفته از phpexcel استفاده كنيد منم دانلود كردم هر دفعه يك ارور ميده
لطفا راهنمايي كنيد كسي راه ساده تري بلده؟
ارورشم اينه ك ميگه فايل ziparchive وجود نداره در صورتي كه دستي وارد كردم
 

Domanjiri

Well-Known Member
سلام

دوست من، شما PHPExcel رو از codex دانلود کردین دیگه؟ ( این لینک)

لینک روبرو حاوی چند مثال هست که میتونه کمکتون کنه (این لینک)

ziparchive نام فایل اکسلی هست که می خواین تفسیر کنید و بخونیدش؟ خب بهتره کدی که نوشتید رو اینجا قرار بدین تا بتونیم کمکتون کنیم.

در ضمن PEAR هم یک پکیج برای این کار داره( این لینک Spreadsheet_Excel_Writer )

موفق باشین.
 

mohsen162

Member
دوست عزيز
کد:
<?php
02.require_once 'PHPExcel.php';
03.$objReader = new PHPExcel_Reader_Excel2007();
04.$objPHPExcel = $objReader->load('book1.xlsx');
05.$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator();
06. 
07.$skip_rows = 0;
08.$excell_array_data = array();
09.foreach($rowIterator as $row){
10.    $cellIterator = $row->getCellIterator();
11.    $cellIterator->setIterateOnlyExistingCells(false);
12.    if($skip_rows >= $row->getRowIndex ()) continue;
13.    $rowIndex = $row->getRowIndex ();
14.    $excell_array_data[$rowIndex] = array();
15. 
16.    foreach ($cellIterator as $cell) {
17.        $excell_array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
18.    }
19.}
20. 
21.$link = @mysql_connect('localhost', 'root', '123');
22.if ($link){
23.    $db_selected = mysql_select_db('alvanweb.com', $link);
24.    @mysql_set_charset('utf8',$link);
25. 
26.    //Create Database table with one Field
27.    $sql = "CREATE TABLE xlsx (
28.    rowID INT NOT NULL ,
29.    PRIMARY KEY (rowID)
30.    )";
31.    mysql_query($sql);
32. 
33.    //Create Others Field (A, B, C & ...)
34.    $columns_name = array();
35.    $columns_name = $excell_array_data[$skip_rows+1];
36.    foreach (array_keys($columns_name) as $fieldname ){
37.        $sql = "ALTER TABLE xlsx ADD $fieldname VARCHAR(1000)";
38.        mysql_query($sql);
39.    }
40. 
41.    //Insert Excel data to MySQL
42.    foreach( $excell_array_data as $k=>$v){
43.        $keys = join(array_keys($v), ',');
44.        $values = join($v, "','");
45.        $sql = "insert into xlsx (rowID, $keys) values ($k, '$values') " ;
46.        mysql_query($sql);
47.    }
48. 
49.} else {
50.    echo "Error in database connection.";
51.}
52.?>
اين كدي است كه من پيدا كردم
از همون سايتم فايلو دانلود كردم
مي تونيد بگيد چطوري فايلو براي اين كدها با يك input بفرستم كه بخونه و وارد mysql بكنه
ممنون ميشم راهنمايي كنيد
 

Domanjiri

Well-Known Member
درود بر شما

منظورم از قرار دادن کد، کدی بود که شما اجرا کردین و ارور داد وگرنه کدی که گذاشتین، همونطور که خودتون هم گفتید توی لینک سوالتون بود (میگم شما یه وقت خسته نشی، حداقل شماره ی خط ها رو دستی پاک می کردین!:green:[شوخی])

نکته ی باریک تر از مو(!): برای قرار دادن کد PHP در متن ارسالی، کد رو توی تگ
php.gif
بزارین.

1- شما باید ابتدا فایل اکسلی که می خواین بخونیدش رو آپلود کنید

2- بعد، آدرسش رو به جای book1.xlsx در کد بالا بزارید، مثلن اگه بعد از آپلود فایل رو توی پوشه temp ذخیره کردین، آدرسش میشه:temp/book1.xlsx

3- بعد از اینکه محتویات فایل با موفقیت (یا بی موفقیت!) در دیتابیس ریخته شد، فایل آپلود شده رو delete می کنید

شد؟

خب دیگه شروع کنید به کدنویسی. انتظار هم نداشته باشین که من یا کس دیگه ای براتون کد بنویسه (امان از بعضی ها!)، ما اینجا هستیم تا همدیگه رو راهنمایی کنیم، شما کار خودتون رو با جدیت شروع کنید، اگه مسئله پیش اومد، همین جا مطرح کنید تا با هم برطرفش کنیم !

موفق باشین.
 

mohsen162

Member
سلام دوست عزيز
ممنون از پاسخ دادنتون
اين همون كدهايي كه من پيدا كرده بودم براي اينكه خدا نكرده اشتباه نشه كپي كردم ( براي همين شماره خطها هم هست)
من هين كدها رو كپي كردم فايلم به صورت دستي وارد كردم همون اروري كه ميگم ميده يعني در قسمت فايل مثلا book.xlsx گذاشتم و فايل
phpexcel رو هم گذاشتم هميه اينها توي يك فولدر اما ارور ميده كه ziparchive وجود نداره
کد:
[B]Fatal error[/B]:  Class 'ZipArchive' not found in [B]C:\wamp\www\data\asli excel to mysql\PHPExcel\Reader\Excel2007.php[/B] on line [B]368[/B]
مطمئن باشيد كه كارها كردم كه نشد براي همين مزاحمتون شدم
در واقع اين خط از class داره ارور ميده
PHP:
$zip = new ZipArchive;
        $zip->open($pFilename);
فايلم كه گفتيد از همون سايت دانلود كردم PHPExcel 1.7.6
 
آخرین ویرایش:

mohsen162

Member
با سلام خدمت دوستان مشكل حل كردم
مشكل از ومپ بود نه از كدها
اكستيشن php_zip فعال كردم درست شد
ببنيد كدهايي كه توي سايتي كه كعرفي كردم مياد يك تيبل مي سازه بعد داده هارو توي اون ميريزه اما براي بار بعد كه دستور ميدي ديگه هيچي تو اون جدول نميريزه كدهارو به صورت زير تغيير دادم
PHP:
<?php
require_once 'PHPExcel.php';
$objReader = new PHPExcel_Reader_Excel2007();
$objPHPExcel = $objReader->load('fot.xlsx');
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator();
 
$skip_rows = 0;
$excell_array_data = array();
foreach($rowIterator as $row){
    $cellIterator = $row->getCellIterator();
   $cellIterator->setIterateOnlyExistingCells(false);
    if($skip_rows >= $row->getRowIndex ()) continue;
    $rowIndex = $row->getRowIndex ();
    $excell_array_data[$rowIndex] = array();
    foreach ($cellIterator as $cell) {
        $excell_array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
    }
}
 
$link = @mysql_connect('localhost', 'root', '');
if ($link){
    $db_selected = mysql_select_db('mohsen', $link);
    @mysql_set_charset('utf8',$link);
 
 
    //Insert Excel data to MySQL
    foreach( $excell_array_data as $k=>$v){
        $keys = join(array_keys($v), ',');
        $values = join($v, "','");
        $sql = "insert into xlsx (rowID, $keys) values ($k, '$values') " ;
        mysql_query($sql);
    }
 
} else {
    echo "Error in database connection.";
}
?>
اين كدهاي منه ميدونم كه داده هارو از اكسل مي خونه بعد مي ريزه توي
PHP:
$excell_array_data
اما بازم چيزي توي اون جدول نريخت مشكل كجاست
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا