我遇到delphi和excel ole自动化问题。使用此代码:
uses
ComObj
var
XlApp: Variant;
begin
L_v.Caption: = 'D:\bd1\support\Vi.xls';
XlApp: = CreateOleObject ('Excel.Application');
XLApp.Visible: = True;
XLApp.WorkBooks.Open (L_vi.Caption);
XLApp.Workbooks [1]. Worksheets. [1] Name: = 'Sheet1';
Sheets: = XLApp.Workbooks [1]. Worksheets ['test'];
但是我收到了错误 未声明的标识符'工作表'在第.....行。
我不明白为什么。
答案 0 :(得分:2)
(请参阅下面的编辑,标记为已更新:。)
如果这是您的实际代码
XLApp.Workbooks [1]. Worksheets. [1] Name: = 'Sheet1';
Worksheets.[1]Name
语法错误。 (.
位置错误。)应该是
XLApp.Workbooks[1].Worksheets[1].Name := 'Sheet1';
这在XE3中适用于我:
var
XLApp: OleVariant;
begin
XLApp := CreateOleObject('Excel.Application');
XLApp.Visible := True;
XLApp.Workbooks.Open('C:\Test\Test.xls');
XLApp.Workbooks[1].Worksheets[1].Name := 'New Sheet Name';
end;
更新:在您发表评论后,我想我明白您的问题可能是什么。
我认为Error Insight
让你感到困惑(红色下划线和“未定义的标识符”弹出窗口,实际上是错误的)。
我在这里发布的代码是在我发布之前在XE3中编译并实际执行的,并且它有效。但如果我将光标放在Worksheets
上,我会看到Undeclared identifier
弹出窗口和红色下划线。当然,它在某种程度上是正确的 - Worksheets
不声明。但是,当您使用后期绑定(在运行时使用CreateOleObject
)时,它不一定是必须的。
Error Insight
是错误的(自从它被添加到IDE以来)。我做的第一件事(当我看到bug尚未修复时)将其关闭(工具 - >选项 - >编辑器选项 - > Code Insight,取消选中右侧的Error Insight
)。让真正的编译器改变现状。
答案 1 :(得分:0)
...试
Var
Sheet: Olevariant;
...
for possheet := 1 to newWorkbook.Worksheets.Count do
Begin
Sheet:=newWorkbook.Sheets[possheet];
combobox1.Items.Add(Sheet.Name)
End;
答案 2 :(得分:0)
以这种方式在excel中使用excel有点困难,因为您看不清建议。
我将使用const find = (mapArr, type) => {
for (let i = 0; i < mapArr.length; i++) {
for (let j = 0; j < mapArr[i].length; j++) {
switch (type) {
case 'gold': {
if (mapArr[i][j] === 'R') return [j, i];
}
case 'silver': {
if (mapArr[i][j] === 'S') {
return [j, i];
}
}
case 'bronze': {
if (mapArr[i][j] === 'M') {
return [j, i];
}
}
default: continue;
}
}
}
};
find(
[
// COLUMNS ARE X
// 0 1 2 3 4 5
['s', 'R', 's', 'S', 'n', 'M'], // 0 ROWS ARE Y
['s', 'M', 's', 'S', 'r', 'M'], // 1
['s', 'M', 's', 'R', 'r', 'm'], // 2
['S', 'r', 's', 'm', 'r', 'M'], // 3
['S', 'r', 's', 'm', 'r', 'M'], // 4
['S', 'r', 'S', 'M', 'M', 'S'] // 5
],
'bronze'
)
和Variant
粘贴一些代码,以便您使用。
Excel
在VBA API Microsoft documentation中,您可以找到更多信息。