如何使用 Office.js 获取单元格的格式

How to get the formatting of a Cell using Office.js

我正在开发一个 Excel 加载项,它提取单元格 A1 的文本(包括其格式)并在其自己的区域中显示文本。所以添加包含这个(见下面的截图): • 显示格式化文本的区域 • 开始提取的按钮 Please Click to view image

下面是我用来获取文本的代码

function displaySelectedCells() {
    Office.context.document.getSelectedDataAsync(Office.CoercionType.Text,
        function (result) {
            if (result.status === Office.AsyncResultStatus.Succeeded) {
                showNotification('The selected text is:', '"' + result.value + '"');
            } else {
                showNotification('Error', result.error.message);
            }
        });
}

以上代码使用 "CoercionType" 作为 "Text" 。我已经尝试了很多方法来找到将文本格式化为 Sheet 单元格的解决方案。我得到的响应只是平面文本:( 请帮我解决问题

您应该查看的对象称为 RangeFont,它的访问方式为 Range.format.font。代码:

Excel.run(function (ctx) { 
    var myRange = ctx.workbook.getSelectedRange();
    var myFont = myRange.format.font;
    myFont.load(['bold','color','italic','name','size','underline']);
    myRange.load('values');
    return ctx.sync().then(function() {
        log(myFont.color);
        log(myFont.bold);
        log(myRange.values);
    });
}).catch(function(error) {
    log("Error: " + error);
});

添加到 Michael Saunder 的回答中:虽然您可以使用 myRange.format.font.load(['bold','color','italic','name','size','underline']),但这只会为您提供字体、粗体、斜体等。如果单元格中的格式一致并且在 myRange 对象 表示的整个范围内。由于您只是在寻找单个单元格的格式,因此听起来后者并不适用于您(它只是一个单元格),但是您拥有的示例图像显示单元格内的不同单词具有不同的粗体、斜体、颜色, 等等。使用当前的 API,您将无法获得此信息。

听起来您要问的是某种 HTML 或类似图像的单元格表示。我鼓励您将此作为建议提交到我们的 UserVoice (https://officespdev.uservoice.com/),并附上您需要此功能的真实用例描述。

~ Michael Zlatkovsky,MSFT Office 可扩展性团队的开发人员

对于未来的用户 - Range.getCellProperties() 加载单元格属性的二维数组