>

html 테이블을 엑셀로 내보내고 싶지만 작동하지만 때로는 아랍어 또는 페르시아어 데이터가 다음과 같이 변환되었습니다.

ع©ط§ط±ط¨ط± ط«ط¨طھ ع©ظ†ظ†ط¯ظ‡

이 코드를 사용합니다 :

var tableText = `<table><thead><tr><th colspan="5">یک عنوان در فارسی</th></tr><tr>`;
.
.
.
adding <th>s and <tbody> and <td>s
.
.
.
tableText += "</tbody></table>";
      var downloadLink = document.createElement("a");
      var uri = 'data:application/vnd.ms-excel,' + encodeURIComponent(tableText);
      downloadLink.href = uri;
      var filename = "some file name";
      downloadLink.download = filename + ".xls";
      document.body.appendChild(downloadLink);
      downloadLink.click();
      document.body.removeChild(downloadLink);

그리고 엑셀 파일을 다운로드하고 다운로드 한 엑셀 파일 내부의 아래 이미지처럼 보입니다 :


  • 답변 # 1

    링크에서 해결책을 찾았습니다. HTML 테이블을 Excel로 내보낼 때 UTF-8 인코딩

    작동하며 모든 유니 코드 데이터가 Excel 파일에 올바르게 저장되었습니다. 그러나 주어진 파일 이름을 사용하고 싶기 때문에 약간 변경 한 다음 문서에 동적으로 추가하고 클릭 한 후 window.open 대신 앵커 태그를 사용했습니다. 그런 다음 아래와 같습니다 :

    function exportExcel(tableText, filename, worksheetName) {
            let downloadLink = document.createElement("a");
            let uri = 'data:application/vnd.ms-excel;base64,'
                , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>' + tableText + '</body></html>'
                , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
                , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
            let ctx = { worksheet: worksheetName || 'Worksheet', table: tableText }
            // window.location.href = uri + base64(format(template, ctx));
            downloadLink.href = uri + base64(format(template, ctx));
            downloadLink.download = (filename||"exportedTable") + ".xls";
            document.body.appendChild(downloadLink);
            downloadLink.click();
            document.body.removeChild(downloadLink);
        }
    
    

    마지막으로 데이터와 함께이 함수를 호출 할 수 있습니다 :

    exportExcel(anyHtmlTableText, "myFileName","mySheetName");
    
    

관련 자료

  • 이전 amazon web services - Terraform 수를 사용하지만 태그가 다른 여러 RDS 인스턴스 생성
  • 다음 c# - 세션이 만료 된 후에도 개체 유지