PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : خواندن فايل هايexcel با php



Rezash
August 6th, 2010, 22:44
چند روز پيش يكي از دوستام دنبال كدي بود كه بتونه باهاش فايل هاي excel رو پردازش كنه و بونه نمايش بده يا در mysql ذخيره كنه و ...
گشتم و به يك برنامه open source جامع رسيدم،گفتم اينجا هم بذارم شايد بدرد برنامه نويس ديگه اي خورد!چون معمولا اينجور برنامه ها زياد كاربرد دارند و نمونه هاي استفاده زيادي رو ميشه مثال زد مثل وارد كردن شماره تلفن همراه از فايل excel به سيستم و ...

rn4j1m1
August 6th, 2010, 22:53
این کد برعکس اینی که شما گفتین هم میتونه کار کنه ؟ یعنی فایل excel ایجاد کنه ؟ (این خیلی مفید تره مثلا برای ارئه گزارش) :D

Rezash
August 7th, 2010, 00:23
این کد برعکس اینی که شما گفتین هم میتونه کار کنه ؟ یعنی فایل excel ایجاد کنه ؟ (این خیلی مفید تره مثلا برای ارئه گزارش) :D
ايجاد فايل هاي excel آسون تر هست:


<?php
$excel = "first \t second \t third \t \n this \t is \t test";
header("Content-type: application/vnd.ms-excel");
header('Content-Disposition: attachment; filename=wht.xls');
header("Content-type: application/octet-stream");
header("Pragma: no-cache");
header("Expires: 0");
echo $excel;
?>


---------- Post added at 12:23 AM ---------- Previous post was at 12:21 AM ----------

البته اگر ميخوايد از شر پيغام هاي مزاحم به خصوص تو آفيس 2007 خلاص بشيد از اين استفاده كنيد:
AppServNetwork - Easy way to create XLS file from PHP (http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8)
چيزي كه تو كد بالا دادم در واقع يك csv سادست ولي اوني تو لينك هست يك فايل excel درست حسابي :دي

rn4j1m1
August 7th, 2010, 01:01
ايجاد فايل هاي excel آسون تر هست:


<?php
$excel = "first \t second \t third \t \n this \t is \t test";
header("Content-type: application/vnd.ms-excel");
header('Content-Disposition: attachment; filename=wht.xls');
header("Content-type: application/octet-stream");
header("Pragma: no-cache");
header("Expires: 0");
echo $excel;
?>


---------- Post added at 12:23 AM ---------- Previous post was at 12:21 AM ----------

البته اگر ميخوايد از شر پيغام هاي مزاحم به خصوص تو آفيس 2007 خلاص بشيد از اين استفاده كنيد:
AppServNetwork - Easy way to create XLS file from PHP (http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8)
چيزي كه تو كد بالا دادم در واقع يك csv سادست ولي اوني تو لينك هست يك فايل excel درست حسابي :دي

اینا رو من بلدم :)
واسه ملت بیشتر توضیح بدین

Rezash
August 7th, 2010, 01:05
اینا رو من بلدم :)
واسه ملت بیشتر توضیح بدین
rn4j1m1 عزيز ، قصد جسارت نداشتم :)
فكر كردم سوالتون واقعي هست ، جواب دادم.
بازم معذرت ميخوام اگه بي احترامي كردم!
بيخيال :d

debugger
January 9th, 2011, 19:32
دوست عزیز ممکنه بیشتر توضیح بدید
یعنی باید فایل آپلود بشه داخل پوشه مربوطه(Senator.xls/)
حال چطور این اطلاعات وارد دیتابیس بشه

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

با تشکر از همه:77:

Rezash
January 9th, 2011, 19:50
فايل رو باز كنيد :

$data->read('Senator.xls');
اينجا اسم فايل هست كه باز ميشه
و در يك حلقه دريافت اطلاعات اكسل:

for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++)

debugger
January 9th, 2011, 20:25
ممکنه بفرمایید چطور میتونم این اطلاعاتیکه خونده میشه توسط ExcelRead.php رو بفرستم به دیتابیس

چون کلیت کارم رو در پست بالا شرح دادم

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

با تشکر از شما مدیر عزیز که سریعا جواب میدید :53:

Rezash
January 9th, 2011, 21:00
مثلا در داخل حلقه for من براي چاپ مقدار يك فيلد از echo استفاده كردم.
به جاي همين echo ميشه كوئري درج در ديتابيس رو بنويسيم
مثال :

require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->read('filename.xls');
error_reporting(E_ALL ^ E_NOTICE);
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++)
{
$field1 = $data->sheets[0]['cells'][$j+1][1];
$field2 = $data->sheets[0]['cells'][$j+1][2];
//and so on...
//query
mysql_query("INSERT INTO `table_name` SET `field_name_1`='$field1',`field_name_2`='$field2' ");
}

