游乐游手机版
首页/前端开发/文章详情

ExtJS4动态生成Grid导出Excel实现方法

时间:2026-06-11 07:08
搜索了许多相关案例后,大多数新手依然不清楚如何将这些示例应用到自己的项目中。通过深入分析源码,我花费了几乎一整夜的时间,终于成功实现了最基本的导出下载功能。与此同时,还修复了两个常见问题:一是重复下载表格时会报错,二是使用 Grid 初始化时出现的 Bug。下面我将完整记录整个配置过程,方便日后复用

搜索了许多相关案例后,大多数新手依然不清楚如何将这些示例应用到自己的项目中。通过深入分析源码,我花费了几乎一整夜的时间,终于成功实现了最基本的导出下载功能。与此同时,还修复了两个常见问题:一是重复下载表格时会报错,二是使用 Grid 初始化时出现的 Bug。下面我将完整记录整个配置过程,方便日后复用。

第一步,下载所需的核心 JS 文件——我已经提前打包整合完成。第二步,在你的 HTML 文件中正确引入文件,务必确认路径无误。我的引用示例是这样的:

第三步,在 Ext.onReady() 的起始位置添加以下代码,用于设置命名空间和模块路径:

Ext.Loader.setConfig({ enabled: true });
Ext.Loader.setPath('Ext.ux.exporter', '../export/exporter');
Ext.require([
    'Ext.ux.exporter.Exporter'
]);

第四步,实际调用非常简单。在需要导出功能的 Grid 配置中加入 exporterbutton 组件:

xtype: 'exporterbutton',
// store: store
component: Ext.getCmp('gird_a')

这里提供两种初始化方式:一种是通过 store 传递数据,利用 store 中的 fields 和 data 生成 Excel 文件;另一种则直接绑定 Grid 组件。由于我的 store 中字段名全部是英文,导出后列名也变为英文,因此我选择了第二种方式——直接绑定 Grid 对象。

接下来介绍我对原始代码所做的具体修改。

第一个修改:在 exporter.js 的第 40 行,调整了获取 columns 的方式。原始写法为 grid.columns,但我发现动态生成 Grid 后,reconfigure 会将 columns 存储在 grid.columnManager.columns 中,因此修改为:

var columns = Ext.Array.filter(grid.columnManager.columns, ...);

第二个修改:在 workbook.js 的第 77、78 行新增了两行初始化代码,解决了每次生成 Excel 时未清空历史数据导致的格式错误问题:

this.styles = [];
this.worksheets = [];

经过上述简单的调整,现在任何 Grid 都能轻松导出,并且支持自定义列——即导出的是表格当前显示的列,而非所有隐藏列。

效果图如下:

导出效果图1 导出效果图2
来源:https://www.jb51.net/article/49607.htm
上一篇Extjs FileUploadField文件上传出现两个按钮的解决方法 下一篇ExtJS4表格嵌套rowExpander行展开应用
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Layui弹出层监听子页面键盘快捷键实现方法
前端开发 · 2026-07-06

Layui弹出层监听子页面键盘快捷键实现方法

子页面键盘事件监听需在DOM加载完成后绑定,父页无法直接监听子页按键,必须由子页自身监听后通过parent或postMessage通知父页。典型写法为子页调用父页已定义的关闭函数。需注意焦点状态、输入法及layui版本兼容性等陷阱。

Layui表单提交时携带当前页面Meta信息的实现方法
前端开发 · 2026-07-06

Layui表单提交时携带当前页面Meta信息的实现方法

Layui表单提交不会自动携带页面Meta信息,需在form on( submit )回调中手动读取meta内容并拼接到表单数据,注意后端字段映射及特殊字符编码,多meta时按需选取。

HTML5拖拽事件流状态转移监控调试
前端开发 · 2026-07-06

HTML5拖拽事件流状态转移监控调试

HTML5拖拽事件流易因漏监听或未调用preventDefault而中断。需掌握dragstart设置数据、dragover接受放置、drop触发条件等关键点。通过统一日志捕获事件上下文、识别常见状态丢失场景并配合可视化面板,可清晰定位拖拽过程断点。

uni-app实现小红书商品详情图卡片切换
前端开发 · 2026-07-06

uni-app实现小红书商品详情图卡片切换

通过手写touch事件与transform控制五张卡片,动态计算translateX、scale、opacity及z-index模拟层叠滑动效果。滑动距离超过80rpx触发切换,否则复位。图片仅渲染当前及前后两张,有效优化加载性能与渲染效率。

图像旋转倾斜与扭曲的Canvas像素矩阵变换
前端开发 · 2026-07-06

图像旋转倾斜与扭曲的Canvas像素矩阵变换

Canvas图像变形本质是操作坐标系,图像被动跟随。旋转需先平移原点至目标中心再旋转后复位;倾斜通过仿射变换矩阵实现;扭曲无原生API,可用分块模拟或转用WebGL。每次变换前保存状态,完成后恢复,避免坐标系偏移。