Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EPPlus-InsertRow:行不能小于1。参数名称:value_C#_Epplus - Fatal编程技术网

C# EPPlus-InsertRow:行不能小于1。参数名称:value

C# EPPlus-InsertRow:行不能小于1。参数名称:value,c#,epplus,C#,Epplus,我有一个Excel模板,它有一个表(范围:A4:AM5),我需要通过EPPlus插入行来扩展该表。我的代码在文件中插入单元格值没有问题,但是我需要根据插入到第一列中的每个新值扩展表的行 我试图使用InsertRow(5,1)方法,但它显示了一个异常 System.ArgumentOutOfRangeException:'行不能小于1。 参数名称:值“” 其价值表现为: {System.ArgumentOutOfRangeException:Row不能小于1。参数名称:value>at Offic

我有一个Excel模板,它有一个表(范围:A4:AM5),我需要通过EPPlus插入行来扩展该表。我的代码在文件中插入单元格值没有问题,但是我需要根据插入到第一列中的每个新值扩展表的行

我试图使用
InsertRow(5,1)
方法,但它显示了一个异常

System.ArgumentOutOfRangeException:'行不能小于1。 参数名称:值“”

其价值表现为:

{System.ArgumentOutOfRangeException:Row不能小于1。参数名称:value>at OfficeOpenXml.ExcelCellAddress.set_Row(Int32值)>at OfficeOpenXml.ExcelNamedRangeCollection.InsertRows(Int32 rowFrom,Int32 rows,ExcelNamedRange namedRange)>at OfficeOpenXml.ExcelNamedRangeCollection.Insert(Int32 rowFrom、Int32 colFrom、Int32 rows、Int32 cols、Func`2 filter)>位于OfficeOpenXml.ExcelWorket.InsertRow(Int32 rowFrom、Int32 rows、Int32 copyStylesFromRow)>位于TestInsertRow.Program.Main(字符串[]args)}

我将代码的函数最小化为这一个,这也显示了相同的异常:

    class Dnp3
{
    private static ExcelPackage _dnp3Package;
    private static ExcelWorksheet _worksheet1;
    private static FileInfo _templateInfo;
    private static FileInfo _newDnp3FileInfo;

    public static bool TempFile
    {
        get
        {
            if (_templateInfo != null) return true;
            return false;
        }

        set
        {
            if (value == true)
            {
                _templateInfo = new FileInfo(@" Existing template path ");
            }
        }
    }

    public static bool NewFile
    {
        get
        {
            if (_newDnp3FileInfo != null) return true;
            return false;
        }

        set
        {
            if (value == true)
            {
                _newDnp3FileInfo = new FileInfo(@" Existing new file path ");

                _dnp3Package = new ExcelPackage(_newDnp3FileInfo, _templateInfo);
                {
                    _worksheet1 = Dnp3._dnp3Package.Workbook.Worksheets["DNP3_RTUs"];
                    {
                        _worksheet1.DataValidations.Clear();
                    }
                }
            }
        }
    }

    public static bool Save
    {
        set
        {
            if (value == true)
            {
                Dnp3._dnp3Package.Save();
            }
        }
    }

    public class DNP3_RTUs : Dnp3
    {
        private int _idobj_nameCol;//IDOBJ_NAME
        private int _idobj_aliasCol;//IDOBJ_ALIAS
        private int _idobj_customidCol;//IDOBJ_CUSTOMID
        private int _idobj_aorgroupCol;//IDOBJ_AORGROUP

        public bool Header
        {
            set
            {
                int _column = 1;
                _idobj_nameCol = 1;
                _idobj_aliasCol = 1;
                _idobj_customidCol = 1;
                _idobj_aorgroupCol = 1;

                if (value == true)
                {

                    while (_worksheet1.Cells[Row: 3, Col: _column].Value != null)
                    {
                        switch (_worksheet1.Cells[Row: 3, Col: _column].Value)
                        {
                            case "IDOBJ_NAME":
                                _idobj_nameCol = _column;
                                break;
                            case "IDOBJ_ALIAS":
                                _idobj_aliasCol = _column;
                                break;
                            case "IDOBJ_CUSTOMID":
                                _idobj_customidCol = _column;
                                break;
                            case "IDOBJ_AORGROUP":
                                _idobj_aorgroupCol = _column;
                                break;
                        }
                        _column++;
                    }

                }
            }
        }

        public bool AddRow(int _line)
        {
            _line = _line + 5;
            _worksheet1.InsertRow(_line, 2);
            return false;
        }

        public string IDOBJ_NAME(int _line, string _data)
        {
            _line = _line + 5;//Pq a entrada de dados começa na linha
            _worksheet1.Cells[_line, _idobj_nameCol].Value = _data;
            _worksheet1.Cells[_line, _idobj_nameCol].Style.Font.Size = 11;
            _worksheet1.Cells[_line, _idobj_nameCol].Style.Font.Name = "Calibri";
            return "";
        }

        public string IDOBJ_ALIAS(int _line, string _data)
        {
            _line = _line + 5;//Pq a entrada de dados começa na linha 5
            _worksheet1.Cells[_line, _idobj_aliasCol].Value = _data;
            _worksheet1.Cells[_line, _idobj_aliasCol].Style.Font.Size = 11;
            _worksheet1.Cells[_line, _idobj_aliasCol].Style.Font.Name = "Calibri";
            return "";
        }

        public string IDOBJ_CUSTOMID(int _line, string _data)
        {
            _line = _line + 5;//Pq a entrada de dados começa na linha 5
            _worksheet1.Cells[_line, _idobj_customidCol].Value = _data;
            _worksheet1.Cells[_line, _idobj_customidCol].Style.Font.Size = 11;
            _worksheet1.Cells[_line, _idobj_customidCol].Style.Font.Name = "Calibri";
            return "";
        }

        public string IDOBJ_AORGROUP(int _line, string _data)
        {
            _line = _line + 5;//Pq a entrada de dados começa na linha 5
            _worksheet1.Cells[_line, _idobj_aorgroupCol].Value = _data;
            _worksheet1.Cells[_line, _idobj_aorgroupCol].Style.Font.Size = 11;
            _worksheet1.Cells[_line, _idobj_aorgroupCol].Style.Font.Name = "Calibri";
            return "";
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        Dnp3.TempFile = true;
        Dnp3.NewFile = true;

        Dnp3.DNP3_RTUs dNP3_RTUs = new Dnp3.DNP3_RTUs() { Header = true };
        int _mappingCount = 1;

            dNP3_RTUs.IDOBJ_NAME(_mappingCount, "BOQ_1");

            dNP3_RTUs.IDOBJ_ALIAS(_mappingCount,"nome_se_ordem");

            dNP3_RTUs.IDOBJ_AORGROUP(_mappingCount, "mnem_se");

        dNP3_RTUs.AddRow(_mappingCount);

        Dnp3.Save = true;
    }
}

我遇到了同样的异常,并通过修复excel模板名称集合解决了它


按Ctrl+F3(名称管理器),搜索包含任何#REF!值和引用的名称,并将其从模板中删除。

如果Ctrl+F3无法查找名称管理器

将鼠标悬停在“sheet.Names”上,您将找到所有名称管理器和
您可以通过抛出代码来删除它们

var refName = sheet.Names.FirstOrDefault(x => x.Name == "nameOfNameManager");
if (refName != null)
{
    sheet.Names.Remove("nameOfNameManager");
}

你的代码没有编译,所以你是复制粘贴还是重写了代码?你需要提供一个@CamiloTerevinto我已经制作了一个代码的最小化版本,该版本仍然有相同的异常并编辑了问题。抱歉@vdwd可能重复,但我仍然不知道如何修复它。