2017-02-10 1 views
0

Quelqu'un m'a suggéré une méthode pour améliorer mon code en le rendant plus facile à gérer grâce à l'utilisation d'objets:Comment puis-je écrire cette syntaxe Excel Interop dans la syntaxe 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, 1], WS.Cells[15, 35]]; 
range.Value = values; 

Sa suggestion, mais depuis que je suis passé de Interop to EPPLUS, la syntaxe suivante ne fonctionne plus.

Range range = WS.Range[WS.Cells[1, 1], WS.Cells[15, 35]]; 

À quoi ressemblerait une forme de travail dans EPPLUS Syntax?

Remplacement avec ce ne fonctionnait pas à droite et tout remplacé dans la feuille:

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

Peut-être quelque chose comme ça?

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

L'utilisation d'un tableau de chaînes 2D rendra les choses plus difficiles si vous souhaitez utiliser l'EPPlul 'LoadFrom *' rencontré hods. Mieux vaut une sorte de collection de collections. Mais si vous devez garder votre structure actuelle, faites-la vous-même, ce qui sera plus efficace de toute façon. – Ernie

Répondre

2

Je ne sais pas si cela est exactement ce que vous voulez dire, mais voici un exemple simple avec un objet personnalisé, et les tableaux:

objet de test:

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

Remplir une feuille avec la coutume objet, et les tableaux:

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

J'ai lu à ce sujet, et il semble que ce que je veux, mais je n'étais pas familliar avec la fonction IEnumerable en dehors de Linq. C'est assez clair ce que ça fait si vous l'écrivez, je vais essayer et voir ce qu'il se passe. – Arvayne