gpt4 book ai didi

javascript - excel-JS excel left() 工作表函数不起作用

转载 作者:行者123 更新时间:2023-12-02 23:15:49 29 4
gpt4 key购买 nike

当我尝试在 Visual Studio Excel-JS api 中使用 Excel left() 工作表函数时,它根本不起作用!这意味着没有错误消息,没有值(value),也不知道什么不起作用我正在谈论这个声明:

  onzin = ctx.workbook.functions.left(Acode.values.toString(), 7);
onzin.load("values","address");

根据 Microsoft 的(极其不完整的)文档 https://learn.microsoft.com/en-us/javascript/api/excel/excel.worksheetcollection?view=office-js您必须在使用变量之前将其加载到 Excel 对象模型中,并且在上下文同步之后,这些值才可用。但是在我的第二个 promise 中,我加载了“onzin”的值和地址,但是当我想将值分配给ICcode范围时,它没有这样做,而且,当我在其中放置断点时,它似乎是空的并且没有错误。

这是我的代码:

Excel.run(function (ctx) {
//always use the Data sheet
var MyDataSheet = ctx.workbook.worksheets.getItem("Data");
var ConfigSheet = ctx.workbook.worksheets.getItem("Config");
var onzin;
MyDataSheet.activate();
var productStartRange = MyDataSheet.getUsedRange();
//define a range before the values can be loaded to the Excel Object model
var Acode = MyDataSheet.getRange("A3").load("values, address");
productStartRange.load("values, address, length");
// Run the queued-up commands, and return a promise to indicate task completion
return ctx.sync()
.then(function () {
var myBounds = GetBounds(productStartRange);
ConfigSheet.activate();

//put the column and row bounds in the config sheet
var ColBounds = ConfigSheet.getRange("B22");
var RowBounds = ConfigSheet.getRange("B21");
var NumProducts = ConfigSheet.getRange("B34");
var NumProperties = ConfigSheet.getRange("B27");

//ICcode.values = ctx.workbook.functions.left(Acode.values.toString(), 7);
onzin = ctx.workbook.functions.left(Acode.values.toString(), 7);
onzin.load("values","address");

//ICcode.values = Acode.values.toString().substring(0, 7);
//ICcode.values = onzin.values;
ColBounds.values = myBounds.LastCol;
RowBounds.values = myBounds.LastRow - 1;

//total number of products
NumProducts.values = RowBounds.values - 2;
//total number of properties
NumProperties.values = ColBounds.values - 2;

//load the products from the Data source sheet into one range
var ProductRange = MyDataSheet.getRangeByIndexes(3, 1, myBounds.LastRow, 3);
ProductRange.load("values");

})
.then(ctx.sync)
.then(function () {
var ICcode = ConfigSheet.getRange("B36");
ICcode = onzin.values;

//var Mystring = rowAddress.address;
showNotification("onzin waardes: ", onzin.values);
var PropSheet = ctx.workbook.worksheets.getItem("PropertySelection");
PropSheet.activate();

});


}).catch(errorHandler);

我希望工作表函数从“Acode”的单元格值中获取前 7 个字符,并将其写入位置 B36 上的范围 ICcode。

如有任何帮助,我们将不胜感激

最佳答案

删除了我之前的答案,因为我误读了您的部分代码。这行代码有两个问题:

onzin.load("values","address");
  1. 第一个字符串上不应有“s”。这只是“值(value)”。另外,删除 ICcode = onzin.values; 行中的“s”。
  2. onzin 对象上没有“地址”属性。 (Excel.Range 对象确实具有名为 value 和 address 的属性,这就是为什么我在原始答案中认为您将 onzin 视为 Excel.Range 对象。)

我通过阅读官方文档中的这篇文章发现了错误:Call built-in Excel worksheet functions 。如果您搜索“office 加载项工作表函数”,本文是 Bing 和 Google 中的第一个搜索结果。所以,我不太同意你的观点,即文档“非常不完整”。

关于javascript - excel-JS excel left() 工作表函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57176998/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com