//使用EPPlus.dll
使用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();
Run Code Online (Sandbox Code Playgroud)
怎么了?怎么做?
要回答为什么使用该方法会出现异常First()- 我敢打赌你的sheet3Excel 中是空的。请记住,该Cells对象仅包含对具有实际内容的单元格的引用。但如果 excel 中的所有单元格都是空的,那么CellsEPPlus 中的集合也是空的。
例如,这在创建全新的工作表时效果很好:
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();
}
Run Code Online (Sandbox Code Playgroud)
但是如果你注释掉这些LoadFromCollection调用,你将得到运行时异常:
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();
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所解释的那样,无需打电话First()来获取您想要的东西,但我认为我至少解决了这个问题。
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |