파이어폭스 브라우저에서 javascript에서 탁월하도록 동적 html 테이블을 내보냅니다.
javascript에서 뛰어나게 동적 html 테이블을 내보내고 싶은데 코드의 activex 객체를 사용하지 않고 파이어폭스 브라우저에서 할 수 있는 방법이 있나요? 도와주세요.
다음은 사용자가 컴퓨터에 Excel을 설치했다고 가정할 때 JavaScript를 사용하여 Firefox에서 이를 수행하는 함수는 다음과 같습니다.
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))
}
})()
jsFiddle 라이브 예시:
표, 셀 스타일 및 형식을 HTML 구문에서 사용자 정의할 수 있는 Excel 파일을 스프레드시트 데이터 XML 형식으로 동적으로 생성할 수 있습니다.
IE에서 이 작업을 수행하려면 Blob 객체를 사용하여 msSaveBlob 메서드를 호출해야 합니다.FF 및 Chrome의 경우 href의 데이터를 데이터로 변경할 수 있습니다.application/vnd.ms-filename
function fnExcelReport() {
var tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">';
tab_text = tab_text + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>';
tab_text = tab_text + '<x:Name>Test Sheet</x:Name>';
tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>';
tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>';
tab_text = tab_text + "<table border='1px'>";
tab_text = tab_text + $('#myTable').html();
tab_text = tab_text + '</table></body></html>';
var data_type = 'data:application/vnd.ms-excel';
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {
if (window.navigator.msSaveBlob) {
var blob = new Blob([tab_text], {
type: "application/csv;charset=utf-8;"
});
navigator.msSaveBlob(blob, 'Test file.xls');
}
} else {
$('#test').attr('href', data_type + ', ' + encodeURIComponent(tab_text));
$('#test').attr('download', 'Test file.xls');
}
}
작업 예: http://jsfiddle.net/h42y4ke2/21/ YT 튜토리얼: https://www.youtube.com/watch?v=gx_yGY6NHkc
AFIK JavaScript에는 실제 Excel 파일을 만들기 위한 라이브러리는 없지만 HTML로 테이블을 .xls 확장자의 파일로 내보내려고 시도할 수 있습니다.
파이어폭스용 확장 table2clipboard가 있습니다.또한 수동으로 DOM 트리에서 csv 출력을 생성하여 사용자가 csv 파일로 저장할 수도 있습니다.Excel은 CSV에서 Import할 수 있습니다.
언급URL : https://stackoverflow.com/questions/6955627/export-dynamic-html-table-to-excel-in-javascript-in-firefox-browser
'prosource' 카테고리의 다른 글
Git과 Dropbox를 함께 사용하는 방법은? (0) | 2023.04.23 |
---|---|
랜덤 행을 선택하는 가장 좋은 방법 PostgreSQL (0) | 2023.04.18 |
BASH는 1개를 제외한 모든 파일을 복사합니다. (0) | 2023.04.18 |
Swift에서 변수의 유형 또는 클래스를 인쇄하려면 어떻게 해야 합니까? (0) | 2023.04.18 |
작은 아이콘을 UILabel에 삽입하는 방법 (0) | 2023.04.18 |