ExeclHelperOv.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using NPOI.SS.UserModel;
  2. using NPOI.XSSF.UserModel;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Text;
  7. using wms.dto.request.hj.dto;
  8. namespace wms.util.Ext
  9. {
  10. public class ExeclHelperOv
  11. {
  12. public static byte[] OutputExcel<T>(List<T> entitys, List<ExportModel> row)
  13. {
  14. IWorkbook workbook = new XSSFWorkbook();
  15. var headFont = workbook.CreateFont();
  16. headFont.IsBold = true;
  17. //标题列样式
  18. var headStyle = workbook.CreateCellStyle();
  19. headStyle.Alignment = HorizontalAlignment.Center;
  20. headStyle.BorderBottom = BorderStyle.Thin;
  21. headStyle.BorderLeft = BorderStyle.Thin;
  22. headStyle.BorderRight = BorderStyle.Thin;
  23. headStyle.BorderTop = BorderStyle.Thin;
  24. headStyle.SetFont(headFont);
  25. ISheet sheet = workbook.CreateSheet("sheet");
  26. IRow Title = null;
  27. IRow rows = null;
  28. for (int i = 0; i <= entitys.Count; i++)
  29. {
  30. if (i == 0)
  31. {
  32. Title = sheet.CreateRow(0);
  33. for (int k = 1; k < row.Count + 1; k++)
  34. {
  35. Title.CreateCell(0).SetCellValue("序号");
  36. Title.CreateCell(k).SetCellValue(row[k - 1].Title);
  37. }
  38. continue;
  39. }
  40. else
  41. {
  42. rows = sheet.CreateRow(i);
  43. var entity = entitys[i - 1];
  44. for (int j = 0; j < row.Count; j++)
  45. {
  46. var filenames = row[j].Code.Substring(0, 1).ToUpper() + row[j].Code.Substring(1);
  47. var propInfo = entity.GetType().GetProperty(filenames);
  48. if (propInfo == null)
  49. continue;
  50. var kkk = propInfo.GetValue(entity);
  51. if (kkk != null)
  52. {
  53. rows.CreateCell(0).SetCellValue(i);
  54. switch (propInfo.PropertyType.Name)
  55. {
  56. case "String":
  57. rows.CreateCell(j + 1).SetCellValue(kkk.ToString());
  58. break;
  59. case "Decimal":
  60. case "Double":
  61. rows.CreateCell(j + 1).SetCellValue(Convert.ToDouble(kkk.ToString()));
  62. break;
  63. case "Int32":
  64. rows.CreateCell(j + 1).SetCellValue(Convert.ToInt32(kkk.ToString()));
  65. break;
  66. case "DateTime":
  67. rows.CreateCell(j + 1).SetCellValue(kkk.ToString());
  68. break;
  69. }
  70. }
  71. }
  72. }
  73. }
  74. byte[] buffer = new byte[1024 * 2];
  75. using (MemoryStream ms = new MemoryStream())
  76. {
  77. workbook.Write(ms, true);
  78. buffer = ms.ToArray();
  79. ms.Close();
  80. }
  81. return buffer;
  82. }
  83. }
  84. }