用ExcelDNA或NetOffice插入Excel行/列

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

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

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

我build议使用COM对象模型来完成这个任务,并且代码将与VBA类似。

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

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

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

对于列,可以写Range(GetExcelColumnName(colStart) + ":" + GetExcelColumnName(colEnd)) ,其中GetExcelColumnName是这个前SO贴子的函数。