如何使用 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() 加载单元格属性的二维数组
我正在开发一个 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() 加载单元格属性的二维数组