בדיקה שערכתי באקסל 2016 פתחה את הקובץ בעברית תקינה (לאחר התראה על חובת הזהירות מקבצים שמקורם אינו ידוע וכו')
מצורף גם בקובץ בחלק מהשרתים הגירסה הזו עובדת: או זו:
קוד: בחירת הכל
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="he" xml:lang="he" dir="rtl">
  <head>
    <title>קבלת רשימת תפוצה בקובץ אקסל</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="content-language" content="he" />
  </head>
  <body>
בסייעתא דשמיא
<br /> טופס להורדת קובץ אקסל של רשימת תפוצה
<br /> פותח על ידי "סל שרותים מתקדמים" , אימייל support@salsm.com
<br /> הרשות נתונה להעתיק אך נא לשמור על הקרדיט ולא למחוק שורה זו 
<?php
$DID= $_POST['DID'] ;//מערכת 
$password = $_POST['PASS'] ;//סיסמא 
$templateId = $_POST['templateId'];//תבנית
$template_name='';//שם התבנית
if( isset($DID) && isset($password) ) 
{
$token = token_yemot($DID,$password);//טוקן
}else{
          $token = $_POST['token']; 
          }
 
if( ! isset(
$token )) 
 {
print '<FORM ACTION="" METHOD="POST" ENCTYPE="multipart/form-data">
	<P>מספר מערכת:  <INPUT TYPE=TEXT NAME="DID" SIZE=20 STYLE="width: 1.75in; height: 0.3in" />
		</P>
	<P>סיסמה: <INPUT TYPE=PASSWORD NAME="PASS" SIZE=20 STYLE="width: 1.75in; height: 0.3in" />
		</P>
	<P><INPUT TYPE=SUBMIT NAME="submit" VALUE="התחבר" STYLE="width: 0.74in; height: 0.37in" />
		</P>
</FORM>'; 
 } 
else
{
 //קבלת רשימות התפוצה 
  $templates = yemot_GetTemplates($token); 
//print_r ($templates);
 
 print  '<FORM ACTION="" METHOD="POST" ENCTYPE="multipart/form-data">
<p><INPUT TYPE="hidden" NAME="token" VALUE="'.$token. '" />
		</p>
<select id="templateId" name="templateId">'; 
print '<option value="" >בחר תבנית מהרשימה</option>';
  
foreach($templates as $template )
{
$template['description'] = mb_convert_encoding( $template['description'] ,"UTF-8"); //הגדרת קידוד עברית
$template['description'] =str_replace( 
array("?" , "|" , '"' , "%" , '&' ,  "'" ,  '*' ,  ',' , ':' ,  '<' , '>'  , '/' , '\\' , '{' , '}' , '~' ), "_" ,$template['description']) ;//נטרול תוים לא חוקיים משם התבנית 
print '<option value="'.$template['templateId'].'" >תבנית מספר: '.$template['templateId'].' '.$template['description'].'</option>';
if ($templateId == $template['templateId'])
{$template_name = $template['description'];}
}
print '</select>
	<P><INPUT TYPE=SUBMIT NAME="submit" VALUE="צור קובץ" STYLE="width: 0.74in; height: 0.37in" />
		</P>
</FORM>'; 
 if(! isset( $templateId ) or $templateId == '' )
   {
     print "<p>עדיין לא נבחרה רשימה</p>"; 
    }
    else 
           {
             $Entries = yemot_GetTemplateEntries($token ,$templateId );//קבלת רשימת התפוצה 
             //print '<pre>';
             //print_r ($Entries);  
             $filename = mb_convert_encoding("תבנית ","UTF-8").$templateId. " ".$template_name.".xls";//שם הקובץ שייוצר
            if( ! is_dir( 'xls' ) ){ mkdir( 'xls' ); }//יצירת התיקייה אם עדיין לא נוצרה
	        $handle = fopen("xls/".$filename, "w");//יצירת הקובץ
//[Content_Types].xml
            fwrite($handle, mb_convert_encoding( '<!DOCTYPE html>
<html><head>
    <meta charset="utf-8" />
    <title>קובץ רשימת תפוצה,  נוצר בעזרת פיתוח של "סל שרותים מתקדמים"</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>',"UTF-8")."\r\n");//כתיבת headers 
             fwrite($handle, mb_convert_encoding( '<body dir="rtl"><table><thead><tr><th>מזהה רשומה</th><th>מספר סידורי</th><th>מספר טלפון</th><th>מצב</th><th>שם</th><th>מידע נוסף</th></tr></thead><tbody>' , "UTF-8")."\r\n");//כתיבת שורת הכותרת
             foreach( $Entries as $Entri )
             
  {
                $Entri['blocked']==1? $Entri['blocked']='חסום' : $Entri['blocked']='פעיל' ;
                $Entri = implode( "</td><td>" , $Entri );//הפיכת המערך לרשומה מופרדת בתגיות טאבים
                fwrite($handle, mb_convert_encoding( '<tr><td>' . $Entri . '</td></tr>' , "UTF-8" )."\r\n");//כתיבת הרשומה לקובץ 
                }
             fwrite($handle, mb_convert_encoding( '</tbody></table></body></html>' , "UTF-8" ));//סגירת הטבלה
             fclose($handle);//סגירת הקובץ
             //הדפסת קישור לקובץ שנוצר
             print '<p>הקובץ: <b>'.$filename. '</b> מוכן! <a href="xls/' . $filename .'" > להורדה לחץ כאן </a></p>';
            }
}
?>
</body>
</html>
<?php
//פונקציה להתחברות לימות שמחזירה את הטוקן 
//הארגומנטים הנדרשים: מספר מערכת, סיסמא. 
function token_yemot($DID=0 , $password=0)
{
     //בדיקה האם התקבלו הארגומנטים
     if ($DID==0 or $password==0)
    {
     echo "לא הוזן מספר מערכת או סיסמא" ; 
	}else{
               //הכרזה על משתנה 
              $url_yemot="https://www.call2all.co.il/ym/api";
              //הצבת הכתובת להתחברות במשתנה $url
              $url= "$url_yemot/Login?username=$DID&password=$password";
              //פונקציית ההתחברות,  התשובה (מחרוזת json)  מוחזרת למשתנה $token
              $token = file_get_contents($url);
              //פענוח הjson של תשובת ימות והצבתו לתוך מערך
              $token = json_decode($token,TRUE);
              //בדיקה האם אכן יש אישור להתחברות,
               if ($token['responseStatus'] != "OK") 
                   //אם לא
                    {
                     echo "שגיאה בקבלת הטוקן  מהמערכת:";
                     //ואם כן… 
                     }else{
                               //הצבת הטוקן לתוך המשתנה והחזרתו
                               $token = $token['token'];
                                return $token ; 
                                }
                }
}
//פונקצייה לקבלת כל התבניות הפונקציה מחזירה מערך של כל הרשימה
//הארגומנטים הנדרשים: טוקן 
function yemot_GetTemplates($token=0)
{
 //בדיקה האם התקבלו הארגומנטים
 if ($token===0 )
    {
     echo "id_list_message=t-לא הוזן טוקן& "; 
     //אם התקבלו הארגומנטים ,ממשיך… 
	}else{
               //הכרזה על משתנה 
              $url_yemot="https://www.call2all.co.il/ym/api";
              //הצבת הכתובת להתחברות במשתנה $url
              $url= "$url_yemot/GetTemplates?token=$token";
   //print $url; 
              //פונקציית ההתחברות,  התשובה (מחרוזת json)  מוחזרת למשתנה $templates
              $templates = file_get_contents($url);
              //פענוח הjson של תשובת ימות והצבתו לתוך מערך
 
              $templates = json_decode($templates,TRUE);
              //בדיקה האם אכן יש אישור להתחברות,
               if ($templates['responseStatus'] != "OK") 
                   //אם לא
                    {
                     echo "שגיאה בקבלת רשימת התבניות מהמערכת ";
                     //ואם כן… 
                     }else{
                               //הצבת הרשימה לתוך המשתנה והחזרתה כמערך
                               $templates = $templates['templates'];
                                return $templates ; 
                                }
                }
}
//פונקצייה לקבלת רשימת תפוצה מסוימת הפונקציה מחזירה מערך של כל הרשימה
//הארגומנטים הנדרשים: טוקן, מספר תבנית בימות. 
function yemot_GetTemplateEntries($token=0,$templateId=0)
{
 //בדיקה האם התקבלו הארגומנטים
 if ($token===0 or $templateId<10000)
    {
     echo "לא הוזן מספר תבנית תקני בימות המשיח, ,שימו לב שמספר התבנית אינו המספר הסידורי שלו במערכת שלכם , אלא מספר מזהה פנימי בימות המשיח"; 
     //אם התקבלו הארגומנטים ,ממשיך… 
	}else{
               //הכרזה על משתנה 
              $url_yemot="https://www.call2all.co.il/ym/api";
              //הצבת הכתובת להתחברות במשתנה $url
              $url= "$url_yemot/GetTemplateEntries?token=$token&templateId=$templateId";
              //פונקציית ההתחברות,  התשובה (מחרוזת json)  מוחזרת למשתנה $Entries
              $Entries = file_get_contents($url);
              //פענוח הjson של תשובת ימות והצבתו לתוך מערך
 
              $Entries = json_decode($Entries,TRUE);
              //בדיקה האם אכן יש אישור להתחברות,
               if ($Entries['responseStatus'] != "OK") 
                   //אם לא
                    {
                     echo "שגיאה בקבלת הרשימה מהמערכת , וודאו כי הזנתם  מספר תבנית תקני,  ,שימו לב שמספר התבנית אינו המספר הסידורי שלו במערכת שלכם , אלא מספר מזהה פנימי בימות המשיח";
                     //ואם כן… 
                     }else{
                               //הצבת הרשימה לתוך המשתנה והחזרתה כמערך
                               $Entries = $Entries['entries'];
                                return $Entries ; 
                                }
                }
}
?>