reza.rr
December 20th, 2011, 00:01
سلام
من که ننتونستم از این فایل اکسل که کاراکتر های قارسی داره خروجی بگیرم لطفا کمکم کنید
فایل نمونه رو ضمیمه کردم لطفا رو ی اون اصلاحات انجام بدید منم سر در بیارم ممنون
Hotfile.com: One click file hosting: help me.rar (http://hotfile.com/dl/137947589/1061665/help_me.rar.html)
ببینم یه مرد پیدا میشه قد دو دقیقه وقت بزار و همش ارجاع ندن به سایت های دیگه(خسته شدم )
با تشکر فراوان

tinavps
December 20th, 2011, 00:09
به یک چیزی مشابه html dom نیاز است. وقت بگذارم می نویسمش مثل xml parser اما ارزش نداره فعلا در هیچ پروژم بدرد نمی خوره
باتشکر از دوستمون rezash

---------- Post added at 12:09 AM ---------- Previous post was at 12:06 AM ----------

یک سر هم بریم سر مهندسی مع***: ابتدا فایل که دوست دارید تولید شه رو با notepad++ باز کنید و تلاش کنید سر در بیارید ساختارش رو بفهمید مانند تگ های html که معمولا ساختار word هم مانند html آسونه سپس با php مانند آقا رضا که گفتند هدر ست کنید و خروجی بدهید

البته یک کلک بزنید خروجی رو بصورت plain text یا Html بدهید ولی هدر رو از نوع excell ست کنید. چرا ؟ چون تمام نرم افزارهای آفیس فرمت html رو ساپورت می کنند و احتمالا در خروجی درست نشون بدهند
این قضیه رو من در word تست کردم ولی در اکسل تست نشده. عضذرخواهی می کنم پس اگر رفتی و انجام دادی و نشه درحد پیشنهاد بود.
مرسی از همه

it-net
March 5th, 2012, 01:42
مثلا در داخل حلقه for من براي چاپ مقدار يك فيلد از echo استفاده كردم.
به جاي همين echo ميشه كوئري درج در ديتابيس رو بنويسيم
مثال :

require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->read('filename.xls');
error_reporting(E_ALL ^ E_NOTICE);
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++)
{
$field1 = $data->sheets[0]['cells'][$j+1][1];
$field2 = $data->sheets[0]['cells'][$j+1][2];
//and so on...
//query
mysql_query("INSERT INTO `table_name` SET `field_name_1`='$field1',`field_name_2`='$field2' ");
}

ممنون دوست من فقط یک سوال تویه خروجی یا همون اینپورت به دیتابیس فقط 5 فیلد رو وارد می کنه.
مثلا الان ما 1000 سطر دیتا داریم و می خوایم وارد دیتابیس بشه (یعنی field1 و fiield2 هر کودون 1000 سطر دیتا داره) ولی فقط 5تاش وارد میشه.

کچاشو باید تغییر داد؟

mymymy
August 10th, 2013, 16:30
دوست عزیز اینجت تو خط 5 یه اشکال هست و اونم کنترلر مقدار $J هست که باید سطر ها رو چک کنه ، نه ستون ها
پس تو سطر 5 به جای
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) باید اینو بزنید:

for ($j = 1; $j <= $data->sheets[0]['numRows']; $j++)
ولی مشکلی که هست اینه که تعداد سطر هارو یدونه بیشتر حساب میکنه.
در ضمن با سلولهای فارسی اکسل هم سازگار نیست.

mymymy
August 11th, 2013, 02:30
سلام
من که ننتونستم از این فایل اکسل که کاراکتر های قارسی داره خروجی بگیرم لطفا کمکم کنید
فایل نمونه رو ضمیمه کردم لطفا رو ی اون اصلاحات انجام بدید منم سر در بیارم ممنون
Hotfile.com: One click file hosting: help me.rar (http://hotfile.com/dl/137947589/1061665/help_me.rar.html)
ببینم یه مرد پیدا میشه قد دو دقیقه وقت بزار و همش ارجاع ندن به سایت های دیگه(خسته شدم )
با تشکر فراوان
فرمت متغییر به صورت utf-16EL هستش که باید utf-8 کنیش.
واسه این کار
مثلا سلول i=1 , j=2 رو با این کد
$string=($data->sheets[0]['cells'][2][1]); میریزیم تو متغیر $string بعد ایم کد رو زیرش وارد میکنیم که مقدار متغیر utf-8 بشه.

$string=iconv("UTF-16LE","UTF-8", $string);

mousaseyedi
October 5th, 2013, 19:39
سلام خیلی ممنون

mousaseyedi
October 27th, 2013, 20:18
فقط یه مشکل:
دستور زیر در سرور یا هاست اجرا نمیشه؟
("data->read("filname.xls

ehsan-68
July 15th, 2015, 13:10
با سلام ...

عذر خواهی میکنم از مدیران انجمن بابت بالا آوردن این تایپیک ولی خب حیاتیه ... ;)

من از این اسکریپت استفاده کردم و در هاست خانگی راضی بودم ...

اما در هاست اصلی با این ارورر مواجه میشم ...

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 32 bytes) in /home/samanehn/domains/......../public_html/workbook/includes/Excel/oleread.inc on line 27

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

خیلی برام مهمه لطفا راهنمایی بفرمائید ...

قابل ذکره در هاست اشتراکی به php.ini دسترسی ندارم ...

- - - Updated - - -

سلام .....

یعنی این مشکل هیچ راه حلی نداره ؟؟؟؟؟؟؟

اصلا دوستان این اسکریپتو رویه هاست اصلی امتحان کردن ؟؟؟؟؟؟!!!!!!!!

pispco
July 23rd, 2018, 22:55
سلام دوستان عزیز.
لطفا یک راهنمایی به من بدهید تا بتوانم آدرس فایل را که در آخرین ستون اکسل گذاشته ام بصورت لینک در خروجی (نمایش) فایل php نمایش داده شود.
در این کد چه چیزی باید اضافه شود تا مقدار cell که از ستون 5 ام فایل اکسل خوانده می شود بصورت یک لینک قابل کلیک نمایش داده شود:

echo $data->sheets[0]['cells'][$j+1][5]
لطفا راهنمایی کنید خیلی به راه حلش نیاز دارم



3832438323