---
title: "树、文件与导入导出"
description: "树结构、下载、文件和 Excel 操作。 共 36 个 Wb 公共方法。"
---

> Documentation Index
> Fetch the complete documentation index at: https://ag.879818327.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 树、文件与导入导出

本文档由项目中的 `wb-debug.js` 自动提取。每个条目包含源码提炼的使用说明、优先采用源码示例的用法示例，以及完整 JSDoc 供参数和行为核对。

## Wb.getFilename

```javascript
Wb.getFilename(path);
```

源码：`wb-debug.js:2290`

**使用说明**

获取路径中的文件部份名称。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getFilename("示例值");
```

**源码注释**

```javascript
/**
 * 获取路径中的文件部份名称。
 * @param {String} path 包含文件名称的路径。
 * @return {String} 文件部分名称。
 */
```

## Wb.getPath

```javascript
Wb.getPath(path);
```

源码：`wb-debug.js:2304`

**使用说明**

获取文件的路径部份字符串。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getPath("示例值");
```

**源码注释**

```javascript
/**
 * 获取文件的路径部份字符串。
 * @param {String} path 包含文件名称的路径。
 * @return {String} 路径部分字符串。
 */
```

## Wb.extractFileExt

```javascript
Wb.extractFileExt(fileName);
```

源码：`wb-debug.js:2318`

**使用说明**

获取文件中的扩展名部分。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.extractFileExt("示例值");
```

**源码注释**

```javascript
/**
 * 获取文件中的扩展名部分。
 * @param {String} fileName 文件名称。
 * @return {String} 文件扩展名。
 */
```

## Wb.getError

```javascript
Wb.getError(text, errorCode);
```

源码：`wb-debug.js:2332`

**使用说明**

获取字符串中指定代码的错误信息片断。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getError(
  "示例值",
  /* errorCode */ undefined
);
```

**源码注释**

```javascript
/**
 * 获取字符串中指定代码的错误信息片断。
 * @param {String} text 包含错误信息和代码的字符串。
 * @param {Number} errorCode 错误代码。
 * @return {String} 如果指定的错误代码存在则返回错误信息片断字符串，否则返回null。
 */
```

## Wb.select

```javascript
Wb.select(object);
```

源码：`wb-debug.js:2346`

**使用说明**

选择指定的对象，把指定对象设置为选择状态。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.select(app.object);
```

**源码注释**

```javascript
/**
 * 选择指定的对象，把指定对象设置为选择状态。
 *
 * @param {Object} object 需要选择的对象。
 */
```

## Wb.mimicClick

```javascript
Wb.mimicClick(view, record, item, index, e);
```

源码：`wb-debug.js:2365`

**使用说明**

指定对象按回车键时模仿触发itemclick或itemdblclick事件。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.mimicClick(
  app.view,
  /* record */ undefined,
  /* item */ undefined,
  0,
  /* e */ undefined
);
```

**源码注释**

```javascript
/**
 * 指定对象按回车键时模仿触发itemclick或itemdblclick事件。
 */
```

## Wb.addPrefix

```javascript
Wb.addPrefix(prefix, name);
```

源码：`wb-debug.js:2380`

**使用说明**

在指定名称前面添加前缀。如果前缀不为空返回“前缀.名称”，否则直接返回名称。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.addPrefix(
  "示例值",
  "示例值"
);
```

**源码注释**

```javascript
/**
 * 在指定名称前面添加前缀。如果前缀不为空返回“前缀.名称”，否则直接返回名称。
 * @param {String} prefix 前缀。
 * @param {String} name 名称。
 * @return {String} 添加前缀后的名称或名称本身。
 */
```

## Wb.getLang

```javascript
Wb.getLang(langs);
```

源码：`wb-debug.js:2390`

**使用说明**

根据Str.lang为当前语言代码，获取langs中对应值组成的对象。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getLang([]);
```

**源码注释**

