我正在使用JavaScript API for Office(v 1.1)编写Office Word任务窗格地址。
我的系统:
我面临的问题是将打开的文档保存在客户端计算机中。我搜索了相关信息,但仍未成功......
我想知道是否有一种方法可以从JavaScript API中保存Word文档,Office.Context.Document中只有几种方法:
我写了一个解决方案,但我不喜欢通过创建Word.Application Activex来保存文档的方式:
$scope.saveDocument = function (draft) {
// Draft is a part of the window title
// Example :
// ----------
// If word window title shows "B0306-000-2012.docx - Word",
// draft could be "B0306-000-2012"
try {
var Word = new ActiveXObject("Word.Application");
if (Word) {
var spanish = Word.Language == 3082;
var Tasks = Word.Tasks;
for (var i = 0; i < Tasks.Count; i++) {
var Task = Tasks.Item(i + 1);
if (Task.Visible && Task.Name.indexOf(draft) >= 0) {
var shell = new ActiveXObject("WScript.Shell");
var activated = shell.AppActivate(Task.Name, 2000); //Espera 2 segundos para activar la aplicación
shell.SendKeys(spanish ? "^g" : "^s", 3000); //Envía el comando Ctrl + (G / S) según el idioma de la aplicación y espera 3 segundos a que Word guarde el documento
break;
}
}
Word.Quit();
}
return true;
} catch (e) {
$OfficeApp.showModal("No se pudo guardar el documento", "Error: " + e.message);
return false;
}
};
有关如何直接使用JavaScript API保存文档的任何建议吗?
答案 0 :(得分:1)
Office 2013的Office JS API(当前)没有用于打开或保存文档的界面。
我遇到的唯一解决方法是提取OOXML并将其“流”到新文件(文件扩展名为xml)。但是OOXML不包含某些内容(例如文档属性),因此取决于您的文档可能不具备哪些内容。
根据评论中的讨论进行编辑:
除此之外,还需要使用提供完整对象模型功能的旧式VSTO / COM / VBA插件。
答案 1 :(得分:0)
您想要保存的内容似乎是当前的文档,而且Cindy建议这在2013年是不可能的。2016年可以实现。
如果要保存文档的副本(在2103中),则可以执行此操作。请注意,Cindy建议不可能,您可以使用3种格式获取整个文件:压缩(docx),纯文本或PDF,除非用户选择整个文档,否则无法获取XML。 你需要做的是使用getFileAsync()方法(here is a sample)确保要求压缩格式,它将为你提供docx文件的片段,然后你可以在任何需要的地方保存或上传这个文件。 / p>