有人向我建议了一种通过使用对象使其更易于管理的方式来改进代码的方法:
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"]
不知道这是否正是您的意思,但这是一个带有自定义对象和数组的简单示例:
测试对象:
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());
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句