我需要合并2个单元格,并在合并的单元格中有一个值 我的(失败的)尝试:
apply plugin: 'kotlin-kapt'
//..
dependencies {
//..
kapt 'com.android.databinding:compiler:2.3.2'
//..
}
Excel.run(function (context) {
const newSheet = context.workbook.worksheets.add("New sheet 1");
newSheet.activate();
const values = [
["Row 1", "", "Row 1"],
["Row 2", "Row 2", "Row 2"]
];
newSheet.getRange("A1").values = values;
newSheet.getRange("A1:B1").merge = true;
});
我哪里做错了?
编辑:标记的答案是正确的,不是因为它的主要内容 - 而是因为Kim Brandl以后的回复 - 其中,我的解决方案是使用API 1.1 - 但是{{1 }}只能在API 1.2中使用。
非常感谢!
答案 0 :(得分:2)
这是一个代码片段,它创建一个新工作表,向工作表添加两行数据,然后合并单元格A1和B1。
Excel.run(function (context) {
// create new sheet, add 2 rows of data
const newSheet = context.workbook.worksheets.add("New sheet 1");
newSheet.activate();
const values = [
["Row 1", "Row 2", "Row 1"],
["Row 2", "Row 2", "Row 2"]
];
newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1).values = values;
// merge cells A1 and B1
var myRange = newSheet.getRange("A1:B1");
myRange.merge();
return context.sync();
})
.catch(function (error) {
console.log('error: ' + error);
if (error instanceof OfficeExtension.Error) {
console.log('Debug info: ' + JSON.stringify(error.debugInfo));
}
});
以下是在Excel中运行此代码的结果:
请注意以下事项:
如果您合并的范围内的多个单元格包含值,则只保留范围的第一个单元格中的值(即范围中最左上角的单元格) - 所有随后的单元格值被消除。例如,上面示例中的工作表最初在单元格B1中包含一个值(“第2行”) - 但如上面的屏幕截图所示,只要单元格B1与单元格A1合并,此值就会被删除。
您只需要一个context.sync()
- 因为您只是将数据写入工作表并合并单元格,这些命令可以排队并在最后使用单个sync()执行。
始终包含错误处理(正如我对catch
语句所做的那样)非常重要,以确保在您不知情的情况下,事情不会无声地失败。
更新(添加有关需求集的信息):
另外一些信息 - 看起来range.merge()
已作为需求集1.2的一部分添加到Excel JavaScript API中。我建议您验证您运行的Office版本/平台是否支持需求集1.2(或更高版本) - https://dev.office.com/reference/add-ins/requirement-sets/excel-api-requirement-sets。有关如何获取最新版本的Office的信息,请参阅Office加载项文档中的this topic。
答案 1 :(得分:0)
你的第一个问题是merge()是一种方法,而不是一种财产。对于像这样的范围内的单元格的简单合并,语法将是:
var range = newSheet.getRange("A1:B1");
range.merge();
第二个问题是,在此之后您需要sync
才能将更改提交到工作表:
Excel.run(function (context) {
const newSheet = context.workbook.worksheets.add("New sheet 1");
newSheet.load('name');
return context.sync().then(function () {
var range = newSheet.getRange("A1:B1");
range.merge();
newSheet.activate();
return context.sync();
});
});
答案 2 :(得分:0)
从官方doc
尝试此操作 Excel.run(function (ctx) {
var sheetName = "New Sheet 1";
var rangeAddress = "A1:B1";
var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress);
range.select();
return ctx.sync();
}).catch(function(error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});