HTML 테이블을 Excel로 내보낼 때 UTF-8 인코딩
자바스크립트를 사용하여 HTML 테이블을 Excel로 내보내려고 합니다.이것은 자바스크립트 코드입니다.
<script type="text/javascript">
var tableToExcel = (function() {
var 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"><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><table>{table}</table></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]; }) }
return function(table, name) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()
</script>
이것은 나의 머리글입니다.
<meta http-equiv="content-type" content="application/vnd.ms-excel;" charset="UTF-8">
<meta charset="UTF-8">
이것은 제 테이블입니다.
<table id="tblExport">
<tr>
<td>José</td>
<td>María</td>
</tr>
</table>
그리고 이것이 내보내기를 트리거하는 버튼입니다.
<input type="button" onclick="tableToExcel('tblExport', 'W3C Example Table')" value="Export to Excel">
UTF-8 문자를 에나 ii처럼 제대로 내보낼 수 없습니다.이 HTML 테이블을 엔티티로 변환하지 않고 UTF8로 OOCal로 가져오기를 시도하지만 작동하지 않습니다.MS-Excel 2010과 Win7 64비트를 가지고 있습니다.
UTF-8 문자를 올바르게 내보내려면 어떻게 해야 합니까?
감사합니다!
첫 번째: 헤더 형식이 잘못되었습니다.다음과 같아야 합니다.
<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">
그리고 두 번째:Excel에 대한 문자 집합 정보가 포함되어 있기 때문에 템플릿에 포함되어 있어야 합니다.
<script type="text/javascript">
var tableToExcel = (function() {
var 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><table>{table}</table></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]; }) }
return function(table, name) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()
</script>
내용 문자열 앞에 UTF-8 BOM 정의를 추가할 수 있습니다.
function ExportToExcel() {
var BOM = "\uFEFF";
var htmltabel = document.getElementById("tabella_finale");
var html = htmltabel.outerHTML;
window.open('data:application/vnd.ms-excel,'+ encodeURI(BOM + html));
}
@Axel Richter의 답변에 따라 기본 파일 이름을 변경하려면 다음을 시도하십시오.
var link = document.createElement('a');
link.download = 'filename.xls';
...
link.href = uri + base64(format(template, ctx));
link.click();
...
window.location을 바꿉니다.링크가 있는 href.href
function exportData(report_id){
var blob = new Blob([document.getElementById(report_id).innerHTML], {
type: "text/plain;charset=utf-8;"
});
saveAs(blob, "Report.xls");
}
테이블 데이터를 일반 텍스트로 사용하고 인코딩 문제 없이 Excel로 저장
위에 언급된 존경심을 다시 인용하겠습니다.메타 태그 코드를 헤드 태그 안에 포함해야 합니다.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<!--This is what you should include-->
<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">
<!---->
<title>Ver Listado Pago</title>
<link href="/Images/Decretos.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
<link href="/Content/site.css" rel="stylesheet" />
<link href="~/Content/booostrap/bootstrap.min.css" rel="stylesheet" />
<link href="~/Content/booostrap/bootstrap-theme.css" rel="stylesheet" />
<link href="~/Content/booostrap/bootstrap-theme.min.css" rel="stylesheet" />
이것은 저에게 효과가 있었습니다.하지만 IE와 WIN10은 xls 확장 때문에 다운로드를 위한 충돌이 있습니다.그러나 특수 문자의 문제는 수정되었습니다.
구글 검색 후 솔루션 편집 파일/tableExport/tableExport.js line 280을 찾았습니다.
var base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) } // New base64
// var base64data = "base64," + $.base64.encode(excelFile); OLD LINE
var base64data = "base64," + base64(excelFile); // New line with new base64
그게 다야
변수에 아래 코드를 사용합니다.
var uri = 'data:application/vnd.ms-excel;charset=UTF-8;base64,'
언급URL : https://stackoverflow.com/questions/25730008/encoding-utf-8-when-exporting-html-table-to-excel
'programing' 카테고리의 다른 글
| Mongoose - 그룹화 및 채우기 방법 (0) | 2023.07.03 |
|---|---|
| 장고를 위한 파이몽고 vs 몽고 엔진. (0) | 2023.07.03 |
| 시스템. 웹.Http.Authorize 대 System.웹.MVC.권한을 부여하다 (0) | 2023.07.03 |
| Git 클론 직후 수정된 것으로 표시되는 파일 (0) | 2023.07.03 |
| Android의 일부 장치에서 카메라 의도를 사용하여 캡처한 이미지가 회전하는 이유는 무엇입니까? (0) | 2023.07.03 |