```javascript
/**
 * 根据Str.lang为当前语言代码，获取langs中对应值组成的对象。
 * @param {Object} langs 按不同语言定义的值对象。
 * @return {Object} 根据当前语言提取值后组成的对象。
 */
```

## Wb.getModifiedTitle

```javascript
Wb.getModifiedTitle(tab, turnFirstCard);
```

源码：`wb-debug.js:2403`

**使用说明**

获取tabPanel中被修改的选项卡的概要信息描述。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getModifiedTitle(
  app.tab,
  /* turnFirstCard */ undefined
);
```

**源码注释**

```javascript
/**
 * 获取tabPanel中被修改的选项卡的概要信息描述。
 * @param {Ext.tab.Panel} tab 需要获取信息的TabPanel对象。
 * @param {Boolean} [turnFirstCard] 是否转到首个被修改的选项卡，默认为false。
 * @return {String} 如果tab中的选项卡被修改则返回被修改的选项卡概要信息，否则返回null。
 */
```

## Wb.fromPanel

```javascript
Wb.fromPanel(panel, e);
```

源码：`wb-debug.js:2430`

**使用说明**

判断事件是否触发自面板。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.fromPanel(
  app.panel,
  /* e */ undefined
);
```

**源码注释**

```javascript
/**
 * 判断事件是否触发自面板。
 * @param {Panel} panel 面板对象。
 * @param {Event} e 事件对象。
 * @return {Boolean} 如果事件触发自面板返回true，否则返回false。
 */
```

## Wb.copy

```javascript
Wb.copy(node);
```

源码：`wb-debug.js:2449`

**使用说明**

复制节点及其所有子节点。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.copy(/* node */ undefined);
```

**源码注释**

```javascript
/**
 * 复制节点及其所有子节点。
 * @param {Ext.data.NodeInterface} node 复制的节点。
 * @return {Ext.data.NodeInterface} 复制后的节点。
 */
```

## Wb.append

```javascript
Wb.append(nodes, parentNode, isCopy, doSelect);
```

源码：`wb-debug.js:2484`

**使用说明**

添加或移动一组节点至指定节点，并成为该节点的子节点。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.append(
  [],
  /* parentNode */ undefined,
  true,
  true
);
```

**源码注释**

```javascript
/**
 * 添加或移动一组节点至指定节点，并成为该节点的子节点。
 * @param {Ext.data.NodeInterface/Ext.data.NodeInterface[]} nodes 需要添加或移动的源节点列表。
 * @param {Ext.data.NodeInterface} parentNode 目标节点，源节点列表中的每个节点将被添加或移动到该节点下。
 * @param {Boolean} [isCopy] 是否复制源节点并添加到目标节点下，否则将移动源节点至目标节点下，默认为false。
 * @param {Boolean} [doSelect] 是否选择添加的节点，默认为true。
 * @return {Ext.data.NodeInterface[]} 被复制或移动的节点列表。
 */
```

## Wb.insertBefore

```javascript
Wb.insertBefore(nodes, refNode, isCopy, doSelect);
```

源码：`wb-debug.js:2514`

**使用说明**

插入或移动一组节点至指定节点上方，并成为该节点的同级节点。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.insertBefore(
  [],
  /* refNode */ undefined,
  true,
  true
);
```

**源码注释**

```javascript
/**
 * 插入或移动一组节点至指定节点上方，并成为该节点的同级节点。
 * @param {Ext.data.NodeInterface/Ext.data.NodeInterface[]} nodes 需要插入或移动的源节点列表。
 * @param {Ext.data.NodeInterface} refNode 目标节点，源节点列表中的每个节点将被插入或移动到该节点上方。
 * @param {Boolean} [isCopy] 是否复制源节点并插入到目标节点上方，否则将移动源节点至目标节点上方，默认为false。
 * @param {Boolean} [doSelect] 是否选择添加的节点，默认为true。
 * @return {Ext.data.NodeInterface[]} 被复制或移动的节点列表。
 */
