我有一个Excel工作簿的加载项,该加载项在Visual Studio中使用C#编程。该加载项在顶部添加了一个新的功能区选项卡,其中包含一些按钮和控件。此函数从工作表中读取数据,检查是否需要删除工作表中的哪些项目,然后删除这些行(将数据移上去)。
当我尝试任何形式的删除功能时,它只会返回“ false”(这意味着它不起作用)并且不会删除/修改数据。
在此C#文件中,它通过使用包括Interop.Excel在内的各种方式来显示星星
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using ManpowerSheet.Data;
using Microsoft.Office.Interop.Excel;
using DataTable = System.Data.DataTable;
using System.Diagnostics;
读取范围如下
private static Range _rngData = Globals.ThisWorkbook.Names.Item("Local_Actuals").RefersToRange;
private static Range _rngTemplate = Globals.ThisWorkbook.Names.Item("Actuals_Template").RefersToRange;
private static int _rowsPerEntry = _rngTemplate.Rows.Count;
private static readonly Dictionary<string, int> _funcRows = new Dictionary<string, int>
然后无效的删除功能如下:
public static bool DeleteProject(int iRow)
{
var deleteSuccess = _rngData.Offset[iRow - 1].Resize[_rowsPerEntry].EntireRow.Delete(XlDirection.xlUp);
return deleteSuccess;
}
iRow是要删除的项目所在的行,例如第12行。 _rowsPerEntry是要删除的行数,例如6行
我还尝试了多种删除组合,但没有一种有效。
尝试了以下所有条件:
_rngData.Offset [iRow-1] .Resize [_rowsPerEntry] .EntireRow.Delete(Type.Missing);
_rngData.Offset [iRow-1] .Resize [_rowsPerEntry] .Delete(XlDeleteShiftDirection.xlShiftUp);
_rngData.Offset [iRow-1] .EntireRow.Delete(XlDirection.xlUp);
_rngData.Offset [iRow-1] .EntireRow.Delete(XlDeleteShiftDirection.xlShiftUp);
我需要进行哪些更改才能使其正常运行?相同的功能似乎能够添加行而不会出现问题,因此它似乎不是权限或只读问题,但我可能是错的。
用于插入行的代码在这里:
private static void InsertBlankTemplates(int iRow, int numProjects)
{
// Insert blank rows
_rngData.Rows[iRow + ":" + (iRow + numProjects * _rowsPerEntry - 1)].EntireRow.Insert();
// Copy templates
for (var i = 0; i < numProjects; i++)
_rngTemplate.Copy(_rngData.Offset[iRow + i * _rowsPerEntry - 1].Resize[_rowsPerEntry]);
}