【发布时间】:2011-12-19 22:06:16
【问题描述】:
在 Rally 中,我们有一个显示表格的自定义应用程序。有没有办法将此表导出到 Excel?
【问题讨论】:
标签: rally
在 Rally 中,我们有一个显示表格的自定义应用程序。有没有办法将此表导出到 Excel?
【问题讨论】:
标签: rally
Rally Add-in for 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');
};
【讨论】:
目前无法从 App 中的表中导出数据。
【讨论】:
迈克尔,
您可以尝试使用data URI scheme 进行导出。可以从 AppSdk 表中获取数据并创建逗号分隔的字符串。然后,您可以创建一个特殊的 URI 以将内容下载为 .csv 并在 excel 中打开它们。
我们一直在考虑让 SDK 能够将其数据从其组件导出,但缺乏对数据 URI 的持续支持一直是一个障碍。 我不知道您必须在内部支持哪些浏览器,但这对于客户端解决方案来说可能是一个不错的开始。
Here 是一种适用于 ExtJs 的解决方案,您可能会发现它很有用。
【讨论】: