PDA

View Full Version : اکسپورت به اکسل



mehdi4467
سه شنبه 15 فروردین 1391, 13:03 عصر
سلام
من نحوه اکسپورت کردن به اکسل رو در PHP می خوام. البته داده ها هم در دیتابیس قرار داره.

با تشکر

MostafaEs3
سه شنبه 15 فروردین 1391, 13:35 عصر
کلاس php exel رو بگیر باهاش اکسل بده بیرون .. کمی سخته ولی اگه خیلی راحتتر میخوای . CSV درست کن ... به این ترتیب که شما برای جداسازی هر خانه از هم باید از ( ; ) استفاده کنی ... و هر سطر درواقع یک خط هستش .. بطور مثال این الان 4 خانه و 4 سطر داره :



1;2;3;4
5;6;7;8
9;10;11;12
13;14;15;16

اگه الان اینو توی یک فایل بریزی و اسمشو بذاری test.csv و با اکسل بازش کنی ساختار اکسل رو داره :لبخند:

mehdi4467
سه شنبه 15 فروردین 1391, 13:39 عصر
ممنون
کلاسی رو که معرفی کردید از کجا دانلود کنم؟

mamali-mohammad
سه شنبه 15 فروردین 1391, 13:58 عصر
کلاس php exel رو بگیر باهاش اکسل بده بیرون .. کمی سخته ولی اگه خیلی راحتتر میخوای . CSV درست کن ... به این ترتیب که شما برای جداسازی هر خانه از هم باید از ( ; ) استفاده کنی ... و هر سطر درواقع یک خط هستش .. بطور مثال این الان 4 خانه و 4 سطر داره :



1;2;3;4
5;6;7;8
9;10;11;12
13;14;15;16

اگه الان اینو توی یک فایل بریزی و اسمشو بذاری test.csv و با اکسل بازش کنی ساختار اکسل رو داره :لبخند:
من چک کردم نشد

MostafaEs3
سه شنبه 15 فروردین 1391, 14:53 عصر
:متفکر: من همین الان تست کردم جواب میده ! البته روی آفیس 2010 ... اینم فایلش : http://test.gsmeshop.com/1.csv



ممنون
کلاسی رو که معرفی کردید از کجا دانلود کنم؟


برید توی phpclasses ... این آدرس دسته بندی هستش : http://www.phpclasses.org/browse

اینجا سرچ کنید Exel ... برای دانلود نیاز به یک اکانت دارید ... اکانت رو بسازید تا آخر عمر بدردتون میخوره ! :لبخند:

mamali-mohammad
سه شنبه 15 فروردین 1391, 16:17 عصر
خب چطری هر عدد رو در یه خانه جدا بزاریم ؟
این همشو توی یه خونه میزاره

djsaeedkhan
سه شنبه 15 فروردین 1391, 19:26 عصر
این پست را ببینید
http://barnamenevis.org/showthread.php?323285-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%81%D8%A7%DB%8C%D9%84-CSV-%D8%A8%D8%A7PHP-(%D8%AE%D8%B1%D9%88%D8%AC%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%85%D8%AB%D9%84-%DA%A9%D8%A7%D8%B1%DA%A9%D8%B1%D8%AF-%DB%8C%DA%A9-%D9%85%D8%B4%D8%AA%D8%B1%DB%8C-%D8%AF%D8%B1-%D8%A8%D8%A7%D9%86%DA%A9)

