office.js читать свойства листа

В office.js можно ли читать свойства рабочего листа?

На самом деле, кто-то разрабатывает надстройку Excel с использованием VSTO, там они устанавливают свойство рабочего листа. Теперь веб-надстройка Excel, которую я разрабатываю, мне нужно прочитать это свойство. Не уверен, что это возможно.


person Amitava Karan    schedule 06.10.2017    source источник


Ответы (1)


Возможность читать (и устанавливать) свойства документа с помощью Office.js недавно стала доступна как часть Набор требований к API ExcelApi 1.7. Этот набор требований в настоящее время находится в бета-версии, поэтому, чтобы использовать эту функцию API:

  • Вам потребуется ссылка на бета-версию 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 Insiders Fast). ). Если у вас недостаточно свежая сборка и вы пытаетесь использовать 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());
});
person Kim Brandl    schedule 06.10.2017
comment
спасибо @Kim за ваш ответ. Он работает, когда я пробовал Excel онлайн, но не на рабочем столе Excel. Я думаю, это потому, что у меня нет Office Insider Fast. У меня есть подписка на Office 365 профессиональный плюс. Мне не удалось найти плитку программы предварительной оценки Office на странице учетной записи рабочего стола Excel, как указано на главной странице программы предварительной оценки Office products.office.com/en-us/office-insider?tab=Windows-Desktop - person Amitava Karan; 09.10.2017
comment
а также здесь мы читаем свойства книги. Вы знаете, как читать свойства рабочего листа? - person Amitava Karan; 09.10.2017
comment
@amitavak - свойства, связанные с форматом (для ячейки или диапазона ячеек), такие как шрифт, заливка, границы, выравнивание и т. д., могут быть доступны через объект Range (Range.format), в то время как свойства, связанные с рабочим листом, такие как имя, позиция , а доступ к видимости можно получить через объект Worksheet. Если вы можете предоставить дополнительную информацию о том, что вы подразумеваете под свойствами рабочего листа, я могу попытаться дать более конкретные рекомендации. - person Kim Brandl; 09.10.2017
comment
поэтому свойство устанавливается из другой надстройки Excel, созданной с помощью VSTO. Там они используют приведенный ниже пример кода для установки свойства msdn.microsoft.com/en-us/vba/excel-vba/articles/ Мне нравится читать это пользовательское свойство рабочего листа из office.js - person Amitava Karan; 10.10.2017
comment
@amitavak - спасибо за дополнительную информацию. Я подозреваю, что получение/установка пользовательских свойств на рабочем листе (а не на рабочей книге, как описано в моем ответе) еще не поддерживается Office.js, но я достиг МСП, чтобы подтвердить, так это или нет. Я добавлю еще один комментарий здесь, если я смогу получить подтверждение так или иначе. - person Kim Brandl; 10.10.2017
comment
@KimBrandl Почему console.log("Title: " + docProperties.title); записывать пустую строку? я хочу получить название документа? Благодарю. - person MHS; 11.10.2017
comment
@MHS -- свойство title, которое считывается (и регистрируется в консоли), в моем примере представляет собой атрибут title на уровне файла, который отображается в разделе Properties< /b>, если вы выбрали Файл ›› Информация (в Excel, запущенном на рабочем столе Windows). Это не заголовок (текст), который вы видите вверху вашего документа, и не имя самого файла. Я подозреваю, что если вы выберете Файл ›› Информация, вы увидите, что поле Название не заполнено (в разделе Свойства) - - он не будет заполнен, если вы явно не установили его. - person Kim Brandl; 11.10.2017
comment
Большое спасибо @KimBrandl. Есть ли способ получить заголовок, который виден в верхней части документа? также возможно ли войти в систему с информацией о пользователе (электронная почта, имя пользователя,...)? - person MHS; 11.10.2017
comment
@MHS - не могли бы вы опубликовать эти вопросы как новые (отдельные) вопросы здесь, в Stack Overflow (каждый с тегом office-js)? Таким образом, вы с большей вероятностью получите хороший ответ, а другие, скорее всего, получат пользу от ответов в будущем. Спасибо! - person Kim Brandl; 12.10.2017
comment
@KimBrandl спасибо, конечно, это вопрос, который я задавал ранее: название-документа-в-офисе-365 - person MHS; 12.10.2017
comment
@MHS - спасибо за ссылку, я посмотрю этот пост. Кроме того, повторите свой вопрос о получении информации о вошедшем в систему пользователе - см. этот ответ для получения дополнительной информации об этом: stackoverflow.com/questions/44024992 /. - person Kim Brandl; 12.10.2017
comment
теперь возможно получить пользовательские свойства на рабочем листе (вместо рабочей книги)? - person raneshu; 12.05.2020