【问题标题】:c++ builder Excel Ole Create new worksheet after the last sheetc++ builder Excel Ole 在最后一张工作表之后创建新工作表
【发布时间】:2018-11-07 08:14:21
【问题描述】:

我想在工作表选项卡的末尾而不是开头添加一个新工作表。但我只能设法让它在前面工作。

workSheet = workSheets.OleFunction("Add");

如何更改这行代码以使其添加到最后?

【问题讨论】:

    标签: c++ excel c++builder ole


    【解决方案1】:

    Worksheets.Add() 方法有可选的BeforeAfter 参数:

    之前
    一个对象,指定在其之前添加新工作表的工作表。

    之后
    一个对象,指定在其后添加新工作表的工作表。

    ...

    如果BeforeAfter 都被省略,新工作表将插入到活动工作表之前

    【讨论】:

    • 我怎么才能只在之后添加,因为如果我让行看起来像 workSheets.OleFunction("Add",NULL,variantAfter) 我会收到一条错误消息
    • 使用OleVariant::NoParam() 而不是NULL。另见How pass optional parameters to OLE method
    【解决方案2】:

    需要设置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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多