将设置的单元格合并并设置其值,但是不起作用? [英] Set cells merged and set its value, but it not work?

查看:128
本文介绍了将设置的单元格合并并设置其值,但是不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

//使用EPPlus.dll

//use EPPlus.dll

使用OfficeOpenXml

using OfficeOpenXml

string path = @"C:\Users\Superman\Desktop\recc\1996.xlsx";
            ExcelPackage package = new ExcelPackage(new FileInfo(path));
            var sheet3 = package.Workbook.Worksheets[3];
            sheet3.Cells["A1:B5"].Merge = true;
            var mergedId = sheet3.MergedCells[1, 1];
            sheet3.Cells[mergedId].First().Value = "123"; // error: System.InvalidOperationException : Sequence does not contain any elements
            package.Save();

怎么了?

推荐答案

来回答为什么使用 First()方法-我敢打赌,excel中的 sheet3 是空的。请记住,单元格对象仅包含对具有实际内容的单元格的引用。但是,如果excel中的所有单元格都为空,则EPPlus中的 Cells 集合也为空。

To answer why the exception from using the First() method - I would bet money that your sheet3 in excel is empty. Remember that the Cells object only contains references to cell that have actual content. But if all of the cells in excel are empty then so is the Cells collection in EPPlus.

在创建全新的工作表时,此方法可以很好地工作:

For example, this works fine when creating a brand new sheet:

using (var package = new ExcelPackage(fi))
{
    var brandNewSheet = package.Workbook.Worksheets.Add("BrandNewSheet");
    brandNewSheet.Cells["A1"].LoadFromCollection(new[] {"A", "B", "C", "D", "E"});
    brandNewSheet.Cells["B1"].LoadFromCollection(new[] {"A", "B", "C", "D", "E"});
    brandNewSheet.Cells["A1:B5"].Merge = true;
    var mergedId = brandNewSheet.MergedCells[1, 1];
    brandNewSheet.Cells[mergedId].First().Value = "123";
    package.Save();
}

但是如果您注释掉 LoadFromCollection 调用将获得运行时异常:

But if you comment out the LoadFromCollection calls you will get the runtime exception:

using (var package = new ExcelPackage(fi))
{
    var brandNewSheet = package.Workbook.Worksheets.Add("BrandNewSheet");
    //brandNewSheet.Cells["A1"].LoadFromCollection(new[] {"A", "B", "C", "D", "E"});
    //brandNewSheet.Cells["B1"].LoadFromCollection(new[] {"A", "B", "C", "D", "E"});
    brandNewSheet.Cells["A1:B5"].Merge = true;
    var mergedId = brandNewSheet.MergedCells[1, 1];
    brandNewSheet.Cells[mergedId].First().Value = "123"; //Cells is empty so: System.InvalidOperationException: Sequence contains no elements
    package.Save();
}

正如其他人所解释的那样,无需致电 First()得到您想要的东西,但认为我至少可以解决这个问题。

As others have explain, there is no need to call First() to get what you want but figured I was at least address that.

这篇关于将设置的单元格合并并设置其值,但是不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