arlabbafi
New Member
با سلام
يك سوال از حضورتون داشتم
من ميخواستم يك خروجي از جدول اچ تي ام ال به صورت اكسل بگيرم
با استفاده از لينك زير اونوبه CSV تبديل كردم
http://www.kunalbabre.com/projects/table2CSV.php
و براي تبديل CSV به xls از تابع زير استفاده كردم
کد PHP:
اما مشكلي كه داره اينه كه طول رشته براي هر سلول بايد كمتر از 255 كاراكتر باشه آيا راه حلي براي اين مشكل است؟
فكر كنم تابع pack() رو بايد دستكاري كرد من بلد نيستم.
اگر كسي ميتونه، كمكم كنه؟
يك سوال از حضورتون داشتم
من ميخواستم يك خروجي از جدول اچ تي ام ال به صورت اكسل بگيرم
با استفاده از لينك زير اونوبه CSV تبديل كردم
http://www.kunalbabre.com/projects/table2CSV.php
و براي تبديل CSV به xls از تابع زير استفاده كردم
کد PHP:
function csv2xls($in = 'data.csv', $out = 'ex.xls', $glue=",", $enclosure='"')
{
$fp_in = fopen($in, "r");
$fp_out = fopen($out, "w");
/* write Excel BOF */
fputs($fp_out, pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0));
/* Read CSV fields */
for($row = 0; $fields = fgetcsv($fp_in, 0, $glue, $enclosure); $row++)
{
foreach($fields as $col=>$value)
{
//$value = trim($value);
//$value = utf8_decode($value);
/* string cell */
if(!is_numeric($value))
{
$l = strlen($value);
fputs($fp_out,pack("ssssss", 0x204, 8 + $l, $row, $col, 0x0, $l).$value);
}
/* numeric cell */
else
{
fputs($fp_out,pack("sssss", 0x203, 14, $row, $col, 0x0).pack("d",$value));
}
}
}
/* write Excel EOF */
fputs($fp_out, pack("ss", 0x0A, 0x00));
fclose($fp_out);
fclose($fp_in)
{
$fp_in = fopen($in, "r");
$fp_out = fopen($out, "w");
/* write Excel BOF */
fputs($fp_out, pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0));
/* Read CSV fields */
for($row = 0; $fields = fgetcsv($fp_in, 0, $glue, $enclosure); $row++)
{
foreach($fields as $col=>$value)
{
//$value = trim($value);
//$value = utf8_decode($value);
/* string cell */
if(!is_numeric($value))
{
$l = strlen($value);
fputs($fp_out,pack("ssssss", 0x204, 8 + $l, $row, $col, 0x0, $l).$value);
}
/* numeric cell */
else
{
fputs($fp_out,pack("sssss", 0x203, 14, $row, $col, 0x0).pack("d",$value));
}
}
}
/* write Excel EOF */
fputs($fp_out, pack("ss", 0x0A, 0x00));
fclose($fp_out);
fclose($fp_in)
اما مشكلي كه داره اينه كه طول رشته براي هر سلول بايد كمتر از 255 كاراكتر باشه آيا راه حلي براي اين مشكل است؟
فكر كنم تابع pack() رو بايد دستكاري كرد من بلد نيستم.
اگر كسي ميتونه، كمكم كنه؟