提问人:Amitava Karan 提问时间:10/6/2017 最后编辑:Amitava Karan 更新时间:10/6/2017 访问量:831
Office.js 读取工作表属性
office.js read worksheet properties
问:
在 office.js 中,是否可以读取工作表属性?
实际上,有人使用 VSTO 开发 excel 加载项,在那里他们设置了一个工作表属性。现在我正在开发的 excel Web 插件,我需要读取该属性。不确定是否有可能。
答:
4赞
Kim Brandl
10/6/2017
#1
使用 Office.js 读取(和设置)文档属性的功能最近作为 API 要求集 ExcelApi 1.7 的一部分提供。此要求集目前处于测试阶段,因此要使用此 API 功能,请执行以下操作:
您需要参考 beta 版 CDN:
https://appsforoffice.microsoft.com/lib/beta/hosted/office.js
如果您使用的是 TypeScript,则需要引用 beta d.ts 文件:
https://appsforoffice.microsoft.com/lib/beta/hosted/office.d.ts
必须使用足够新的 Excel 版本(例如,Office 预览体验成员快速)。如果您的构建时间不够新,并且尝试使用读取文档属性 API,则会引发错误。
ApiNotFound
以下代码片段显示了 show to read 文档属性(使用 JavaScript):
Excel.run(function (context) {
var docProperties = context.workbook.properties;
// Load a combination of read-only
// and writeable document properties.
docProperties.load("author, lastAuthor, revisionNumber, title, subject, keywords, comments, category, manager, company, creationDate");
return context.sync()
.then(function () {
// Write the document properties to the console.
console.log("Author: " + docProperties.author);
console.log("Last author : " + docProperties.lastAuthor);
console.log("Revision number: " + docProperties.revisionNumber);
console.log("Title: " + docProperties.title);
console.log("Subject: " + docProperties.subject);
console.log("Keywords: " + docProperties.keywords);
console.log("Comments: " + docProperties.comments);
console.log("Category: " + docProperties.category);
console.log("Manager: " + docProperties.manager);
console.log("Company: " + docProperties.company);
console.log("Workbook creation date: " + docProperties.creationDate.toDateString());
});
}).catch(errorHandlerFunction);
这是相同的代码片段,但在 TypeScript 中:
Excel.run(async (context) => {
let docProperties = context.workbook.properties;
// Load a combination of read-only
// and writeable document properties.
docProperties.load("author, lastAuthor, revisionNumber, title, subject, keywords, comments, category, manager, company, creationDate");
await context.sync();
// Write the document properties to the console.
console.log("Author: " + docProperties.author);
console.log("Last author : " + docProperties.lastAuthor);
console.log("Revision number: " + docProperties.revisionNumber);
console.log("Title: " + docProperties.title);
console.log("Subject: " + docProperties.subject);
console.log("Keywords: " + docProperties.keywords);
console.log("Comments: " + docProperties.comments);
console.log("Category: " + docProperties.category);
console.log("Manager: " + docProperties.manager);
console.log("Company: " + docProperties.company);
console.log("Workbook creation date: " + docProperties.creationDate.toDateString());
});
评论
0赞
Amitava Karan
10/9/2017
感谢您@Kim回复。当我在线尝试使用 excel 时,它可以正常工作,但在 excel 桌面上却没有。我认为这是因为我没有“Office Insider Fast”。我有 Office 365 专业增强版订阅。我在 Excel 桌面的“帐户”页中找不到 Office 预览体验成员磁贴,如 Office 预览体验成员主页中所述 products.office.com/en-us/office-insider?tab=Windows-Desktop
0赞
Amitava Karan
10/9/2017
在这里,我们正在阅读工作簿属性。你知道如何阅读工作表属性吗?
2赞
Kim Brandl
10/11/2017
@amitavak -- 感谢您提供更多信息。我怀疑 Office.js 尚不支持在工作表(而不是工作簿上,如我的回答所描述的那样)获取/设置自定义属性,但我已经联系了 SME 以确认是否是这种情况。如果我能够以一种或另一种方式获得确认,我将在这里添加另一条评论。
1赞
Kim Brandl
10/11/2017
@MHS -- 在我的示例中,正在读取(并记录到控制台)的标题属性是文件级属性标题,如果选择“文件>>信息”(在 Windows 桌面上运行的 Excel 中),则该属性标题显示在“属性”下。它不是您在文档顶部看到的“标题”(文本),也不是文件本身的名称。我怀疑,如果您选择“文件>>信息”,您会看到“标题”字段未填充(在“属性”下)——除非您明确设置它,否则不会填充它。
1赞
Kim Brandl
10/12/2017
@MHS -- 谢谢你的链接,我会看看那个帖子。另外,关于获取登录用户信息的问题 - 有关此的更多信息,请参阅此答案:stackoverflow.com/questions/44024992/...。
评论