Guest User

Untitled

a guest
Dec 13th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. [TestMethod]
  2. public void Multi_Sheet_Export_Test()
  3. {
  4. //Throw in some data
  5. var datatable = new DataTable("tblData");
  6. datatable.Columns.AddRange(new[]
  7. {
  8. new DataColumn("Col1", typeof (int)), new DataColumn("Col2", typeof (int)), new DataColumn("Col3", typeof (object))
  9. });
  10.  
  11. for (var i = 0; i < 10; i++)
  12. {
  13. var row = datatable.NewRow();
  14. row[0] = i;
  15. row[1] = i*10;
  16. row[2] = i%2 == 0 ? "LocationX" : "LocationY";
  17. datatable.Rows.Add(row);
  18. }
  19.  
  20. //Create a test file
  21. var fi = new FileInfo(@"c:tempMulti_Sheet_Export.xlsx");
  22. if (fi.Exists)
  23. fi.Delete();
  24.  
  25. using (var pck = new ExcelPackage(fi))
  26. {
  27. var workbook = pck.Workbook;
  28.  
  29. var colnames = new List<string[]>
  30. {
  31. datatable
  32. .Columns
  33. .Cast<DataColumn>()
  34. .Select(col => col.ColumnName)
  35. .ToArray()
  36. };
  37.  
  38.  
  39. var rowgroups = datatable
  40. .Rows
  41. .Cast<DataRow>()
  42. .GroupBy(row => row[2])
  43. .ToList();
  44.  
  45.  
  46. rowgroups.ForEach(rowgroup =>
  47. {
  48. var worksheet = workbook.Worksheets.Add(rowgroup.Key.ToString());
  49. worksheet.Cells[1, 1].LoadFromArrays(colnames);
  50. worksheet.Cells[2, 1].LoadFromArrays(rowgroup.Select(row => row.ItemArray));
  51. });
  52.  
  53. pck.Save();
  54. }
  55.  
  56. }
  57.  
  58. var uniqueList = dt.AsEnumerable().Select(x => x.Field<string>("ProdType")).Distinct();
  59. List<string> myList = new List<string>();
  60. myList = uniqueList.ToList();
  61.  
  62. DataTable[] array = new DataTable[myList.Count()];
  63. int index = 0;
  64. foreach (string item in myList)
  65. {
  66. var Result = from x in dt.AsEnumerable()
  67. where x.Field<string>("ProdType") == item
  68. select x;
  69. DataTable table = Result.CopyToDataTable();
  70. array[index] = table;
  71.  
  72. ExcelWorksheet ws = pck.Workbook.Worksheets.Add(item);
  73. ws.Cells["A1"].LoadFromDataTable(table, true);
  74. index++;
  75. }
Add Comment
Please, Sign In to add comment