【发布时间】:2018-11-07 08:14:21
【问题描述】:
我想在工作表选项卡的末尾而不是开头添加一个新工作表。但我只能设法让它在前面工作。
workSheet = workSheets.OleFunction("Add");
如何更改这行代码以使其添加到最后?
【问题讨论】:
标签: c++ excel c++builder ole
我想在工作表选项卡的末尾而不是开头添加一个新工作表。但我只能设法让它在前面工作。
workSheet = workSheets.OleFunction("Add");
如何更改这行代码以使其添加到最后?
【问题讨论】:
标签: c++ excel c++builder ole
Worksheets.Add() 方法有可选的Before 和After 参数:
之前
一个对象,指定在其之前添加新工作表的工作表。之后
一个对象,指定在其后添加新工作表的工作表。...
如果
Before和After都被省略,新工作表将插入到活动工作表之前。
【讨论】:
OleVariant::NoParam() 而不是NULL。另见How pass optional parameters to OLE method
需要设置After参数
Excel::_WorksheetPtr newSheet;
if (const auto sheetsCount = m_book->Worksheets->GetCount(); sheetsCount == 0)
newSheet = m_app->Worksheets->Add();
else
{
IDispatchPtr dispatch = m_app->Worksheets->GetItem(sheetsCount); // Number of sheet, not index
newSheet = m_app->Worksheets->Add(vtMissing, dispatch.GetInterfacePtr(), 1);
}
return newSheet;
【讨论】: