【问题标题】:Get Document information using word office add-in 2013使用 word office 插件 2013 获取文档信息
【发布时间】:2017-10-24 12:52:54
【问题描述】:

office word插件2013如何获取作者、创建日期、大小等文档信息?

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

【问题讨论】:

  • 欢迎来到 Stack Overflow!由于您是新用户,我建议您阅读"How to Ask a Good Question"。正确提问将帮助您获得更好的答案,并帮助其他人在遇到类似问题时能够理解您的问题。
  • 谢谢@MarcLaFleur-Microsoft 我重新表述了这个问题,我们正在询问更改文档属性(例如“作者”)或创建新的自定义文档属性

标签: office-addins word-addins


【解决方案1】:

奇怪的是开发人员没有将文件大小添加到getFilePropertiesAsync

幸运的是,getFileAsync (link) 提供了文件大小。您应该能够调用它来简单地获取大小、保存该属性并关闭文件。

这对我有用,我的 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) 检查确保文件属性调用在打开文件以获取其大小之前完成。

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

【讨论】:

  • 我应该注意,如果它不是.pptx, .docx, or .xlsx 类型,这将转换原始文件类型。因此,从技术上讲,对于不在该集合中的原始文件格式,它不是真正的文件大小。对于我的应用程序,我使用大小来估计文件上传进度条,所以这对我来说不是一个交易破坏者(xlsx 往往大于字节格式)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多