Excel数据的范围删除行始终返回false,但无法删除行

时间:2019-01-09 14:45:05

标签: c# excel excel-interop

我有一个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]);
        }

0 个答案:

没有答案