ExcelHelper.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using OfficeOpenXml;
  4. using OfficeOpenXml.Style;
  5. using System.Drawing;
  6. using WZExport.Models;
  7. using Utilty.Module.File.Source.Base;
  8. using Microsoft.AspNetCore.Http;
  9. using System;
  10. using System.Text;
  11. namespace WZExport.Utilitys
  12. {
  13. /// <summary>
  14. /// Excel导入导出助手
  15. /// </summary>
  16. public class ExcelHelper
  17. {
  18. /// <summary>
  19. /// 导出授权记录
  20. /// </summary>
  21. /// <param name="prs"></param>
  22. /// <param name="fileName"></param>
  23. /// <param name="webRootFolder"></param>
  24. /// <returns></returns>
  25. public static void ExportLm(IEnumerable<Lm> lms, string fileName, string webRootFolder)
  26. {
  27. string filePath = Path.Combine(webRootFolder, $"{fileName}.xlxs");
  28. FileInfo file = new FileInfo(filePath);
  29. ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
  30. using (ExcelPackage package = new ExcelPackage(file))
  31. {
  32. // 添加worksheet
  33. ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("栏目");
  34. //通用样式
  35. worksheet.Cells.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
  36. worksheet.Cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
  37. worksheet.Cells.Style.Font.Size = 12;
  38. worksheet.Cells.Style.Font.Bold = true;
  39. worksheet.DefaultRowHeight = 40;
  40. //添加表头
  41. worksheet.Cells[1, 1].Value = "栏目类型";
  42. worksheet.Cells[1, 1].Style.Font.Color.SetColor(Color.Red);
  43. worksheet.Column(1).Width = 15;
  44. worksheet.Cells[1, 2].Value = "栏目id";
  45. worksheet.Cells[1, 2].Style.Font.Color.SetColor(Color.Red);
  46. worksheet.Column(2).Width = 15;
  47. worksheet.Cells[1, 3].Value = "栏目url";
  48. worksheet.Cells[1, 3].Style.Font.Color.SetColor(Color.Red);
  49. worksheet.Column(3).Width = 15;
  50. worksheet.Cells[1, 4].Value = "数据表名";
  51. worksheet.Cells[1, 4].Style.Font.Color.SetColor(Color.Red);
  52. worksheet.Column(4).Width = 15;
  53. worksheet.Cells[1, 5].Value = "元素据id";
  54. worksheet.Cells[1, 5].Style.Font.Color.SetColor(Color.Red);
  55. worksheet.Column(5).Width = 15;
  56. worksheet.Cells[1, 6].Value = "栏目说明";
  57. worksheet.Cells[1, 6].Style.Font.Color.SetColor(Color.Red);
  58. worksheet.Column(6).Width = 40;
  59. worksheet.Cells[1, 7].Value = "一级栏目";
  60. worksheet.Cells[1, 7].Style.Font.Color.SetColor(Color.Red);
  61. worksheet.Column(7).Width = 40;
  62. worksheet.Cells[1, 8].Value = "二级栏目";
  63. worksheet.Cells[1, 8].Style.Font.Color.SetColor(Color.Red);
  64. worksheet.Column(8).Width = 40;
  65. worksheet.Cells[1, 9].Value = "三级栏目";
  66. worksheet.Cells[1, 9].Style.Font.Color.SetColor(Color.Red);
  67. worksheet.Column(9).Width = 40;
  68. worksheet.Cells[1, 10].Value = "四级栏目";
  69. worksheet.Cells[1, 10].Style.Font.Color.SetColor(Color.Red);
  70. worksheet.Column(10).Width = 40;
  71. worksheet.Cells[1, 11].Value = "五级栏目";
  72. worksheet.Cells[1, 11].Style.Font.Color.SetColor(Color.Red);
  73. worksheet.Column(11).Width = 40;
  74. worksheet.Cells[1, 12].Value = "六级栏目";
  75. worksheet.Cells[1, 12].Style.Font.Color.SetColor(Color.Red);
  76. worksheet.Column(12).Width = 40;
  77. int i = 1;
  78. foreach (var lm in lms)
  79. {
  80. i++;
  81. worksheet.Cells[i, 1].Value = "多信息";
  82. worksheet.Cells[i, 2].Value = lm.Channelid;
  83. worksheet.Cells[i, 3].Value = "";
  84. worksheet.Cells[i, 4].Value = "";
  85. worksheet.Cells[i, 5].Value = "";
  86. worksheet.Cells[i, 6].Value = lm.Chnldesc;
  87. worksheet.Cells[i, 6+lm.Siteid].Value = lm.Chnldesc;
  88. //worksheet.Cells[i, 7].Value = lm.Chnldesc;
  89. //worksheet.Cells[i, 8].Value = lm.Chnldesc;
  90. //worksheet.Cells[i, 9].Value = lm.Chnldesc;
  91. //worksheet.Cells[i, 10].Value = lm.Chnldesc;
  92. //worksheet.Cells[i, 11].Value = lm.Chnldesc;
  93. //worksheet.Cells[i, 12].Value = lm.Chnldesc;
  94. }
  95. package.Save();
  96. //return File.OpenRead(filePath);
  97. }
  98. }
  99. /// <summary>
  100. /// Excel导入
  101. /// </summary>
  102. /// <param name="excelFile">Excel文件</param>
  103. public static List<Dictionary> ImportConfig(Stream excelFile)
  104. {
  105. List<Dictionary> result = new List<Dictionary>();
  106. // 读取单个工作表sheet内容
  107. ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
  108. using (ExcelPackage package = new ExcelPackage(excelFile))
  109. {
  110. ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
  111. int rowCount = worksheet.Dimension.Rows;
  112. Dictionary dic;
  113. // 明细行
  114. for (int row = 2; row <= rowCount; row++)
  115. {
  116. dic = new Dictionary();
  117. dic.KeyLable = worksheet.Cells[row, 1].Value?.ToString().Trim();
  118. dic.Value = worksheet.Cells[row, 2].Value?.ToString().Trim();
  119. result.Add(dic);
  120. }
  121. }
  122. return result;
  123. }
  124. public static void ExportLmUniversal(IEnumerable<Lm> lms, string fileName, string webRootFolder)
  125. {
  126. string filePath=Path.Combine(webRootFolder, $"{fileName}.xls");
  127. string sheetName = "栏目";
  128. var sheetData = new List<List<string>>();
  129. var excelData=new Dictionary<string, List<List<string>>> { [sheetName]= sheetData };
  130. var headerData = new List<string>();
  131. headerData.Add("栏目类型");
  132. headerData.Add("栏目id");
  133. headerData.Add("栏目url");
  134. headerData.Add("数据表名");
  135. headerData.Add("元素据id");
  136. headerData.Add("栏目说明");
  137. headerData.Add("一级栏目");
  138. headerData.Add("二级栏目");
  139. headerData.Add("三级栏目");
  140. headerData.Add("四级栏目");
  141. headerData.Add("五级栏目");
  142. headerData.Add("六级栏目");
  143. sheetData.Add(headerData);
  144. foreach (var lm in lms)
  145. {
  146. var rowData = new List<string>();
  147. rowData.Add("多信息");
  148. rowData.Add(lm.Channelid.ToString());
  149. rowData.Add("");
  150. rowData.Add("");
  151. rowData.Add("");
  152. rowData.Add(lm.Chnldesc);
  153. for (int i = 1; i <= 6; i++)
  154. {
  155. if(i==lm.Siteid) rowData.Add(lm.Chnldesc);
  156. else rowData.Add("");
  157. }
  158. sheetData.Add(rowData);
  159. }
  160. new ExcelBase().CreateExcel(filePath,excelData);
  161. }
  162. }
  163. }