使用 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 对象的 EntireRow
和 EntireColumn
方法,这对插入或删除整行很有用。作为一种解决方法,可以通过 Range(rowNoStart + ":" + rowNoEnd)
.
寻址整行来替换行
对于列,可以写 Range(GetExcelColumnName(colStart) + ":" + GetExcelColumnName(colEnd))
,其中 GetExcelColumnName
是来自 this former SO post 的函数。
我正在使用 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 对象的 EntireRow
和 EntireColumn
方法,这对插入或删除整行很有用。作为一种解决方法,可以通过 Range(rowNoStart + ":" + rowNoEnd)
.
对于列,可以写 Range(GetExcelColumnName(colStart) + ":" + GetExcelColumnName(colEnd))
,其中 GetExcelColumnName
是来自 this former SO post 的函数。