quelqu'un sait comment ou une bibliothèque à utiliser pour cela?exporter IEnumerable <T> à Excel
Répondre
Jetez un oeil ici pour la partie bibliothèque:
Le code ci-dessous est le code que j'utilise pour convertir un IEnumerable<T>
en un DataTable contenant des colonnes nommées pour chaque propriété, ainsi que les valeurs de chaque élément dans IEnumerable en tant que lignes. Il est un saut très faible de ce à enregistrer en tant que fichier CSV
public class IEnumerableToDataTable
{
public static DataTable CreateDataTableForPropertiesOfType<T>()
{
DataTable dt = new DataTable();
PropertyInfo[] piT = typeof(T).GetProperties();
foreach (PropertyInfo pi in piT)
{
Type propertyType = null;
if (pi.PropertyType.IsGenericType)
{
propertyType = pi.PropertyType.GetGenericArguments()[0];
}
else
{
propertyType = pi.PropertyType;
}
DataColumn dc = new DataColumn(pi.Name, propertyType);
if (pi.CanRead)
{
dt.Columns.Add(dc);
}
}
return dt;
}
public static DataTable ToDataTable<T>(IEnumerable<T> items)
{
var table = CreateDataTableForPropertiesOfType<T>();
PropertyInfo[] piT = typeof(T).GetProperties();
foreach (var item in items)
{
var dr = table.NewRow();
for (int property = 0; property < table.Columns.Count; property++)
{
if (piT[property].CanRead)
{
dr[property] = piT[property].GetValue(item, null);
}
}
table.Rows.Add(dr);
}
return table;
}
}
Ainsi, vous pouvez écrire ce qui suit pour convertir vos données à un datatable:
IEnumerable<Thing> values = GetMyIEnumerableValues();
var tableOfData = IEnumerableToDataTable.ToDataTable(values);
Une fois qu'il est là, il est assez trivial pour l'écrire dans un fichier CSV, ou tout autre format de votre choix, car tout le travail de réflexion "difficile" pour extraire les données du IEnumerable<T>
a été fait.
J'ai résolu un problème similaire comme vous avez demandé. Comme vous avez un IEnumerable
IEnumerable<TaskSheetHead> taskSheetHead = new TaskSheetHeadService().GetEmployeeTimesheet(entity);
Donc, si vous voulez faire une excel à partir de ce juste créer un classeur
var workbook = new HSSFWorkbook();
var sheet = workbook.CreateSheet();
Et itérer avec une mise en boucle, puis l'ajouter à la feuille de calcul
foreach (TaskSheetHead taskSheethead in taskSheetHead)
{
//decimal totalTask = decimal.Zero;
//double totalTime = 0;
foreach (TaskSheet taskSheet in taskSheethead.TaskSheets)
{
var row2 = sheet.CreateRow(rowNumber++);
row2.CreateCell(0).SetCellValue(taskSheethead.Date.ToString("MMMM dd, yyyy"));
row2.CreateCell(1).SetCellValue(taskSheet.Task.Project.ProjectName + ":" + taskSheet.Task.Title + "-" + taskSheet.Comment);
row2.CreateCell(2).SetCellValue(taskSheet.ExpendedHour);
row2.CreateCell(3).SetCellValue(taskSheet.IsBilledToClient);
//totalTask += 1;
//totalTime += taskSheet.ExpendedHour;
}
var row3 = sheet.CreateRow(rowNumber++);
row3.CreateCell(0).SetCellValue("");
row3.CreateCell(1).SetCellValue("");
row3.CreateCell(2).SetCellValue("");
row3.CreateCell(3).SetCellValue("");
}
Ici j'ai une autre liste d'enfants, donc j'ai itéré en utilisant une boucle interne. Faites comme votre choix.
- 1. Comment puis-je réduire IEnumerable <IEnumerable <Foo>> à IEnumerable <Foo>?
- 2. Obtenez un IEnumerable <T> d'un IEnumerable <IEnumerable <T>>
- 3. Comment convertir un IEnumerable <IEnumerable <T>> en IEnumerable <T>
- 4. SSRS: Exporter vers Excel?
- 5. Exporter vers Excel
- 6. Exporter HTML Tableau Excel
- 7. LINQ à IEnumerable <MyObj>
- 8. int array à IEnumerable <MyTestObj>?
- 9. Cast/Convert IEnumerable <T> à IEnumerable <U>?
- 10. Linq: Convertir IEnumerable <Point> à un IEnumerable <float>
- 11. casting IEnumerable <int> à IEnumerable <long> ne
- 12. Exporter vers Excel à l'aide Response.TransmitFile()
- 13. Exporter vers Excel à partir d'un répéteur?
- 14. Asp.Net Exporter vers Excel - Caractères japonais
- 15. EntitySet <IEnumerable <T>> pour IEnumerable <T>
- 16. IEnumerable <T> question
- 17. XML IEnumerable <T>
- 18. Exporter vers Excel dans .net
- 19. SSRS exporter vers Excel UNFORMATTED
- 20. Exporter vers un numéro Excel
- 21. GridView exporter vers Excel erreur
- 22. Exporter de PHP vers Excel
- 23. C# Impossible de convertir IEnumerable <Base> en IEnumerable <Derived>
- 24. LINQ, comment puis-je créer un IEnumerable <> d'une propriété d'un autre IEnumerable <>
- 25. Telerik RadGrid Exporter vers Excel. Opérande manquant avant l'opérateur '='
- 26. NHibernate ICritery ajouter IEnumerable <int>?
- 27. Comment IEnumerable <T> .Reverse travail?
- 28. Convertir IEnumerable <XElement> en XElement
- 29. IEnumerable <string> => chaîne unique []
- 30. Question A propos IEnumerable <T>
avez-vous besoin d'une exportation à la volée? Si ce n'est pas le cas, pensez à enregistrer au format csv. – ULysses
Avez-vous besoin d'exporter vers un fichier Excel ou le format CSV est-il acceptable? – Rob
Ce genre dépend de la T :) – SWeko