从AngularJS webapp编辑预制的启用宏的excel文档

从AngularJS webapp编辑预制的启用宏的excel文档,angularjs,vba,excel,Angularjs,Vba,Excel,我有一个相当大的问题,在几个小时的网络搜索之后,我似乎不知道如何干净地做,希望你们都能帮我解决 我们有一个AngularJS web应用程序,用于根据大量变量在数据库中创建对象。将对象放入数据库后,我们希望将一些字段放入启用宏的excel文档中,该文档包含一些必要的VBA宏,然后下载到用户的计算机上 据我所知,Angular可以将数据输出到新的excel文档中,但我们需要将数据放入预先存在的excel文档中。我找到的最接近的工具是一个,但这个答案实际上并没有实现编辑当前excel的功能,只是写入

我有一个相当大的问题,在几个小时的网络搜索之后,我似乎不知道如何干净地做,希望你们都能帮我解决

我们有一个AngularJS web应用程序,用于根据大量变量在数据库中创建对象。将对象放入数据库后,我们希望将一些字段放入启用宏的excel文档中,该文档包含一些必要的VBA宏,然后下载到用户的计算机上

据我所知,Angular可以将数据输出到新的excel文档中,但我们需要将数据放入预先存在的excel文档中。我找到的最接近的工具是一个,但这个答案实际上并没有实现编辑当前excel的功能,只是写入一个新的excel文档


任何关于解决我的问题的建议都将不胜感激

我可能已经找到了答案,但还不太清楚。我离开了SheetJS GitHub页面,今天得到了回复。听起来宏持久性功能将在本周五发布。从那里,将
bookVBA:true
添加到readFile调用的选项中,如
XLSX.readFile(“filename”,{bookVBA:true,/*…other options*/})
,然后在writeFile调用中添加
书籍类型的选项:“xlsm”

这当然是推测,因为变化还没有发生。我会确保在那个时候更新这个答案


编辑/更新:SheetJS现在可以将宏复制到新工作簿,但目前存在一个bug。如果您在ThisWorkbook对象中有任何代码在启动时执行任何操作、工作表更改等,那么它们在写回后将不起作用,因为它会创建一个新的ThisWorkbook1对象。我已经提出了一个问题,但应该尽快解决

啊,我感觉到你的痛苦。我在工作中也在做类似的事情。我个人会让Excel直接从数据源(通过ODBC)获取数据,并创建一个新的宏,将获取的数据复制到预先存在的Excel文档中。如果这种方法有更多的障碍,让我们进一步讨论。@AdamVincent肯定有更多的障碍。tl;dr,我们必须从web UI获取sessionID并将其传递到Excel工作簿,以便任何VBA服务调用都能正常工作,因为只有经过身份验证的用户才能进行服务调用,而且我们不需要从web UI和工作簿登录。我们不希望更改后端,以允许端点在未经身份验证的情况下访问sessionID,这是主要限制。