שלח תשובה

זירת השאלות

1588
צפיות
11
תשובות

ייצוא אקסל עם PHP

,‏ 25 ביולי, 2010

יש לי סקריפט בPHP שמוציא את כל הניתונים באקסל.
אבל זה מוציא את כל הניתונים בעברית בג'יבריש

$filename = "test.xls";


header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: text/x-csv; charset=windows-1255");
header("Content-Description: File Transfer");
header("Pragma: public");
session_cache_limiter("must-revalidate");
header("Content-type: application/vnd.ms-excel; charset=utf-8");
header('Content-Disposition: attachment; filename="' . $filename .'"');

$select = "select * from tables";
$export = mysql_query($select);
$fields = mysql_num_fields($export);

for ($i = 0; $i < $fields; $i++) {
    $header .= mysql_field_name($export, $i) . "t";
}

while($row = mysql_fetch_row($export)) {
    $line = ";
    foreach($row as $value) {                                            
        if ((!isset($value)) OR ($value == "")) {
            $value = "t";
        } else {
            $value = str_replace('"', '""', $value);
            $value = '"' . $value . '"' . "t";
        }
        $line .= $value;
    }
    $data .= trim($line)."n";
}
$data = str_replace("r","",$data);

if ($data == "") {
    $data = "n(0) Records Found!n";      
}
        
print "$headern$data";                    

תגיות:

11 תשובות

  1. roe27m הגיב:

    תנסה לשנות את ה charset
    בשורה הבאה :
    header("Content-type: application/vnd.ms-excel; charset=utf-8");

    תחליף את utf-8  ב win-1255


    ====================================
    = שיתוף ידע בנושא תכנות באינטרנט
    = http://roe25m.co.il
    ====================================

  2. ashabi הגיב:

    זה עדיין לא עובד
    איך זה ש PHPMYADMIN יכול לעשות את זה

  3. roe27m הגיב:

    תנסה לבדוק האם הבעיה היא בדף עצמו
    או בעת משיכת הנתונים מה DB .

    תנסה לשים בהערה את כל הקוד ותדפיס אותיות בעברית למסך תראה אם זה יוצא בגיבריש .

    אם יוצא תקין אז תנסה לבצע שאילתא אחת נוספת לפני זו שמבצעת את השליפה :

    Mysql_query("SET NAMES `UTF8`);1

    או HEBREW תלוי בקידוד של הדף .


    ====================================
    = שיתוף ידע בנושא תכנות באינטרנט
    = http://roe25m.co.il
    ====================================

  4. ashabi הגיב:

    עשיתי את הבדיקה
    עשיתי את הבדיקה ואפילו שהDB שלי במחשב והDB בהוסטינג הם אותו דבר, אצלי הוא מראה עכשיו את העברית אבל אצל ההוסטינג הוא עדיין גיבריש.
    בדקתי את כל הקבצים והם זההים.

  5. roe27m הגיב:

    אני מניח שהבדיקה של קידוד
    הדף ללא משיכת נתונים מה DB יצאה תקינה גם במחשב המקומי וגם בשטח אחסון .

    אז אם ככה הבעיה היא ב COLLETIONS שונים בין ה DB
    במחשב המקומי לבין המרוחק

    כנראה שעל אחד מהם אתה עובד עם UTF-8 ובשני בעברית ( HEBREW ) .

    תיכנס ל PHPMYADMIN ותנסה לראות אם רשום שם הקידוד של הטבלאות ב DB .


    ====================================
    = שיתוף ידע בנושא תכנות באינטרנט
    = http://roe25m.co.il
    ====================================

  6. ashabi הגיב:

    עכשיו בדיקה עובד
    או.קי הבדיקה עובד בשני השרתים.
    עכשיו עדיין לא עובד שאני הופך אותו לקובץ אקסל. נסיתי עם SET NAMES אבל עדיין לא.
    נסיתי גם:
    header("Content-type: application/vnd.ms-excel; charset=win-1255");

  7. roe27m הגיב:

    תרשום פה מה ה COLLESION
    של הטבלאות בשרת המרוחק שמהן אתה מושך את הנתונים .

    (נראה לי שניתן לראות זאת דרך PHPMyAdmin )


    ====================================
    = שיתוף ידע בנושא תכנות באינטרנט
    = http://roe25m.co.il
    ====================================

  8. roe27m הגיב:

    אוקיי אז אתה צריך לעבוד עם UTF-8
    בשניהם .
    תרשום :
    mysql_query("set names `utf8` ")1

    ללא מקף ב UTF-8 .
    (ב DB רושמים את זה אחרת מאשר בקוד ה PHP וה HTML )

    ותוודא שגם ב HEADERS ה CHARSET מכוון ל UTF-8 .


    ====================================
    = שיתוף ידע בנושא תכנות באינטרנט
    = http://roe25m.co.il
    ====================================

  9. ashabi הגיב:

    עדיין לא עובד.
    נסיתי את כל האופציות

    אבל הכי מתסכל שאני עושה ייצוא מPHPMYADMIN לאקסל זה כן עובד בסדר. אבל אני לא מצליחה להבין מהם עשו שזה עובד.

  10. roe27m הגיב:

    תנסה גם לבדוק מהו הקידוד הפיזי של הקובץ
    תוודא שהוא גם UTF-8 .

    ליתר ביטחון תשמור עותק בצד של הקובץ ותעשה לו SAVE AS בקידוד UTF-8 .

    לאחמ"כ תנסה להדפיס כתיבה בעברית למסך (לא בשליפה מתוך DB )
    וגם הדפסה למסך של שליפה מה DB (בלי ניסיון ליצור XL )

    תכתוב הערה לצד כל פלט כך שתדע מה שייך למה .
    ותרשום פה את התוצאות .


    ====================================
    = שיתוף ידע בנושא תכנות באינטרנט
    = http://roe25m.co.il
    ====================================

שלח תשובה