有人向我建议了一种通过使用对象使其更易于管理来改进我的代码的方法:
string[,] values = new string[15, 35]; //or objects
values[7, 7] = "2016";
values[7, 28] = drag24;
values[7, 33] = drag25;
values[10, 8] = digit1;
values[10, 11] = digit2;
// etc.
Range range = WS.Range[WS.Cells[1, 1], WS.Cells[15, 35]];
range.Value = values;
他的建议,但自从我从互操作转移到EPPLUS后,以下语法不再有效。
Range range = WS.Range[WS.Cells[1, 1], WS.Cells[15, 35]];
EPPLUS语法中的工作形式是什么样的?
用这个替换它没有成功,并取代了表格中的所有内容:
ExcelRange range = WS.Cells["A1: AH106"]
也许是这样的?
= sheet.Cells["A1:,12:12,14:14"]
答案 0 :(得分:2)
不确定这是不是你的意思,但这是一个带有自定义对象和数组的简单示例:
测试对象:
class TestObject
{
public int Id { get; set; }
public string Name { get; set; }
}
使用自定义对象和数组填充工作表:
IEnumerable<TestObject> objectList = new List<TestObject>()
{
{ new TestObject() {Id = 0, Name = "zero" } },
{ new TestObject() {Id = 1, Name = "one" } }
};
var values = new List<object[]>()
{
new string[] { "one", "two" },
new string[] { "three", "four" }
};
using (var package = new ExcelPackage())
{
var sheet = package.Workbook.Worksheets.Add("Sheet1");
// note second parameter gives you headings
sheet.Cells["A1"].LoadFromCollection<TestObject>(objectList, true);
sheet.Cells["A4"].LoadFromArrays(values);
File.WriteAllBytes(OUTPUT, package.GetAsByteArray());
}