**ozv**
چهارشنبه 13 شهریور 1398, 08:37 صبح
<?php
class connectdb
{
function query($sql)
{
$host = "localhost";
$user= "user-name-of-database";
$password = "password-of-database";
$dbname = "name-of-database";
$connect = mysqli_connect($host,$user, $password,$dbname);
if($connect)
{
if(mysqli_select_db($connect, $dbname))
{

mysqli_query($connect, "SET NAMES utf8");
mysqli_query($connect, "set charset utf8");
mysqli_query($connect,"SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
$result = mysqli_query($connect, $sql);
return $result;
}
}
}
}
require 'function/filter.php';
$connect = new connectdb;
$check = new secu;

// ایجاد خروجی فایل اکسل
$table_name = 'tbl_user';

$sql = "select * from $table_name ";
$result = $connect->query($sql);
//$row = mysqli_fetch_assoc($result);

//$select_db = mysql_select_db($db_name, $link);
$host = "localhost";
$user= "user_admin";
$password = "123";
$dbname = "db_sait_j";
$connect = mysqli_connect($host,$user, $password,$dbname);
mysqli_query($connect, "SET NAMES utf8");

//$query = "SELECT * FROM " . $table_name;
//$result = mysql_query($query, $link) or die("Could not complete database query");
$tedade_record = mysqli_num_rows($result);
$tedade_field=mysqli_num_fields($result);
//$query="SHOW COLUMNS FROM ".$table_name;

//echo "tedade_record : ".$tedade_record."<br>";
//echo "tedade_field : ".$tedade_field."<br>";
//$result1=mysql_query($query);

//echo chr_utf8(9405).chr_utf8(9402).chr_utf8(9409).chr_u tf8(9409).chr_utf8(9412);

// با کد زیر، فارسی درست میشود اما سلول های جدول را به هم می چسباند
//echo "\xEF\xBB\xBF"; //UTF-8 BOM
//echo "\xEF\xBF"; //UTF-8 BOM

// تابع بدست آوردن نام فیلدها
function mysqli_field_name($result, $field_offset) {
$properties = mysqli_fetch_field_direct($result, $field_offset);
return is_object($properties) ? $properties->name : null;
}

$name_field="";
$data="";
for ($i = 0; $i < $tedade_field; $i++) {
$name_field .= mysqli_field_name($result, $i) . "\t";}
while($row = mysqli_fetch_row($result)) {
$satr_line_record = '';
foreach($row as $val) {
if ((!isset($val)) OR ($val == "")) {
$val = "\t";
} else {

//$val = str_replace('"', '""', $val);
// به احتمال قوی انکودینگ ما یا BDSKBD است یا WINDOWS-1251


//با کد زیر یونیکد نشان میده
//$val = utf8_encode($val);

//$val = tabdil_farsi($val);

/* Convert WINDOWS-1251 to UTF-8 */
//$val = mb_convert_encoding($val, 'utf-8', 'WINDOWS-1251');
//$val = iconv(mb_detect_encoding($val, mb_detect_order(), true), "UTF-8", $val);

// یافتن انکودینگ
//echo mb_detect_encoding($val, "auto")."<br>";


// دو خط زیر با هم هستند
//$val = mb_convert_encoding($val, 'UTF-8', mb_detect_encoding($val));
//$val = mb_convert_encoding($val, 'UTF-8',mb_detect_encoding($val, 'UTF-8, ASCII', true));
//$val = htmlentities($val, ENT_QUOTES, 'UTF-8', false);



//$val = iconv('WINDOWS-1251', 'UTF-8', $val);


$val = '"' . $val . '"' . "\t";


}
// val مقدار هر یک سلول این جدول است
// با کنار هم گذاشتن این سلول ها، یک رکورد یا بعبارتی یک سطر این جدول را تشکیل میدهیم
$satr_line_record .= $val;
//echo "<script>var url = '$val'; alert('val: ' + url); </script>";
//echo "<script>var url = '$satr_line_record'; alert('satr_line_record: ' + url); </script>";
}
// با زیر هم قرار دادن این سطرها کل این جدول را تشکیل میدهیم
$data .= trim($satr_line_record)."\n";
//echo utf8_encode($name_field\n$data);
//echo "<script>var url = '$data'; alert('data: ' + url); </script>";
}
$data = str_replace("\r","",$data);
//$data = mb_convert_encoding($data,'utf-8','windows-1251');

if ($data == "") {
$data = "\n(0) Records Found!\n";
}
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=Report.xls");
header('Content-Type: text/html; charset=UTF-8');
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");
//print "\xEF\xBB\xBF"; //UTF-8 BOM
//print "$name_field\n$data";

// با این کد درست شد
print chr(255) . chr(254) . mb_convert_encoding("$name_field\n$data", 'UTF-16LE', 'UTF-8');
//print_r(iconv('UTF-8', 'ASCII//TRANSLIT', $name_field\n$data));
//print utf8_encode($name_field\n$data);

//echo mb_convert_encoding($name_field\n$data,'utf-16','utf-8');
?>