2011-12-19 95 views

回答

1

拉力添加爲Excel看起來不錯,但它僅適用於Office 2010和我們停留在2007年。但我沒有找到這個解決方案很簡單,它在Firefox的作​​品。點擊時嚮應用程序添加了一個按鈕,我將表格的div_id和標題一起傳入。

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

var onClicked = function(sender, eventArgs) { 
    var buttonValue = eventArgs.value; 
    tableToExcel('mashup_table', 'Reviews Report Table'); 
}; 
+0

我使用了類似的過程,它工作得很好 - 但我在網格中的ID列,鏈接指向一個位置上的C:\而不是rally1.rallydev.com - 有解決這個問題的簡單方法? – 2013-08-05 21:20:14

+0

明白了 - 只需將其替換爲我想要的前綴即可 – 2013-08-05 21:41:35

0

邁克爾,

你可以嘗試使用data URI scheme,使您的出口工作。可以從AppSdk表中獲取數據並創建逗號分隔的字符串。然後,您可以製作其中一個特殊URI,以.csv格式下載內容並在Excel中打開它們。

我們一直在踢周圍的想法是讓SDK能夠將它的數據來自其組件出口的,但缺乏恆定的支持數據URI一直堵點。 我不知道你必須在內部支持哪些瀏覽器,但這對客戶端解決方案來說可能是一個不錯的開始。

Here是與您可能會發現有用的ExtJS的有效的解決方案。

相關問題