```

## Wb.insertAfter

```javascript
Wb.insertAfter(nodes, refNode, isCopy, doSelect);
```

源码：`wb-debug.js:2543`

**使用说明**

插入或移动一组节点至指定节点下方，并成为该节点的同级节点。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.insertAfter(
  [],
  /* refNode */ undefined,
  true,
  true
);
```

**源码注释**

```javascript
/**
 * 插入或移动一组节点至指定节点下方，并成为该节点的同级节点。
 * @param {Ext.data.NodeInterface/Ext.data.NodeInterface[]} nodes 需要插入或移动的源节点列表。
 * @param {Ext.data.NodeInterface} refNode 目标节点，源节点列表中的每个节点将被插入或移动到该节点下方。
 * @param {Boolean} [isCopy] 是否复制源节点并插入到目标节点下方，否则将移动源节点至目标节点下方，默认为false。
 * @param {Boolean} [doSelect] 是否选择添加的节点，默认为true。
 * @return {Ext.data.NodeInterface[]} 被复制或移动的节点列表。
 */
```

## Wb.expand

```javascript
Wb.expand(object, isCollapse);
```

源码：`wb-debug.js:2573`

**使用说明**

全部展开或收缩选择的节点，如果没有节点被选中，则展开或收缩全部节点。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.expand(
  app.object,
  true
);
```

**源码注释**

```javascript
/**
 * 全部展开或收缩选择的节点，如果没有节点被选中，则展开或收缩全部节点。
 * @param {Ext.tree.Panel/Ext.data.TreeStore} object 树或绑定的store对象。
 * @param {Boolean} [isCollapse] 是否执行收缩操作，默认为false。
 */
```

## Wb.collapse

```javascript
Wb.collapse(object);
```

源码：`wb-debug.js:2605`

**使用说明**

全部收缩选择的节点，如果没有节点被选中，则收缩全部节点。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.collapse(app.object);
```

**源码注释**

```javascript
/**
 * 全部收缩选择的节点，如果没有节点被选中，则收缩全部节点。
 * @param {Ext.tree.Panel/Ext.data.TreeStore} object 树或绑定的store对象。
 */
```

## Wb.isModal

```javascript
Wb.isModal();
```

源码：`wb-debug.js:2613`

**使用说明**

判断当前页面是否为模态，如果当前页面存在可视的模态对话框和全屏mask则表示模态，否则为非模态。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.isModal();
```

**源码注释**

```javascript
/**
 * 判断当前页面是否为模态，如果当前页面存在可视的模态对话框和全屏mask则表示模态，否则为非模态。
 * @return {Boolean} true模态，false非模态。
 */
```

## Wb.getId

```javascript
Wb.getId();
```

源码：`wb-debug.js:2627`

**使用说明**

生成客户端当前页面以"wb"开头的唯一字符串。该字符串仅保证在该页面内唯一。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getId();
```

**源码注释**

```javascript
/**
 * 生成客户端当前页面以"wb"开头的唯一字符串。该字符串仅保证在该页面内唯一。
 * @return {String} 当前页面内唯一的字符串。
 */
```

## Wb.getTreeTools

```javascript
Wb.getTreeTools(config);
```

源码：`wb-debug.js:2641`

**使用说明**

生成嵌入到树控件标题栏中的操作工具按钮，实现对树节点的刷新、伸缩和查找等功能。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getTreeTools({ /* 配置项 */ });
```

**源码注释**

```javascript
/**
 * 生成嵌入到树控件标题栏中的操作工具按钮，实现对树节点的刷新、伸缩和查找等功能。
 * @param {Object} config 工具选项配置对象。
 * @param {Booolean} config.refresh 是否生成刷新按钮。
 * @param {Booolean} config.expand 是否生成展开按钮。
 * @param {Booolean} config.collapse 是否生成收缩按钮。
 * @param {Booolean} config.search 是否生成查找按钮。
 * @return {Object} 工具按钮配置对象。
 */
