2011-08-05 24 views
18

Muốn Xuất bảng html động để nổi trội trong javascript là có cách nào tôi có thể làm làm trong trình duyệt firefox mà không sử dụng đối tượng activex trong mã Xin vui lòng giúp tôiXuất bảng html động để nổi trội trong javascript trong trình duyệt firefox

+0

Bằng cách nào là Java có liên quan? – Thomas

+0

Mã Jsp chứa một nút Xuất sang Excel mà khi được bấm vào bảng động trong lưới sẽ được tạo bằng excel với css. Mã nút này được kết nối với JavaScript – Siddharth

Trả lời

0

AFAIK không có thư viện để tạo tệp excel thực trong JavaScript nhưng bạn có thể thử và xuất bảng trong HTML sang tệp có đuôi .xls.

+1

bạn có thể giải thích chi tiết – Siddharth

+0

@Siddharth, hãy xem cách viết tệp sử dụng JavaScript và sau đó chỉ cần lặp qua phần DOM đại diện cho bảng và viết HTML tương ứng vào tệp. Lưu ý rằng bạn cũng cần thêm tiêu đề '' và chân trang tương ứng. – Thomas

0

Có phần mở rộng table2clipboard cho firefox. Bạn cũng có thể tạo đầu ra csv từ cây DOM theo cách thủ công và cho phép người dùng lưu nó dưới dạng tệp csv. Excel có thể nhập từ CSV.

+0

Tôi có một nút Xuất sang Excel mà khi nhấp vào bảng html động sẽ được tạo ra trong excel.Vui lòng bạn có thể giúp – Siddharth

+0

Trong javascript thuần túy, bạn có thể tạo tệp scv bằng cách sử dụng lược đồ Data URI. Nhưng điều này có một số hạn chế. Tùy chọn khác là đăng dữ liệu trở lại máy chủ và để máy chủ xây dựng tệp CSV và phân phối nó. –

31

Here's a function để làm điều này trong Firefox với JavaScript, giả sử người dùng đã cài đặt Excel trên máy tính của họ:

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 sống Ví dụ:

+2

nhờ công việc của nó chỉ là một vấn đề nhỏ của nó không xuất khẩu css từ bảng để excel làm thế nào tôi có thể làm điều này trong function.Can u plz này giúp tôi – Siddharth

+1

Không có cách nào để có được điều này để làm việc với IE? Hoạt động tốt trong FF nhưng tôi thực sự cần một giải pháp trình duyệt chéo. – kramden88

+0

Giải pháp IE tại đây http://stackoverflow.com/questions/6566831/how-to-export-html-table-to-excel-using-javascript –

7

Bạn có thể tự động tạo tệp Excel ở định dạng SpreadsheetDataXML cho phép bạn tùy chỉnh bảng, kiểu và biểu mẫu ô theo cú pháp HTML.

Để thực hiện công việc này trong IE, bạn cần sử dụng đối tượng Blob và sau đó gọi phương thức msSaveBlob. Đối với FF và Chrome, bạn chỉ có thể thay đổi dữ liệu của href số liệu: application/vnd.ms-excel

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'); 
    } 
} 

dụ làm việc: http://jsfiddle.net/h42y4ke2/21/ YT hướng dẫn: https://www.youtube.com/watch?v=gx_yGY6NHkc

Các vấn đề liên quan