使用 ExcelDNA 或 NetOffice 插入 Excel Rows/Columns

Insert Excel Rows/Columns with ExcelDNA or NetOffice

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

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

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

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

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

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

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

寻址整行来替换行

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