```

## Wb.save

```javascript
Wb.save(combobox);
```

源码：`wb-debug.js:2753`

**使用说明**

保存下拉框输入的历史值并维护其列表，最后一次输入值将显示在下拉列表的第一行。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.save(app.combobox);
```

**源码注释**

```javascript
/**
 * 保存下拉框输入的历史值并维护其列表，最后一次输入值将显示在下拉列表的第一行。
 * @param {Ext.form.field.ComboBox} combobox 需要保存历史输入值的下拉框。
 */
```

## Wb.reverse

```javascript
Wb.reverse(nodes);
```

源码：`wb-debug.js:2769`

**使用说明**

按节点深度对节点列表进行逆向排序。该操作将直接对输入的参数排序。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.reverse([]);
```

**源码注释**

```javascript
/**
 * 按节点深度对节点列表进行逆向排序。该操作将直接对输入的参数排序。
 * @param {Ext.data.NodeInterface[]} nodes 需要排序的节点列表。
 * @return {Ext.data.NodeInterface[]} 排序后的节点列表。
 */
```

## Wb.selFirst

```javascript
Wb.selFirst(object);
```

源码：`wb-debug.js:2779`

**使用说明**

选择树或表格的第一个节点或记录。如果是树，那么该操作将只会被执行一次。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.selFirst(app.object);
```

**源码注释**

```javascript
/**
 * 选择树或表格的第一个节点或记录。如果是树，那么该操作将只会被执行一次。
 * @param {Component} object 操作的树或表格对象或其绑定的store对象。
 */
```

## Wb.selectAnyNode

```javascript
Wb.selectAnyNode(object, position);
```

源码：`wb-debug.js:2800`

**使用说明**

选择树或表格的任意一个节点或记录。如果是树，那么该操作将只会被执行一次。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.selectAnyNode(
  app.object,
  0
);
```

**源码注释**

```javascript
/**
 * 选择树或表格的任意一个节点或记录。如果是树，那么该操作将只会被执行一次。
 * @param {Component} object 操作的树或表格对象或其绑定的store对象。
 */
```

## Wb.getInfo

```javascript
Wb.getInfo(object, field);
```

源码：`wb-debug.js:2826`

**使用说明**

获取记录集的概要信息文本，概要信息将以指定字段值或值加记录数量的形式提示。

**用法示例**

以下示例直接取自源码注释。

```javascript
Wb.confirm('确定删除 '+Wb.getInfo(grid1), handler);
```

**源码注释**

```javascript
/**
 * 获取记录集的概要信息文本，概要信息将以指定字段值或值加记录数量的形式提示。
 *
 * Example:
 *
 *     Wb.confirm('确定删除 '+Wb.getInfo(grid1), handler);
 *
 * @param {Object/Ext.data.Model[]} object 记录集或表格、树等对象，如果不是记录集将获取对象的选择记录作为记录集。
 * @param {String} [field] 概要信息中使用的字段名称，该字段内容将显示在概要信息中。默认为text。
 * @return {String} 生成的概要信息。如果记录集为空，则返回空字符串。
 */
```

## Wb.getSection

```javascript
Wb.getSection(string, spliter, sectionIndex);
```

源码：`wb-debug.js:2849`

**使用说明**

获取以特定分隔符分隔的字符串第n个分隔符开始至字符串结尾的子串。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getSection(
  "示例值",
  /* spliter */ undefined,
  0
);
```

**源码注释**

```javascript
/**
 * 获取以特定分隔符分隔的字符串第n个分隔符开始至字符串结尾的子串。
 * @param {String} string 需要获取子串的字符串。
 * @param {String} spliter 字符串中的分隔符。
 * @param {Number} sectionIndex 指定第几个分隔符所在的位置作为子串的开始位置。第一个为0，第二个为1，依此类推。
 * @return {String} 截取的子串。
 */
```

## Wb.download

```javascript
Wb.download(url, params, isUpload, method);
```

源码：`wb-debug.js:2867`

**使用说明**

