javascript - Excel 加载项仅保存一次然后生成另一个 excel 并崩溃
问题描述
所以我现在使用 excel 加载项,我有一个强制保存文档并将其上传到存储的功能。当您第一次按下它时它会起作用,但随后它会打开一个带有随机数的新 Excel 窗口,例如“F7E57000”,而不是强制保存它会提示保存到磁盘中的某个位置。如果我按保存,则打开加载项的原始窗口消失,如果我按取消,则 excel 崩溃。
这是加载项函数的代码
$(".uploadBack").click(function (e) {
Excel.run(function (context) {
context.workbook.save(Excel.SaveBehavior.save);
return context.sync().then(() => {
return Office.context.document.getFilePropertiesAsync(function (asyncResult) {
return new OfficeExtension.Promise(function (resolve, reject) {
var fileUrl = asyncResult.value.url;
$.ajax({
url: "/uploadPlantaBack",
data: {
filePath: fileUrl,
id: e.currentTarget.dataset.escenarioid,
descripcion: $("#Descripcion").val(),
comentario: $("#Comentario").val()
},
type: "POST",
success: function (response) {
Swal.fire({
position: 'center',
type: 'success',
title: 'La configuracion se subio con exito',
showConfirmButton: false,
timer: 1500
})
resolve();
},
error: function (error) {
Swal.fire({
position: 'center',
type: 'error',
title: error,
showConfirmButton: true
})
reject();
}
});
})
});
});
});
});
更新:在此问题发生之前,我使用 addfrombase64 函数在函数中加载了一个文档,该函数位于 beta office.js 中。这是它在存储中接收带有 excel 文件的 url 然后将整个文件解析为 base 64 的代码
$(".excelReplica").click(function (e) {
$.ajax({
url: '/toBase64',
data: { url: e.currentTarget.dataset.url },
success: function (base64String) {
Excel.run(function (context) {
return new OfficeExtension.Promise(function (resolve, reject) {
var sheets = context.workbook.worksheets;
sheets.load("items/name");
context.sync().then(() => {
var countSheets = sheets.items.length;
sheets.addFromBase64(
base64String,
null, // get all the worksheets
Excel.WorksheetPositionType.after, // insert them after the worksheet specified by the next parameter
sheets.getActiveWorksheet() // insert them after the active worksheet
);
sheets.load("items/name");
context.sync().then(() => {
var firstSheet = sheets.items[countSheets];
firstSheet.activate();
firstSheet.load(firstSheet.name);
for (var i = countSheets - 1; i >= 0; i--) {
sheets.items[i].delete();
}
context.sync().then(() => {
window.location = '/Escenarios/Details/' + e.currentTarget.dataset.id;
});
});
});
resolve();
});
});
},
error: function (a) {
}
});
});
解决方案
推荐阅读
- typescript - 通用图形数据结构类的打字稿类型安全
- git - 没有我的密码,如何 git push to master?
- java - 使用java流的字母大小写排列
- google-cloud-platform - 如何对传入流量强制执行 https-only
- c# - WinForms C# xl.Visible 和 xl.UserControl 命令无法正常工作
- amazon-web-services - 在 Cloud Formation 中创建然后更改资源
- python - Python:附加系统路径以导入模块
- python - 使用不同参数时生成重复数据
- asp.net - ASP.NET Core 在视图中将字节数组转换为 svg 图像
- python - 使用没有变量或递归的 lambda 的帕斯卡三角