2017-02-10 3 views
0

誰かが私に提案EPPLUS構文でこのExcelの相互運用機能の構文にメソッドを書くにはどうすればよい:私は、オブジェクトを使用して、それはより管理することによって、自分のコードを改善するために

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構文で何をのように見えるのでしょうか?

権利をうまくこのdidntのとそれを交換し、シート内のすべてのものに置き換え:このような

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

おそらく何かを?これはあなたが意味正確に何であるが、ここではカスタムオブジェクトを簡単な例だし、あれば

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

2次元文字列配列を使用すると、EPPlulの 'LoadFrom *'を使いたい場合にはもっと難しくなりますhods。コレクションのコレクションのいくつかの種類でより良い。しかし、現在の構造をそのまま維持しなければならない場合は、自分自身をループしてください。これはとにかく効率的になります。 – Ernie

答えて

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

私はこれについて読んで、それは私が欲しいもののように見えるが、私はLinqの外のIEnumerable関数によく似ていませんでした。それはあなたがそれを書いた方法にもかかわらず、それが何をしているのかはかなり明確です。私はそれに一撃を与え、何が起こるか見るでしょう。 – Arvayne

関連する問題