PDA

View Full Version : سوال: چینش نامناسب اطلاعات پس از خروجی گرفتن با فرمت Excel



پیام حیاتی
جمعه 15 مرداد 1395, 16:13 عصر
سلام

این کدهای من :


if(isset($_POST['subStudentReportExcel']) )
{
// Connection
$conn=mysql_connect('localhost','root','');
$db=mysql_select_db('school',$conn);
mysql_query("set names utf8");
//mysql_query('set names "utf8"');
//mysql_query('SET NAMES \'utf8\'');
$filename = "Webinfopen.xls"; // File Name
// Download file
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
$user_query = mysql_query('select * from student');
// Write data to file
$flag = false;
while ($row = mysql_fetch_assoc($user_query)) {
if (!$flag) {
// display field/column names as first row
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
echo implode("\t", array_values($row)) . "\r\n";
}}


خروجی :
141878
هر رکورد اطلاعات در یک سطر قرار نمی گیرند و ادامه هم هستند.
برخی استفاده از PHPExcel رو پیشنهاد کردند که من در نهایت نتونستم ازش استفاده کنم اگر کسی میتونه یک مثال ساده به زبان فارسی بزنه ممنون میشم (میدونم خودش داکیومنت و ... داره بنده نتونستم خروجی بگیرم).
تشکر.

پیام حیاتی
یک شنبه 17 مرداد 1395, 16:04 عصر
بروزرسانی.......

[younes]
یک شنبه 17 مرداد 1395, 16:24 عصر
هر فایل اکسل از چند فایل XML تشکیل شده است که در یک پوشه زیپ شده اند. (خروجی open xml در اکسل 2010 به بعد *.xlsx) .آنزیپش کنید و تغییرات لازم رو بدهید و دوباره فشرده اش کنید. به همین سادگی. بهتره مستندات مایکروسافت رو بخونید.

Unique
یک شنبه 17 مرداد 1395, 23:45 عصر
شما احتملاا خروجی csv میخوای.
توی این پست وبلاگم توضیحاتی دادم که شاید مفید باشه. (http://www.geekfarsi.com/%D8%AE%D8%B1%D9%88%D8%AC%DB%8C-csv-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-excel-%D8%AF%D8%B1-php/59)

پیام حیاتی
شنبه 23 مرداد 1395, 20:48 عصر
شما احتملاا خروجی csv میخوای.
توی این پست وبلاگم توضیحاتی دادم که شاید مفید باشه. (http://www.geekfarsi.com/%D8%AE%D8%B1%D9%88%D8%AC%DB%8C-csv-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-excel-%D8%AF%D8%B1-php/59)

این کدهای من برای خروجی CSV :


<?php
//require_once 'includes/student_mysqli.php';
if(isset($_POST['sub_csv'])){
$conn=mysql_connect("localhost","root","");
mysql_select_db("school",$conn);

$filename='uploads/'.strtotime("now").'.csv';

$fp=fopen($filename,"w");

$sql=mysql_query("SELECT * FROM student");
$num_rows=mysql_num_rows($sql);
if($num_rows >=1)
{
$row=mysql_fetch_assoc($sql);

$seperator="";
$comma="";

foreach($row as $name => $value)
{
$seperator .= $comma . '' .str_replace('','""',$name);
$comma=",";
}
$seperator .="\n";
fputs($fp,$seperator);
fclose($fp);
}

else
{
echo 'No record in database';
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Students Page</title>
</head>


<body>
<div align="center">
<form method="post">
<input type="submit" name="sub_csv" value="Download CSV Format">
</form>
</div>
</body>
</html>


مشکل اینجاست فقط نام فیلدهای جدول در خروجی چاپ می شود و مقادیر آنها وجود ندارد ، همگی نیز در یک سطر و ستون قرار می گیرند ، تصویر :

141973
این کدهای من برای خروجی CSV :


<?php
//require_once 'includes/student_mysqli.php';
if(isset($_POST['sub_csv'])){
$conn=mysql_connect("localhost","root","");
mysql_select_db("school",$conn);

$filename='uploads/'.strtotime("now").'.csv';

$fp=fopen($filename,"w");

$sql=mysql_query("SELECT * FROM student");
$num_rows=mysql_num_rows($sql);
if($num_rows >=1)
{
$row=mysql_fetch_assoc($sql);

$seperator="";
$comma="";

foreach($row as $name => $value)
{
$seperator .= $comma . '' .str_replace('','""',$name);
$comma=",";
}
$seperator .="\n";
fputs($fp,$seperator);
fclose($fp);
}

else
{
echo 'No record in database';
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Students Page</title>
</head>


<body>
<div align="center">
<form method="post">
<input type="submit" name="sub_csv" value="Download CSV Format">
</form>
</div>
</body>
</html>


مشکل اینجاست فقط نام فیلدهای جدول در خروجی چاپ می شود و مقادیر آنها وجود ندارد ، همگی نیز در یک سطر و ستون قرار می گیرند ، تصویر :

141973

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

پیام حیاتی
یک شنبه 24 مرداد 1395, 16:41 عصر
بروز رسانی......

Unique
پنج شنبه 28 مرداد 1395, 00:59 صبح
شرمنده ، دیر به دیر سر میزنم و توی پست قبلی دوباره همین پاسخ را دادم ! گویا مشکلت با عناوین حل شده و مقادیر فارسی نیست. اون UTF16LE که توی وبلاگم اشاره کردم قطعا کار میکنه ! مشکل اینه Excel همچنان گیج میزه و درست UTF-8 را تشخیص نمیدهو مثلا فایلت را با LibreOffice باز کن ببین چقدر راحت تشخیص میده و گاه هم نده بهت اجازه میده خودت بگی Encoding چیهو چکار کنه.