none
Entitäten als csv und/oder excel exportieren RRS feed

  • Frage

  • Hallo,

     

    kann mir jemand von euch sagen wie man Entitäten aus dem Entity Framework als csv oder xls exportieren kann.

    Das ganze sollte am besten rekursiv erfolgen und neben den Daten auch die Spaltennamen enthalten.

    Ich steh da total auf dem Schlauch und komme nicht voran.

    Hoffe ihr habt Ideen?!

    Gruß

     

    Freitag, 23. September 2011 11:36

Alle Antworten

  • Hi, das Problem ist nicht unbedingt die Konvertierung zu excel, sondern viel mehr wie ich die Daten, ohne Angabe der einzelnen Eigenschaften, erhalte.

     

    Für meine ColumnHeader mach ich das über Reflection:

     

    StringBuilder sb = new StringBuilder();
    				MyTable[] t= (from k in ModelContext.MyTable select k).ToArray();
    
    				MetadataWorkspace workspace = ModelContext.MetadataWorkspace;
    
    				
    				workspace.LoadFromAssembly(Assembly.Load(@"MyAssembly"));
    
    				System.Data.Metadata.Edm.ItemCollection itemCol = workspace.GetItemCollection(DataSpace.OSpace);
    
    				
    				foreach (EdmType eType in itemCol)
    				{
    					if (eType.GetType().BaseType == typeof(System.Data.Metadata.Edm.EntityType) && eType.Name == "MyTable")
    					{
    						
    						for (int i = 0; i < ((System.Data.Metadata.Edm.EntityType)(eType)).Properties.Count; i++)
    						{
    							//für jede Property
    							sb.Append(((System.Data.Metadata.Edm.EntityType)(eType)).Properties[i]);
    							if (i + 1 < ((System.Data.Metadata.Edm.EntityType)(eType)).Properties.Count)
    							{
    								sb.Append(",");
    							}
    							else
    							{
    								sb.Append("\n");
    							}
    						}
    					}
    				}
    


    ich schreibe also alle Namen der Eigenschaften in den StringBuilder und separiere mit einem Komma. Dadurch erhalt eich also meine benötigten ColumnHeader.

    Nun möchte ich natürlich auch alle Daten erhalten die es in "MyTable" gibt. Diese möchte ich jedoch nicht alle als MyTable.myProperty1, MyTable.myProperty2 angeben , sondern z.B. durch ein "foreach" erhalten. Nur wie komm ich an alle Daten ohne die explizite Angabe ran?

    Gruß

     

     

    Montag, 26. September 2011 11:14