2017-02-10 3 views
0

누군가가 나에게 제안 EPPLUS 구문이 엑셀 Interop를 구문에게 방법을 쓰기 어떻게 :나는 객체의 사용을 통해 더 관리하여 내 코드를 개선하기 위해

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 구문에서이 모양의 작동 양식은 어떻습니까?

권리 운동이 didnt 한으로 교체 시트에있는 모든 대체 :이 같은

ExcelRange range = WS.Cells["A1: AH106"] 

아마도 뭔가를? 이 뜻을 정확히이지만, 여기에 사용자 지정 개체와 간단한 예제, 그리고 경우

= sheet.Cells["A1:,12:12,14:14"] 
+0

2 차원 문자열 배열을 사용하여이 일을 더 어렵게 만들 것입니다 hods. 어떤 종류의 콜렉션을 사용하는 것이 더 좋습니다. 그러나 현재 구조를 그대로 유지해야한다면, 어쨌든 더 효율적 일 것입니다. – Ernie

답변

2

확실하지 배열 :

테스트 개체 :

class TestObject 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

정의와 시트를 채우기 객체와 배열 : 당신이 *`충족을 EPPlul`LoadFrom을 사용하려는 경우

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()); 
} 
+1

나는 이것에 관해 읽었으며, 내가 원하는 것처럼 보이지만, Linq 외부의 IEnumerable 함수를 사용하지 못했습니다. 그것은 당신이 그것을 쓴 방법을 비록 그것이 꽤 명확하다, 나는 그것을 총알주고 무슨 일이 일어날 지 알 것이다. – Arvayne