下载指定链接的文件或资源。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.download(
  "m?xwl=module/action",
  { /* 参数或数据 */ },
  true,
  "示例值"
);
```

**源码注释**

```javascript
/**
 * 下载指定链接的文件或资源。
 * @param {String/Object} url url路径或资源对象。
 * @param {Object} [params] 可选参数。
 * @param {Boolean} [isUpload] 是否是文件上传模式。
 * @param {String} [method] 提交使用的方法。默认为'POST'。
 */
```

## Wb.exclude

```javascript
Wb.exclude(object, names);
```

源码：`wb-debug.js:2891`

**使用说明**

删除对象中指定名称的属性，并返回删除这些属性后的新对象。该方法不影响原对象的值。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.exclude(
  app.object,
  /* names */ undefined
);
```

**源码注释**

```javascript
/**
 * 删除对象中指定名称的属性，并返回删除这些属性后的新对象。该方法不影响原对象的值。
 * @param {Object } object 需要删除属性的对象。
 * @param {Array/String} names 需要删除的属性名称数组或以逗号分隔的属性名称组成的字符串。
 * @return {Object} 删除属性后的新对象。
 */
```

## Wb.createObject

```javascript
Wb.createObject(items);
```

源码：`wb-debug.js:2907`

**使用说明**

把数组转换为对象，对象的名称为数组项，值为true。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.createObject([]);
```

**源码注释**

```javascript
/**
 * 把数组转换为对象，对象的名称为数组项，值为true。
 * @param {Array} items 需要转换的数组。
 * @return {Object} 转换后的对象。如果没有内容将返回空对象。
 */
```

## Wb.loadExcel

```javascript
Wb.loadExcel(options);
```

源码：`wb-debug.js:2926`

**使用说明**

使用excel模块文件转换为web表单。并加载到指定的容器控件中。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.loadExcel({ /* 配置项 */ });
```

**源码注释**

```javascript
/**
 * 使用excel模块文件转换为web表单。并加载到指定的容器控件中。
 * @param {Object} options 配置参数对象。
 * @param {Container} options.container 容器控件，加载生成的表单到该控件。
 * @param {String} options.file Excel模板文件路径，基于wb/system/excel目录下的相对路径。
 * @param {Object} [options.params] 参数对象，提交请求时发送的参数。
 * @param {Function} [options.success] 调用成功之后的回调事件，可用参数为response对象，this指向container。
 * @param {Function} [options.failure] 调用失败之后的回调事件，可用参数为response对象，this指向container。
 * @param {Number} [options.sheetIndex] 使用的Excel模板文件中Sheet的索引号。默认为0。
 * @param {String} [options.align] 生成的表单的基于容器的水平对齐方式，有效值为left, center和right。默认为center。
 * @param {Object...} [options.more] 其他参数将直接应用于Wb.request方法内的参数。
 */
```

## Wb.getExcel

```javascript
Wb.getExcel(params, tplFileName, sheetIndex, exportFileName);
```

源码：`wb-debug.js:2969`

**使用说明**

把数据导入到Excel模板文件中，并下载该Excel文件。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getExcel(
  { /* 参数或数据 */ },
  /* tplFileName */ undefined,
  0,
  /* exportFileName */ undefined
);
```

**源码注释**

```javascript
/**
 * 把数据导入到Excel模板文件中，并下载该Excel文件。
 * @param {Object} params 导入的数据。
 * @param {String} tplFileName 基于wb/system/excel目录的Excel模板文件路径。
 * @param {Boolean} [sheetIndex] 使用的Excel Sheet索引号。-1表示使用所有Sheet。默认为-1。
 * @param {String} [exportFileName] 输出的文件名。默认为tplFileName。
 */
```

## Wb.toArray

```javascript
Wb.toArray(data);
```

源码：`wb-debug.js:2982`

**使用说明**

把指定的数据转换为数组，如果值为null、undefined或数组直接返回该值，否则返回[value]值。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.toArray({ /* 参数或数据 */ });
```

**源码注释**

