我想链接一个应用程序来验证在Excel中进行的更新。 我正在尝试使用 Glue42 互操作方法。 有人有代码示例吗?
我已经成功链接了两个应用程序,但没有 excel
我在 excel 中更改了一个单元格,我的外部应用程序验证是否可以更改。
我相信你错过了Glue for Office文档。您可以从主页转到两个部分:一个用于常规编程,另一个用于 Office 连接器。
无论如何,对于这个问题,您首先需要获取对带有代码的 Glue4Office 对象的引用,类似于下面的一个:
const config = {
// ...,
excel: true // enable Excel integration
}
Glue4Office(config)
.then(g4o => {
const excel = g4o.excel
// interact with Excel
})
.catch(console.error)
然后,一旦打开工作表并获取对它的引用,就可以订阅其 onChanged 事件,您可以在其中调用 errorCallback 参数。下面是一个示例:
excel.openSheet(config)
.then(sheet => {
sheet.onChanged((data, errorCallback, doneCallback) => {
// process changes here
// errorCallback(...) - call if there are validation errors
// doneCallback() - call if not doing validations or everything's OK
})
})
sheet.onChanged((data, errorCallback, doneCallback) => {
// ...
const errors = []
data.reduce(
(errors, rowData, rowIndex) => {
if (!rowData['firstName']) {
errors.push({
row: rowIndex + 1,
column: 'firstName',
description: 'First name is mandatory'
})
}
if (Number(rowData['subscriptionMonths']) < 6) {
errors.push({
row: rowIndex + 1,
column: 1, // <- note column index this time
description: 'Subscription period must be at least 6 months',
text: '6' // <- replacing what the user typed
})
}
},
[])
// if during the validation pass we've accumulated any errors
// we need to call the errorCallback, otherwise the doneCallback
if (errors.length > 0) {
errorCallback(errors)
}
else {
doneCallback()
}
})
也有方便的声明性方法。