【问题标题】:Insert Excel Rows/Columns with ExcelDNA or NetOffice使用 ExcelDNA 或 NetOffice 插入 Excel 行/列
【发布时间】:2015-03-14 15:50:51
【问题描述】:

我正在使用ExcelDNA 来设置和获取单元格值。我可以获取和设置单元格值

var ref = ExcelReference(2, 2);
var val = ref.GetValue();
ref.SetValue(42);

有没有办法通过向右或向下移动条目来插入整行或整列?我想要与用户右键单击列并且所有条目都向右移动时相同的行为。如有必要,解决方案可以使用 NetOffice。

【问题讨论】:

    标签: c# excel excel-dna netoffice


    【解决方案1】:

    我建议为此使用 COM 对象模型,并且代码将类似于 VBA 用于相同的任务。

    您通过调用ExcelDnaUtil.Application 获得根Application 对象。生成的对象将是Microsoft.Office.Interop.Excel.Application 类型,可用于选择列的行,然后调用app.Selection.Insert() 插入新的行或列。

    也应该可以使用 C API,但这不太可能更容易或更快。

    【讨论】:

    • ExcelDnaUtil.Application 返回 System.__ComObject 的实例。您使用的是哪个版本的 ExcelDna?
    • 是的 - 它是一个 COM 对象,实际上是 Excel 应用程序对象。如果您引用 Microsoft.Office.Interop.Excel,您可以将其转换为 Application。
    • 我必须添加一个额外的 dll 引用才能使其正常工作。说明stackoverflow.com/questions/15285880/…
    【解决方案2】:

    我想补充一点,NetOffice 不支持 Range 对象的 EntireRowEntireColumn 方法,这对于插入或删除整行很有用。作为一种解决方法,可以通过 Range(rowNoStart + ":" + rowNoEnd) 寻址整行来替换行。

    对于列,可以写成Range(GetExcelColumnName(colStart) + ":" + GetExcelColumnName(colEnd)),其中GetExcelColumnName 是来自this former SO post 的函数。

    【讨论】:

    • 我想知道 NetOffice 和 Excel-DNA 之间的区别,以防您知道这一点。如果你愿意,我可以提出一个问题。非常感谢!
    • @NoChance:ExcelDNA 和 NetOffice 实现不同的目的,并且它们彼此正交,所以关于它们的差异的问题是没有意义的。 NetOffice 是围绕主要 MS Office 程序的 COM 对象模型的封装,它允许编写不将自身绑定到特定 Excel 或 Word 版本的程序。因此,您可以问 NetOffice 仍然不支持完整 COM 对象模型的哪些部分,这是一个明智的问题。
    • 谢谢你的澄清,我最近才知道产品,没有机会深入。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2020-03-02
    • 2015-06-13
    相关资源
    最近更新 更多