2015-01-28 5 views
0

페이지에서 엑셀 시트로 표를 내보내는 것이 좋습니다. 코드 조각을 발견하고 잘 작동하지만 다운로드 한 파일은 xls에 저장됩니다. xlsx에서 저장하려면 어떻게해야합니까? ,엑셀 xslx로 페이지 내보내기

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)) 
     } 
    })() 
+1

이 방법으로 XLSX 파일을 만들 수 없습니다. 또한 XLS 파일이 아니라 HTML이 포함 된 SpreadsheetML도 생성합니다. 터키 문자 문제는 http://stackoverflow.com/questions/25730008/encoding-utf-8-when-exporting-html-table-to-excel/25730640#25730640을 참조하십시오. HTML은 UFT-8로 인코딩되어야하며 접근 방식의 템플릿은 content-type 헤더로 확장되어야합니다. –

+0

xlsx에서 파일을 저장하기 위해 @Axel Richter를 사용할 수 있습니까? 거기에 다른 접근법이 있습니까? – user3647419

+0

인터넷 검색에서 "javascript create xlsx file"에 대한 검색 결과가 나타납니다. 그러나 나는 아무것도 테스트하지 못했습니다. 나는 클라이언트 쪽 것들 대신에 서버 쪽 (PHP, Java, .NET, ...) 솔루션을 사용할 것을 제안한다. 그것들에는 많은 것들이 있습니다. –

답변

0

XLSX 파일은 XML 파일의 무리에 구성 : 나는 테이블을 저장하는 동안, 터키어 문자가 저장되지 않습니다, 내가 인터넷에서 발견 코드의

내 조각을 너무 터키어 문자 문제가 데이터와 구조를 설명하고 함께 압축합니다 ("myfile.xlsx"의 이름을 "myfile.zip"으로 변경하면 내부 내용을 볼 수 있습니다). 즉, 파일 시스템에 액세스해야하므로 클라이언트 측에서 이러한 파일을 작성할 수 없습니다.

XLSX 파일을 생성하는 데 사용할 수있는 라이브러리가 많이 있습니다. 백엔드에 어떤 언어를 사용하고 있습니까?

+0

JSF를 사용하고 있습니다. 백엔드 용입니다. – user3647419