js - בעיה בקידוד CSV שיתמוך בעברית באקסל
-
אני משתמש בקוד הבא כדי לייצא למשתמש את תוכן טבלה בדף למסמך csv, אבל תווים עבריים מוצגים באקסל כג'יבריש, ניסיתי לקודד כANSI (או Windows-1255), אבל זה עדיין יורד כUTF-8 ומוצג כג'יבריש
פתרונים? הפונקציה צריכה לרוץ בצד הלקוח, ועדיף ללא ספריות וכו'.
function exportToCSV() { let csvContent = "data:text/csv;charset=ANSI,"; const rows = document.querySelectorAll('#table-report-sales tr'); rows.forEach(row => { const rowData = []; row.querySelectorAll('th, td').forEach(cell => { rowData.push(`"${cell.textContent}"`); }); csvContent += rowData.join(',') + '\n'; }); //const encodedUri = encodeURI(csvContent); const encodedUri = encodeURI(`data:text/csv;charset=ANSI,${csvContent}`); const link = document.createElement("a"); link.setAttribute("href", encodedUri); link.setAttribute("download", "sales_report.csv"); document.body.appendChild(link); link.click(); } -
הקוד קצת מסורבל וטיפונת שגוי, אז שיפרתי אותו:
function exportToCSV() { const rows = [...document.querySelectorAll('#table-report-sales tr')]; const singleRow = (e) => [...e.querySelectorAll('th, td')].map(x => x.innerText).join(','); const csvContent = '\uFEFF' + rows.map(singleRow).join('\n'); const link = document.createElement("a"); link.setAttribute("href", 'data:text/csv; charset=utf-8,' + encodeURI(csvContent)); link.setAttribute("download", "sales_report.csv"); document.body.appendChild(link); link.click(); }
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות