使用word office add-in 2013获取文档信息

时间:2017-10-24 12:52:54

标签: office-addins word-addins

如何使用Office word -dad 2013获取作者,创建日期和大小等文档信息?

Document.getFilePropertiesAsync方法似乎只返回作为文件路径的URL。

1 个答案:

答案 0 :(得分:0)

很奇怪,开发人员没有为getFilePropertiesAsync添加文件大小!

幸运的是,getFileAsynclink)提供了文件大小。您应该可以调用它来简单地获取大小,保存该属性并关闭文件。

这对我有用,我在我的App组件中拥有它:

  const [fileName, setFileName] = useState("");
  const [fileSize, setFileSize] = useState(0);
  useEffect(() => {
    Office.context.document.getFilePropertiesAsync(function(asyncResult) {
      if (asyncResult && asyncResult.value && asyncResult.value.url) {
        const name = asyncResult.value.url.replace(/^.*[\\\/]/, "");
        setFileName(name);
      }
    });
  }, []);

  useEffect(() => {
    if (fileName) {
      Office.context.document.getFileAsync(Office.FileType.Compressed, { sliceSize: 4194304 }, function(result) {
        if (result.status == Office.AsyncResultStatus.Succeeded) {
          // Get the File object from the result.
          const file = result.value;
          setFileSize(file.size);
          file.closeAsync(() => {});
        }
      });
    }
  }, [fileName]);  // Note: if both async file calls fire, one of them will fail.

最后的注释涉及此错误https://stackoverflow.com/a/28743717/1467365。第二个useEffect钩子中的if (fileName)检查可确保在打开文件以获取文件大小之前完成文件属性调用。

两者都提取后,您应该能够将它们存储在Context提供程序中,并在整个应用程序中访问这两个属性。