Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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语法编写此Excel互操作语法_C#_Excel_Excel Interop_Epplus - Fatal编程技术网

C# 如何用EPPLUS语法编写此Excel互操作语法

C# 如何用EPPLUS语法编写此Excel互操作语法,c#,excel,excel-interop,epplus,C#,Excel,Excel Interop,Epplus,有人向我建议了一种方法,通过使用对象使代码更易于管理,从而改进代码: 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

有人向我建议了一种方法,通过使用对象使代码更易于管理,从而改进代码:

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;
他的建议,但自从我从interop迁移到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"]

不确定这是否正是您的意思,但下面是一个带有自定义对象和数组的简单示例:

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());
}
测试对象:

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());
}
IEnumerable objectList=新列表()
{
{new TestObject(){Id=0,Name=“zero”},
{new TestObject(){Id=1,Name=“one”}
};
var值=新列表()
{ 
新字符串[]{“一”,“二”},
新字符串[]{“三”,“四”}
};
使用(var package=new ExcelPackage())
{
var sheet=package.工作簿.Worksheets.Add(“Sheet1”);
//注意,第二个参数为您提供标题
sheet.Cells[“A1”].LoadFromCollection(objectList,true);
sheet.Cells[“A4”].LoadFromArray(值);
File.writealBytes(输出,package.GetAsByteArray());
}

不确定这是否正是您的意思,但下面是一个带有自定义对象和数组的简单示例:

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());
}
测试对象:

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());
}
IEnumerable objectList=新列表()
{
{new TestObject(){Id=0,Name=“zero”},
{new TestObject(){Id=1,Name=“one”}
};
var值=新列表()
{ 
新字符串[]{“一”,“二”},
新字符串[]{“三”,“四”}
};
使用(var package=new ExcelPackage())
{
var sheet=package.工作簿.Worksheets.Add(“Sheet1”);
//注意,第二个参数为您提供标题
sheet.Cells[“A1”].LoadFromCollection(objectList,true);
sheet.Cells[“A4”].LoadFromArray(值);
File.writealBytes(输出,package.GetAsByteArray());
}

我确实读过这篇文章,它看起来确实是我想要的,但我不熟悉Linq之外的IEnumerable函数。很清楚它是做什么的,虽然你写它的方式,我会给它一个机会,看看会发生什么。我确实读过这篇文章,它看起来确实是我想要的,但我不熟悉Linq之外的IEnumerable函数。很清楚它是怎么做的,尽管您编写它的方式不同,但我会尝试一下,看看会发生什么。如果您想使用EPPlul
LoadFrom*
方法,使用2D字符串数组将使事情变得更加困难。最好是收集一些收藏品。但是,如果您必须保持当前结构,只需自己循环使用它们,这将更有效。如果您想使用EPPlul
LoadFrom*
方法,使用2D字符串数组将使事情变得更加困难。最好是收集一些收藏品。但是,如果你必须保持目前的结构,你只需要自己循环一下,这样会更有效率。