Как я могу получить текущий файл Excel в API JavaScript для Office?

Я разрабатываю приложение панели вкладок в Excel, которому необходимо прочитать текущий документ. В Word API JavaScript для Office имеет метод Office.context.document.getFileAsync(), но он недоступен в Excel.

Я могу получить URL-адрес документа с помощью Office.context.document.getFileProperties(), а затем я подумал, что смогу прочитать файл с помощью этого.

Я попытался использовать объект HTML5 FileReader(), но это работает только для файлов, выбранных из элемента управления вводом файлов. Я попытался манипулировать скрытым элементом управления вводом файлов, чтобы он автоматически использовал текущий документ, но JavaScript по понятным причинам не позволяет вам сделать это из соображений безопасности. Я мог бы попросить пользователя перейти к документу, который он сейчас использует, но это было бы плохо для пользователя.

Поэтому я попытался использовать ActiveXObject('Scripting.FileSystemObject'), но ActiveX вообще не разрешен в приложениях на панели вкладок, независимо от текущих настроек безопасности в IE.

Какие еще варианты у меня есть?


person Paul T Davies    schedule 21.05.2015    source источник
comment
вы хотите получить весь файл или только содержимое?   -  person marcel    schedule 15.06.2015
comment
@marcel Что мне действительно нужно, так это доступ к пользовательским свойствам. Поскольку в Office.js для этого нет возможности, я пытаюсь загрузить весь файл, разархивировать его и прочитать custom.xml.   -  person Paul T Davies    schedule 15.06.2015
comment
вы можете получить доступ к свойствам с помощью Office.context.document.getFilePropertiesAsync([, options], callback);   -  person marcel    schedule 15.06.2015
comment
@marcel Это возвращает только URI. Похоже, это заполнитель для будущей функциональности.   -  person Paul T Davies    schedule 15.06.2015
comment
@PaulTDavies нашел решение этой проблемы?   -  person Bharat Khunti    schedule 26.03.2018
comment
@BharatKhunti Боюсь, что нет. Поддерживается ли теперь Office.context.document.getFileAsync()?   -  person Paul T Davies    schedule 27.03.2018


Ответы (1)


Согласно дорожной карте API, Office.context.document.getFileAsync() в настоящее время недоступен в Excel.

Я не думаю, что это возможно с помощью getFilePropertiesAsync(). Он возвращает только URL. Обычно браузер запрещает разработчику трогать любой контент в файловой системе. Поэтому в коде JavaScript сложно получить доступ к локальной файловой системе.

Кроме того, файл может находиться не в локальной файловой системе. Например, он может быть размещен в Onedrive или SharePoint. getFilePropertiesAsync() должен возвращать свой реальный URL-адрес в Onedrive/SharePoint, а не в локальной файловой системе.

Я предполагаю, что Microsoft будет поддерживать getFileAsync() в будущем.

person Kejing Peng    schedule 17.06.2015
comment
Итак, ответ в том, что на данный момент нет способа сделать это? Это определенно похоже на мой опыт. - person Paul T Davies; 18.06.2015