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(); }