HTML 테이블을 별도의 시트에서 Excel(.xls)로 내보내기
테이블 뷰가 포함된 간단한 HTML 페이지(외부 응용 프로그램에서 생성됨)를 가지고 있습니다.저는 그 페이지에서 표를 긁어내어 엑셀 워크북에 넣으려고 합니다.저는 여기에 있는 방법을 사용하여 전체 HTML 내용을 워크북에 넣을 수 있었습니다.
관련 질문의 코드:
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))
}
})()
그러나 이 방법은 여러 스프레드시트를 지원하지 않습니다.제가 필요한 것은 모든 HTML 테이블이 동일한 Excel 워크북의 스프레드시트에 있는 것입니다.이와 같은 것:
두 개의 스프레드시트로 Excel 샘플 문서를 만들고 .html 형식의 내보내기를 보고 리버스 엔지니어링을 시도했습니다.안타깝게도 워크북과 워크북 시트 간의 연결을 다시 만드는 방법을 이해하지 못했습니다.
내가 이해할 수 있는 한.format()
함수는 워크시트 데이터와 Excel 템플릿을 '마법적'으로 결합합니다.그 기능은 제가 보기에 매우 암호화되어 있어서 어떻게 수정해야 할지 모르겠습니다.
제가 엔드 게임으로 필요한 것은 이런 것을 부를 수 있는 가능성을 갖는 것입니다.tableToExcel(document.getElementsByTagName('table'), 'Workbook Name');
만약 이것이 가능하다면, 그리고 가능하다면, 어떻게 그것을 실현할 수 있을까요?
이 블로그 게시물 확인: http://www.kubilayerdogan.net/ ?p=218
$(document).ready(function() {
$("#btnExport").click(function(e) {
//getting values of current time for generating the file name
var dt = new Date();
var day = dt.getDate();
var month = dt.getMonth() + 1;
var year = dt.getFullYear();
var hour = dt.getHours();
var mins = dt.getMinutes();
var postfix = day + "." + month + "." + year + "_" + hour + "." + mins;
//creating a temporary HTML link element (they support setting file names)
var a = document.createElement('a');
//getting data from our div that contains the HTML table
var data_type = 'data:application/vnd.ms-excel';
var table_div = document.getElementById('dvData');
var table_html = table_div.outerHTML.replace(/ /g, '%20');
a.href = data_type + ', ' + table_html;
//setting the file name
a.download = 'exported_table_' + postfix + '.xls';
//triggering the function
a.click();
//just in case, prevent default behaviour
e.preventDefault();
});
});
당신은 jsfiddle에서 그것을 볼 수 있습니다: http://jsfiddle.net/kublaios/8ZQN4/1/ .
언급URL : https://stackoverflow.com/questions/18234448/exporting-html-tables-to-excel-xls-in-a-separate-sheet
'source' 카테고리의 다른 글
Visual Studio 2013 ASP에서 Antlr 패키지의 목적은 무엇입니까?NET 프로젝트? (0) | 2023.08.10 |
---|---|
MySQL에서 숫자로 막대 필드 정렬 (0) | 2023.08.10 |
봇맨 대화가 mysql db에 데이터를 저장하지 않습니다. (0) | 2023.08.10 |
strto 시간과 날짜를 사용하여 현재와 비교하여 이전 달과 연도를 얻는 방법은 무엇입니까? (0) | 2023.08.10 |
함수가 비동기인지 어떻게 알 수 있습니까? (0) | 2023.08.10 |