Office js 应用边框格式

Office js 应用边框格式,office-js,Office Js,我正在尝试设置与新创建的工作表关联的一系列单元格的样式 我最近的两次(失败)尝试是: Excel.run(函数(上下文){ const newSheet=context.workbook.worksheets.add(“新工作表1”); newSheet.activate(); 常量值=[ [“第1行”、“第1行”、“第1行”], [“第2行”、“第2行”、“第2行”] ] newSheet.getRange(“A1”).getResizedRange(values.length-1,value

我正在尝试设置与新创建的工作表关联的一系列单元格的样式

我最近的两次(失败)尝试是:

Excel.run(函数(上下文){
const newSheet=context.workbook.worksheets.add(“新工作表1”);
newSheet.activate();
常量值=[
[“第1行”、“第1行”、“第1行”],
[“第2行”、“第2行”、“第2行”]
]
newSheet.getRange(“A1”).getResizedRange(values.length-1,values[0]。length-1)。values=values;
context.sync().then(函数(){
newSheet.getRange(“A2”).getResizedRange(0,输出[0]。长度-1);
返回context.sync();
});
});
以及:

Excel.run(函数(上下文){
const newSheet=context.workbook.worksheets.add(“新工作表1”);
newSheet.activate();
常量值=[
[“第1行”、“第1行”、“第1行”],
[“第2行”、“第2行”、“第2行”]
]
newSheet.getRange(“A1”).getResizedRange(values.length-1,values[0]。length-1)。values=values;
context.sync().then(函数(){
//区别就在这里
newSheet.getRange(“A2”).getResizedRange(0,值[0]。长度-1)。foramt.borderTopStyle=“thin”;
返回context.sync();
});
});

设置一系列单元格样式的正确方法是什么

首先,对您发布的代码的总体结构/内容提出一些评论/建议:

  • 一定要始终包含错误处理逻辑,否则事情可能会在您不知道出了什么问题的情况下悄无声息地失败
  • 对于您的场景,只需要一个context.sync()(在末尾),因为在此之前所做的事情(即,将数据写入工作表并将格式应用于工作表)可以简单地排队并在一个context.sync()结尾处一起执行
  • 您的代码包含一个输入错误(foramt而不是format),并且引用了一个对象上不存在的属性名(borderTopStyle)。如果您使用TypeScript而不是普通JavaScript,那么像这样的错误将自动为您标记
下面是一个代码片段,展示了如何为指定范围设置边界(基于您发布的代码结构,但经过修改以合并上述反馈):


首先,对您发布的代码的总体结构/内容提出一些评论/建议:

  • 一定要始终包含错误处理逻辑,否则事情可能会在您不知道出了什么问题的情况下悄无声息地失败
  • 对于您的场景,只需要一个context.sync()(在末尾),因为在此之前所做的事情(即,将数据写入工作表并将格式应用于工作表)可以简单地排队并在一个context.sync()结尾处一起执行
  • 您的代码包含一个输入错误(foramt而不是format),并且引用了一个对象上不存在的属性名(borderTopStyle)。如果您使用TypeScript而不是普通JavaScript,那么像这样的错误将自动为您标记
下面是一个代码片段,展示了如何为指定范围设置边界(基于您发布的代码结构,但经过修改以合并上述反馈):


真酷,成功了!另外,我怎样才能把两个单元格合并在一起?你能不能在这里写一篇关于堆栈溢出的新文章,回答关于合并单元格的新问题?通过为每个主题/问题创建一个单独的帖子,你可以让知道答案的人更有可能看到它(并做出回应),也让其他人更有可能在未来从中受益(从该问题/答案)。谢谢真酷,成功了!另外,我怎样才能把两个单元格合并在一起?你能不能在这里写一篇关于堆栈溢出的新文章,回答关于合并单元格的新问题?通过为每个主题/问题创建一个单独的帖子,你可以让知道答案的人更有可能看到它(并做出回应),也让其他人更有可能在未来从中受益(从该问题/答案)。谢谢
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 1", "Row 1"],
        ["Row 2", "Row 2", "Row 2"]
    ]
    newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1).values = values;

    // set top border for the second row of data
    newSheet.getRange("A2").getResizedRange(0, values[0].length - 1).format.borders.getItem('EdgeTop').style = 'Continuous';

    return context.sync();
})
    .catch(function (error) {
        console.log('error: ' + error);
        if (error instanceof OfficeExtension.Error) {
            console.log('Debug info: ' + JSON.stringify(error.debugInfo));
        }
    });
}