```javascript
/**
 * 把指定的数据转换为数组，如果值为null、undefined或数组直接返回该值，否则返回[value]值。
 * @param {Object/Array} value 需要转换为数组的值。
 * @return {Array} 返回的数组或null/undefined。
 */
```

## Wb.getTopColumns

```javascript
Wb.getTopColumns(grid);
```

源码：`wb-debug.js:2993`

**使用说明**

获取表格的顶层列对象组成的数组。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getTopColumns(app.grid);
```

**源码注释**

```javascript
/**
 * 获取表格的顶层列对象组成的数组。
 * @param {Ext.grid.Panel} grid 表格对象。
 * @return {Column[]} 列数组。
 */
```

## Wb.mergeRows

```javascript
Wb.mergeRows(grid);
```

源码：`wb-debug.js:3010`

**使用说明**

把表格中具有相同值的行合并为一行。该方法将扫描所有列，如果指定列允许合并行，则把相同值的行进行合并。 设置列对象的mergeRow属性为true，则标记该列需要合并行，使用该方法后所有标记该属性为true的列都将执行合并行的操作。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.mergeRows(app.grid);
```

**源码注释**

```javascript
/**
 * 把表格中具有相同值的行合并为一行。该方法将扫描所有列，如果指定列允许合并行，则把相同值的行进行合并。
 * 设置列对象的mergeRow属性为true，则标记该列需要合并行，使用该方法后所有标记该属性为true的列都将执行合并行的操作。
 * @param {Ext.grid.Panel} grid 需要执行合并行的表格对象。
 */
```

## Wb.mergeCols

```javascript
Wb.mergeCols(grid);
```

源码：`wb-debug.js:3050`

**使用说明**

把表格中具有相同值的列合并为一列。该方法将扫描所有行，如果指定列允许合并行，则把相同值的列进行合并。 设置列对象的mergeColGroup属性以标识合并列的组名，使用该方法后具有相同mergeColGroup属性的列都将执行合并列的操作。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.mergeCols(app.grid);
```

**源码注释**

```javascript
/**
 * 把表格中具有相同值的列合并为一列。该方法将扫描所有行，如果指定列允许合并行，则把相同值的列进行合并。
 * 设置列对象的mergeColGroup属性以标识合并列的组名，使用该方法后具有相同mergeColGroup属性的列都将执行合并列的操作。
 * @param {Ext.grid.Panel} grid 需要执行合并列的表格对象。
 */
```

## Wb.getHeadersold

```javascript
Wb.getHeadersold(columns, headers);
```

源码：`wb-debug.js:3109`

**使用说明**

遗留列头提取辅助方法：遍历列配置，跳过不允许导出的列，并递归构造 text、对齐、字段、格式和宽度等元数据。函数体依赖 getHeaders、fieldTypes 等外部变量，不建议脱离旧导出流程单独调用。

**用法示例**

以下示例依据函数体中的实际调用关系整理。

```javascript
var headers = Wb.getHeadersold(Wb.getTopColumns(app.grid), []);
```

**源码注释**

```javascript
/**
 * 源码未提供 JSDoc。
 */
```

## Wb.exportDataold

```javascript
Wb.exportDataold(component, type, isAll);
```

源码：`wb-debug.js:3172`

**使用说明**

导出表格中的数据为指定格式的输出。 导出使用客户端数据推送然后输出数据，否则在服务器端重新生成数据然后输出数据。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.exportDataold(
  app.component,
  /* type */ undefined,
  true
);
```

**源码注释**

```javascript
/**
 * 导出表格中的数据为指定格式的输出。
 * @param {GridPanel/Store} component 需要导出的表格或关联的store对象。
 * @param {String} [type] 输出数据的格式，默认为Excel。
 * @param {Boolean} [isAll] 是否导出表格所有页数据，默认为当前页。如果值为false，
 * 导出使用客户端数据推送然后输出数据，否则在服务器端重新生成数据然后输出数据。
 */
```

Source: https://ag.879818327.xyz/api/tree-and-files/index.mdx
