Appearance
适用于EXCEL文档的简化方法
说明:此节的方法都为了简便用户编程的难度,封装的Excel基本操作的方法。如果需做更细致的操作,请参考技术支持网站(dev.ntko.com)上的文档。
工作表操作
AddSheet
语法
javascript
AddSheet([Before], [After], [Count], [Type])
功能
增加一个电子表。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
Before | 可选 | string | sheet的名称或者索引 |
After | 可选 | string | sheet的名称或者索引 |
Count | 可选 | long | 插入数量 |
Type | 可选 | string | 可指定工作表类型 |
返回值
无返回值。
说明
增加一个电子表。可以根据模板插入新电子表。
工作表类型对照表
值 | 说明 |
---|---|
-4109 | 图表 |
-4116 | 对话框工作表 |
4 | Excel 版本 4 国际宏工作表 |
3 | Excel 版本 4 宏工作表 |
-4167 | 工作表 |
示例代码
javascript
// 基本用法 - 添加普通工作表
OCX_OBJ.AddSheet();
// 在指定位置前插入工作表
OCX_OBJ.AddSheet("Sheet2");
// 在指定位置后插入工作表
OCX_OBJ.AddSheet(null, "Sheet1");
// 插入多个工作表
OCX_OBJ.AddSheet(null, null, 3);
// 插入图表工作表
OCX_OBJ.AddSheet(null, null, 1, "-4109");
// 插入对话框工作表
OCX_OBJ.AddSheet(null, null, 1, "-4116");
GetSheetsCount
语法
javascript
GetSheetsCount()
功能
获取当前工作簿的工作表数量。
参数
无参数。
返回值
数值型;工作表数量。
说明
获取当前工作簿的工作表数量。
示例代码
javascript
// 获取工作表数量
var sheetCount = OCX_OBJ.GetSheetsCount();
console.log("当前工作簿有 " + sheetCount + " 个工作表");
// 检查工作表数量
if (OCX_OBJ.GetSheetsCount() < 3) {
OCX_OBJ.AddSheet(null, null, 3 - OCX_OBJ.GetSheetsCount());
}
单元格操作
GetRangeValue
语法
javascript
GetRangeValue(SheetName, RangeName)
功能
获取指定Excel表格区域的值。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
SheetName | 必选 | string | sheet的名称或者索引 |
RangeName | 必选 | string | 表格的区域名称,如:"A1" |
返回值
String型字符串。
说明
获取指定Excel表格区域的值。
示例代码
javascript
// 获取单个单元格值
var cellValue = OCX_OBJ.GetRangeValue("Sheet1", "A1");
console.log("A1单元格的值:", cellValue);
// 获取多个单元格值
var values = [];
for (var i = 1; i <= 5; i++) {
var value = OCX_OBJ.GetRangeValue("Sheet1", "A" + i);
values.push(value);
}
// 获取范围值
var rangeValue = OCX_OBJ.GetRangeValue("Sheet1", "A1:C3");
SetRangeValue
语法
javascript
SetRangeValue(SheetName, RangeName, varValue)
功能
设置指定Excel表格区域的值。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
SheetName | 必选 | string | sheet的名称或者索引 |
RangeName | 必选 | string | 表格的区域名称,如:"A1" |
varValue | 必选 | string | 设置的值 |
返回值
无返回值。
说明
设置指定Excel表格区域的值。
示例代码
javascript
// 设置单个单元格值
OCX_OBJ.SetRangeValue("Sheet1", "A1", "Hello World");
// 设置数字值
OCX_OBJ.SetRangeValue("Sheet1", "B1", "100");
// 设置日期值
OCX_OBJ.SetRangeValue("Sheet1", "C1", "2024-01-01");
// 批量设置值
var data = [
["姓名", "年龄", "部门"],
["张三", "25", "技术部"],
["李四", "30", "销售部"],
["王五", "28", "人事部"]
];
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
var cellAddress = String.fromCharCode(65 + j) + (i + 1);
OCX_OBJ.SetRangeValue("Sheet1", cellAddress, data[i][j]);
}
}
GetRangeFormula
语法
javascript
GetRangeFormula(SheetName, RangeName)
功能
获取指定Excel表格区域的公式。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
SheetName | 必选 | string | sheet的名称或者索引 |
RangeName | 必选 | string | 表格的区域名称,如:"A1" |
返回值
String型字符串。
说明
获取指定Excel表格区域的公式。
示例代码
javascript
// 获取单元格公式
var formula = OCX_OBJ.GetRangeFormula("Sheet1", "A1");
console.log("A1单元格的公式:", formula);
// 检查单元格是否有公式
function hasFormula(sheetName, cellAddress) {
var formula = OCX_OBJ.GetRangeFormula(sheetName, cellAddress);
return formula && formula.startsWith("=");
}
// 获取多个单元格的公式
var formulas = [];
for (var i = 1; i <= 10; i++) {
var formula = OCX_OBJ.GetRangeFormula("Sheet1", "A" + i);
formulas.push(formula);
}
SetRangeFormula
语法
javascript
SetRangeFormula(SheetName, RangeName, varValue)
功能
设置指定Excel表格区域的公式。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
SheetName | 必选 | string | sheet的名称或者索引 |
RangeName | 必选 | string | 表格的区域名称,如:"A1" |
varValue | 必选 | string | 设置的公式字符串 |
返回值
无返回值。
说明
设置指定Excel表格区域的公式。
示例代码
javascript
// 设置基本公式
OCX_OBJ.SetRangeFormula("Sheet1", "A1", "=sum(A1:A3)");
// 设置求和公式
OCX_OBJ.SetRangeFormula("Sheet1", "C1", "=A1+B1");
// 设置平均值公式
OCX_OBJ.SetRangeFormula("Sheet1", "D1", "=AVERAGE(A1:A10)");
// 设置条件公式
OCX_OBJ.SetRangeFormula("Sheet1", "E1", "=IF(A1>100,\"高\",\"低\")");
// 批量设置公式
function setupFormulas(sheetName) {
// 设置求和公式
for (var i = 1; i <= 10; i++) {
OCX_OBJ.SetRangeFormula(sheetName, "C" + i, "=A" + i + "+B" + i);
}
// 设置总计公式
OCX_OBJ.SetRangeFormula(sheetName, "A11", "=SUM(A1:A10)");
OCX_OBJ.SetRangeFormula(sheetName, "B11", "=SUM(B1:B10)");
OCX_OBJ.SetRangeFormula(sheetName, "C11", "=SUM(C1:C10)");
}
单元格属性设置
SetRangeLocked
语法
javascript
SetRangeLocked(SheetName, RangeName, isLocked)
功能
设置指定Excel表格区域的锁定属性。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
SheetName | 必选 | string | sheet的名称或者索引 |
RangeName | 必选 | string | 表格的区域名称,如:"A1" |
isLocked | 必选 | bool | 设定所指定的区域,在工作表被保护的情况下是否保护 |
返回值
无返回值。
说明
设置指定Excel表格区域的锁定属性。
注意:需要特别注意,本方法仅是设置锁定保护区域。方法执行后,工作表并没有立即进入锁定保护状态。必须要搭配调用文档控件的SetReadOnly方法或者VBA的Protect方法才有效。
示例代码
javascript
// 锁定单个单元格
OCX_OBJ.SetRangeLocked("Sheet1", "A1", true);
// 解锁单元格
OCX_OBJ.SetRangeLocked("Sheet1", "A1", false);
// 锁定范围
OCX_OBJ.SetRangeLocked("Sheet1", "A1:C10", true);
// 批量设置锁定状态
function setLockedRanges(sheetName, ranges, isLocked) {
ranges.forEach(function(range) {
OCX_OBJ.SetRangeLocked(sheetName, range, isLocked);
});
}
// 保护重要数据
function protectImportantData(sheetName) {
// 锁定标题行
OCX_OBJ.SetRangeLocked(sheetName, "A1:Z1", true);
// 锁定公式列
OCX_OBJ.SetRangeLocked(sheetName, "C:C", true);
// 解锁数据输入区域
OCX_OBJ.SetRangeLocked(sheetName, "A2:B100", false);
}
SetRangeColorIndex
语法
javascript
SetRangeColorIndex(SheetName, RangeName, colorIndex)
功能
设置指定Excel表格区域的颜色索引。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
SheetName | 必选 | string | sheet的名称或者索引 |
RangeName | 必选 | string | 表格的区域名称,如:"A1" |
colorIndex | 必选 | long | 颜色索引值 |
返回值
无返回值。
说明
设置指定Excel表格区域的颜色索引。
常用颜色索引对照表
索引值 | 颜色 | 索引值 | 颜色 |
---|---|---|---|
1 | 黑色 | 9 | 白色 |
2 | 白色 | 10 | 黄色 |
3 | 红色 | 11 | 浅绿色 |
4 | 绿色 | 12 | 浅蓝色 |
5 | 蓝色 | 13 | 浅红色 |
6 | 黄色 | 14 | 浅黄色 |
7 | 洋红色 | 15 | 浅洋红色 |
8 | 青色 | 16 | 浅青色 |
示例代码
javascript
// 设置单元格颜色
OCX_OBJ.SetRangeColorIndex("Sheet1", "A1", 3); // 红色
// 设置范围颜色
OCX_OBJ.SetRangeColorIndex("Sheet1", "A1:C3", 10); // 黄色
// 设置标题行颜色
OCX_OBJ.SetRangeColorIndex("Sheet1", "A1:Z1", 4); // 绿色
// 条件着色
function conditionalColoring(sheetName, range) {
var value = OCX_OBJ.GetRangeValue(sheetName, range);
if (parseFloat(value) > 100) {
OCX_OBJ.SetRangeColorIndex(sheetName, range, 3); // 红色
} else if (parseFloat(value) > 50) {
OCX_OBJ.SetRangeColorIndex(sheetName, range, 6); // 黄色
} else {
OCX_OBJ.SetRangeColorIndex(sheetName, range, 4); // 绿色
}
}
// 创建彩色表格
function createColorfulTable(sheetName) {
// 设置标题行
OCX_OBJ.SetRangeColorIndex(sheetName, "A1:E1", 4); // 绿色
// 设置数据行
for (var i = 2; i <= 10; i++) {
if (i % 2 === 0) {
OCX_OBJ.SetRangeColorIndex(sheetName, "A" + i + ":E" + i, 9); // 白色
} else {
OCX_OBJ.SetRangeColorIndex(sheetName, "A" + i + ":E" + i, 11); // 浅绿色
}
}
}
完整示例
Excel数据管理系统
javascript
// Excel数据管理系统
class ExcelDataManager {
// 创建工作表
static createSheet(sheetName, beforeSheet = null, afterSheet = null) {
if (beforeSheet) {
OCX_OBJ.AddSheet(beforeSheet);
} else if (afterSheet) {
OCX_OBJ.AddSheet(null, afterSheet);
} else {
OCX_OBJ.AddSheet();
}
}
// 获取工作表数量
static getSheetCount() {
return OCX_OBJ.GetSheetsCount();
}
// 设置单元格值
static setCellValue(sheetName, cellAddress, value) {
OCX_OBJ.SetRangeValue(sheetName, cellAddress, value);
}
// 获取单元格值
static getCellValue(sheetName, cellAddress) {
return OCX_OBJ.GetRangeValue(sheetName, cellAddress);
}
// 设置单元格公式
static setCellFormula(sheetName, cellAddress, formula) {
OCX_OBJ.SetRangeFormula(sheetName, cellAddress, formula);
}
// 获取单元格公式
static getCellFormula(sheetName, cellAddress) {
return OCX_OBJ.GetRangeFormula(sheetName, cellAddress);
}
// 设置单元格锁定
static setCellLocked(sheetName, cellAddress, isLocked) {
OCX_OBJ.SetRangeLocked(sheetName, cellAddress, isLocked);
}
// 设置单元格颜色
static setCellColor(sheetName, cellAddress, colorIndex) {
OCX_OBJ.SetRangeColorIndex(sheetName, cellAddress, colorIndex);
}
}
财务报表生成器
javascript
// 财务报表生成器
function generateFinancialReport() {
var sheetName = "财务报表";
// 1. 创建报表标题
function createReportHeader() {
ExcelDataManager.setCellValue(sheetName, "A1", "财务报表");
ExcelDataManager.setCellColor(sheetName, "A1", 4); // 绿色
// 设置标题行
var headers = ["项目", "1月", "2月", "3月", "合计"];
for (var i = 0; i < headers.length; i++) {
var cellAddress = String.fromCharCode(65 + i) + "2";
ExcelDataManager.setCellValue(sheetName, cellAddress, headers[i]);
ExcelDataManager.setCellColor(sheetName, cellAddress, 4); // 绿色
}
}
// 2. 填充数据
function fillReportData() {
var data = [
["收入", "10000", "12000", "15000"],
["支出", "8000", "9000", "11000"],
["利润", "2000", "3000", "4000"]
];
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
var cellAddress = String.fromCharCode(66 + j) + (3 + i);
ExcelDataManager.setCellValue(sheetName, cellAddress, data[i][j]);
}
}
}
// 3. 设置公式
function setupFormulas() {
// 设置合计公式
for (var i = 3; i <= 5; i++) {
var cellAddress = "F" + i;
var formula = "=B" + i + "+C" + i + "+D" + i;
ExcelDataManager.setCellFormula(sheetName, cellAddress, formula);
}
}
// 4. 设置保护
function protectReport() {
// 锁定公式单元格
ExcelDataManager.setCellLocked(sheetName, "F3:F5", true);
// 锁定标题行
ExcelDataManager.setCellLocked(sheetName, "A1:F2", true);
}
// 5. 设置颜色
function applyColors() {
// 设置数据行颜色
for (var i = 3; i <= 5; i++) {
if (i % 2 === 0) {
ExcelDataManager.setCellColor(sheetName, "A" + i + ":F" + i, 9); // 白色
} else {
ExcelDataManager.setCellColor(sheetName, "A" + i + ":F" + i, 11); // 浅绿色
}
}
}
// 执行报表生成
createReportHeader();
fillReportData();
setupFormulas();
protectReport();
applyColors();
}
数据验证和格式化
javascript
// 数据验证和格式化工具
class ExcelDataValidator {
// 验证数据格式
static validateData(sheetName, range) {
var value = ExcelDataManager.getCellValue(sheetName, range);
// 验证数字
if (isNaN(value)) {
ExcelDataManager.setCellColor(sheetName, range, 3); // 红色
return false;
}
// 验证范围
var numValue = parseFloat(value);
if (numValue < 0 || numValue > 10000) {
ExcelDataManager.setCellColor(sheetName, range, 6); // 黄色
return false;
}
// 正常数据
ExcelDataManager.setCellColor(sheetName, range, 4); // 绿色
return true;
}
// 格式化数据
static formatData(sheetName, range, formatType) {
var value = ExcelDataManager.getCellValue(sheetName, range);
switch (formatType) {
case "currency":
var formattedValue = "¥" + parseFloat(value).toFixed(2);
ExcelDataManager.setCellValue(sheetName, range, formattedValue);
break;
case "percentage":
var formattedValue = (parseFloat(value) * 100).toFixed(2) + "%";
ExcelDataManager.setCellValue(sheetName, range, formattedValue);
break;
case "date":
var date = new Date(value);
var formattedValue = date.toLocaleDateString();
ExcelDataManager.setCellValue(sheetName, range, formattedValue);
break;
}
}
}
注意事项
工作表操作:
- 工作表名称区分大小写
- 索引从1开始
- 插入位置要正确指定
单元格引用:
- 使用标准的Excel单元格地址格式(如A1、B2:C5)
- 范围引用要正确
- 注意大小写
公式设置:
- 公式必须以等号开头
- 使用Excel标准函数
- 注意相对引用和绝对引用
锁定保护:
- 设置锁定后需要调用保护方法
- 锁定状态在保护生效后才起作用
- 注意锁定范围的选择
颜色设置:
- 颜色索引值要正确
- 注意颜色对比度
- 合理使用颜色区分数据
性能优化:
- 批量操作比单个操作效率高
- 避免频繁的单元格访问
- 合理使用范围引用
错误处理:
- 检查工作表是否存在
- 验证单元格地址格式
- 处理公式错误
数据验证:
- 验证输入数据的格式
- 检查数值范围
- 处理异常数据