Office 365 - Создать *.docx | *.pptx | *.xlsx файлы

Я работаю над веб-проектом, который использует API OneDrive для управления файлами. Я хотел создать *.docx | *.pptx | *.xlsx файлы, но, к сожалению, ни один из API OneDrive не поддерживает создание пустых / новых файлов. Я попытался загрузить пустой / новый файл со своего сервера в OneDrive. Хотя загрузка работает нормально, файл не открывается ни в Office Online, ни в локальном Office.

Из этого блога я смог сгенерировать файл Word и загрузить его.

function createNewDoc(name) {
var htmlString = "<html><body></body></html>";
var byteNumbers = new Uint8Array(htmlString.length);

for (var i = 0; i < htmlString.length; i++) {
   byteNumbers[i] = htmlString.charCodeAt(i);
    }
    var blob = new Blob([byteNumbers], {type: "text/html"});
    socialAPI.uploadFile('windows', blob, 'name', 'folder.87ash7ashb7a2').then(function (resp) {
        console.log("response for uploading file", resp);
    })
}

Этот файл работал для Word. Однако этот метод не работает для Excel и Powerpoint.

В конечном счете, я не смог ничего сделать с помощью API OneDrive. Я начал смотреть на API Office 365, если есть что-то, что позволяет создавать вышеупомянутые файлы, но я не мог найти ничего подобного. (PS: я смотрю на REST API)

Еще одна вещь, которую я заметил, - это то, что Box может сделать то же самое и открыть его в окне, но URL-адрес имеет формат https://app.box.com/services/box_for_office_online. Есть ли у Box особое сотрудничество с Microsoft для предоставления такой услуги?

1 ответ

"Пустые" файлы Office на самом деле не являются 0-байтовыми файлами. Настольные приложения Office (кроме Excel) могут взять файл размером 0 байт и превратить его в документ Office (вставить "шаблон", который превращает файл в файл Office). Онлайн-приложения Office в настоящее время не поддерживают это.

Поскольку в настоящее время нет API для создания нового файла определенного типа, вам нужно обойти его. Для этого вам нужно хранить и загружать "шаблонные" файлы для Word, Excel и PowerPoint. Приведенный вами пример является одним из способов сделать это для Word, где вы создали пустую HTML-страницу и загрузили ее.

Для Excel и PowerPoint вам нужно будет сделать нечто подобное, создав пустой файл и загрузив его как "новый" файл всякий раз, когда ваше приложение хочет создать новый пустой файл. Однако вместо того, чтобы хранить простую строку HTML в качестве содержимого файла шаблона, вам потребуется фактическое двоичное содержимое нового файла, которое может быть до ~30 КБ в зависимости от типа.

Мы работаем над улучшением веб-приложений, чтобы они могли взять 0-байтовый файл и "преобразовать" его в новый документ, но это все еще ошибка сегодня.

Другие вопросы по тегам