WPS JS宏实现获取当前工作表中的所有数据
时间: 2025-07-20 07:27:33 浏览: 9
<think>我们使用WPS的JS宏(实际上就是JavaScript API)来获取当前工作表中的所有数据。
在WPS中,我们可以通过`Application.ActiveWorkbook.ActiveSheet`来获取当前活动的工作表。
然后,我们可以通过`UsedRange`属性来获取工作表中有数据的区域。
接着,我们可以通过`Value`属性获取这个区域的所有值。
注意:`UsedRange`可能会包含一些空行或空列,但通常它表示实际使用的连续区域。
以下是代码示例:</think>在 WPS JS 宏中,获取当前工作表所有数据的核心方法是使用 `Range.UsedRange` 属性,它会自动识别包含数据的连续区域(忽略完全空白的行/列)。以下是详细实现方案:
```javascript
function GetAllSheetData() {
// 获取当前活动工作表
const sheet = Application.ActiveWorkbook.ActiveSheet;
// 获取包含数据的连续区域
const usedRange = sheet.UsedRange;
// 将数据读取为二维数组 (行优先)
const dataArray = usedRange.Value;
// 返回数据数组
return dataArray;
}
// 使用示例
function Main() {
const allData = GetAllSheetData();
// 打印数据到宏日志 (调试用)
for (let i = 0; i < allData.length; i++) {
console.log("Row " + (i+1) + ": " + allData[i].join(" | "));
}
// 实际使用时可直接操作 allData 二维数组
}
```
### 关键代码解析:
1. **`Application.ActiveWorkbook.ActiveSheet`**
获取当前工作簿的活动工作表对象,确保操作目标正确。
2. **`sheet.UsedRange`**
自动识别数据区域(从第一个非空单元格到最后一个非空单元格组成的矩形区域),无需手动计算行列范围。
3. **`usedRange.Value`**
将区域数据读取为 JavaScript 二维数组:
- 第一维度:行索引(`allData[0]` 是第一行)
- 第二维度:列索引(`allData[0][0]` 是 A1 单元格)
### 注意事项:
1. **空值处理**
空白单元格在数组中会以 `null` 表示,可通过后续遍历处理:
```javascript
if (allData[i][j] === null) {
// 处理空白单元格
}
```
2. **性能优化**
当数据量极大时(>10万单元格),一次性读取可能较慢。可分段处理:
```javascript
// 分段读取示例 (每次读取100行)
const rowCount = usedRange.Rows.Count;
for (let startRow = 1; startRow <= rowCount; startRow += 100) {
const endRow = Math.min(startRow + 99, rowCount);
const chunk = sheet.Range(sheet.Cells(startRow, 1), sheet.Cells(endRow, usedRange.Columns.Count)).Value;
// 处理chunk数据...
}
```
3. **动态区域更新**
若工作表数据可能变化,每次调用前应重置 `UsedRange`:
```javascript
sheet.UsedRange; // 重置区域识别
const freshData = sheet.UsedRange.Value;
```
### 应用场景示例:
```javascript
// 将数据转为JSON格式
function ExportToJson() {
const data = GetAllSheetData();
const headers = data[0]; // 假设第一行是表头
const result = [];
for (let i = 1; i < data.length; i++) {
const obj = {};
for (let j = 0; j < headers.length; j++) {
obj[headers[j]] = data[i][j] || ""; // 处理空值
}
result.push(obj);
}
return JSON.stringify(result, null, 2);
}
```
阅读全文
相关推荐


















