我有一个包含大量记录的网格。我使用过滤器根据需要过滤数据。但我想将过滤后的数据导出到 Excel 表以供进一步使用。
我浏览了一些可用的文章,但它们似乎不同并且与最新的 4.2 版本不兼容。
请帮助我以简单的方式实现这一目标。
非常感谢!
对于 extjs < 4 http://edspencer.net/2009/11/24/ext-ux-exporter-export-any-grid-to-excel-or-csv/
对于 extjs >= 4 http://www.sencha.com/forum/showthread.php?136598-Export-store-to-Excel
为 Ext JS 4成功实现了这种方法。要赋予它抽象类的灵活性,请遵循以下说明:
将所有“this”函数引用替换为全局函数调用。
将“grid”参数添加到从条目一开始的所有函数(downloadExcelXml())。
将剩余的“this”调用替换为网格引用(因为函数应该在网格内起作用)。
现在在你的网格构造函数中添加这个按钮,并像这样调用 downloadExcelXml() 作为处理程序:
exportButton = {
xtype: 'button',
text: 'xls',
listeners: {
click: function (button, event, eOpts) {
downloadExcelXml(
false,
"TableHeader",
eOpts.data.grid);
},
data: {
grid: this
}
};
据我所知,如果没有跨浏览器方式的服务器端实现,这是不可能的。
理论上,您可以通过从存储中读取当前记录并使用 base64 对其进行编码来创建OpenXML文档字符串。然后将其写入Data Uri
. 第一个不允许除图像以外的内联数据的是 IE,因此由于大小和图像等限制,这不适用于所有 IE 浏览器版本。这将是没有最新实现的原因。