ExportExcel.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Web;
  7. namespace Ant.Service.Common
  8. {
  9. /// <summary>
  10. /// NPOI导出Excel
  11. /// </summary>
  12. public class ExportExcel
  13. {
  14. #region 数据导出为EXCEL
  15. public static void CreateExcel(DataTable dt, string fileName)
  16. {
  17. StringBuilder strb = new StringBuilder();
  18. strb.Append(" <html xmlns:o=\"urn:schemas-microsoft-com:office:office\"");
  19. strb.Append("xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");
  20. strb.Append("xmlns=\"http://www.w3.org/TR/REC-html40\">");
  21. strb.Append(" <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
  22. strb.Append(" <style>");
  23. strb.Append(".xl26");
  24. strb.Append(" {mso-style-parent:style0;");
  25. strb.Append(" font-family:\"Times New Roman\", serif;");
  26. strb.Append(" mso-font-charset:0;");
  27. strb.Append(" mso-number-format:\"@\";}");
  28. strb.Append(" </style>");
  29. strb.Append(" <xml>");
  30. strb.Append(" <x:ExcelWorkbook>");
  31. strb.Append(" <x:ExcelWorksheets>");
  32. strb.Append(" <x:ExcelWorksheet>");
  33. strb.Append(" <x:Name>" + fileName + "</x:Name>");
  34. strb.Append(" <x:WorksheetOptions>");
  35. strb.Append(" <x:DefaultRowHeight>285</x:DefaultRowHeight>");
  36. strb.Append(" <x:Selected/>");
  37. strb.Append(" <x:Panes>");
  38. strb.Append(" <x:Pane>");
  39. strb.Append(" <x:Number>3</x:Number>");
  40. strb.Append(" <x:ActiveCol>1</x:ActiveCol>");
  41. strb.Append(" </x:Pane>");
  42. strb.Append(" </x:Panes>");
  43. strb.Append(" <x:ProtectContents>False</x:ProtectContents>");
  44. strb.Append(" <x:ProtectObjects>False</x:ProtectObjects>");
  45. strb.Append(" <x:ProtectScenarios>False</x:ProtectScenarios>");
  46. strb.Append(" </x:WorksheetOptions>");
  47. strb.Append(" </x:ExcelWorksheet>");
  48. strb.Append(" <x:WindowHeight>6750</x:WindowHeight>");
  49. strb.Append(" <x:WindowWidth>10620</x:WindowWidth>");
  50. strb.Append(" <x:WindowTopX>480</x:WindowTopX>");
  51. strb.Append(" <x:WindowTopY>75</x:WindowTopY>");
  52. strb.Append(" <x:ProtectStructure>False</x:ProtectStructure>");
  53. strb.Append(" <x:ProtectWindows>False</x:ProtectWindows>");
  54. strb.Append(" </x:ExcelWorkbook>");
  55. strb.Append(" </xml>");
  56. strb.Append("");
  57. strb.Append(" </head> <body> <table align=\"center\" style='border-collapse:collapse;table-layout:fixed'>");
  58. if (dt.Rows.Count > 0)
  59. {
  60. strb.Append("<tr>");
  61. //写列标题
  62. int columncount = dt.Columns.Count;
  63. for (int columi = 0; columi < columncount; columi++)
  64. {
  65. strb.Append(" <td style='text-align:center;'><b>" + ColumnName(dt.Columns[columi].ToString()) + "</b></td>");
  66. }
  67. strb.Append(" </tr>");
  68. //写数据
  69. for (int i = 0; i < dt.Rows.Count; i++)
  70. {
  71. strb.Append(" <tr>");
  72. for (int j = 0; j < dt.Columns.Count; j++)
  73. {
  74. strb.Append(" <td class='xl26'>" + dt.Rows[i][j].ToString() + "</td>");
  75. }
  76. strb.Append(" </tr>");
  77. }
  78. }
  79. strb.Append("</table> </body> </html>");
  80. HttpContext.Current.Response.Clear();
  81. HttpContext.Current.Response.Buffer = true;
  82. HttpContext.Current.Response.Charset = "utf-8";
  83. HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");
  84. HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;//
  85. HttpContext.Current.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
  86. //HttpContext.Current.p.EnableViewState = false;
  87. HttpContext.Current.Response.Write(strb);
  88. HttpContext.Current.Response.End();
  89. }
  90. #endregion
  91. #region 列的命名
  92. private static string ColumnName(string column)
  93. {
  94. switch (column)
  95. {
  96. case "area":
  97. return "地区";
  98. case "tongxun":
  99. return "通讯费";
  100. case "jietong":
  101. return "接通";
  102. case "weijietong":
  103. return "未接通";
  104. case "youxiao":
  105. return "有效电话";
  106. case "shangji":
  107. return "消耗商机费";
  108. case "zongji":
  109. return "总机费";
  110. case "account":
  111. return "帐号";
  112. case "extensionnum":
  113. return "分机";
  114. case "accountname":
  115. return "商户名称";
  116. case "transfernum":
  117. return "转接号码";
  118. case "calledcalltime":
  119. return "通话时长(秒)";
  120. case "callerstarttime":
  121. return "通话时间";
  122. case "caller":
  123. return "主叫号码";
  124. case "callerlocation":
  125. return "归属地";
  126. case "callresult":
  127. return "结果";
  128. case "Opportunitycosts":
  129. return "商机费";
  130. case "memberfee":
  131. return "通讯费";
  132. case "licenid":
  133. return "客服编号";
  134. case "servicename":
  135. return "客服名称";
  136. case "serviceaccount":
  137. return "客服帐号";
  138. case "messageconsume":
  139. return "短信消耗";
  140. case "receivingrate":
  141. return "接听率";
  142. case "youxiaop":
  143. return "有效接听率";
  144. case "telamount":
  145. return "电话量";
  146. case "extennum":
  147. return "拨打分机个数";
  148. case "telconnum":
  149. return "继续拨打分机次数";
  150. case "listenarea":
  151. return "接听区域";
  152. case "specialfield":
  153. return "专业领域";
  154. case "calltime":
  155. return "接听时间";
  156. case "userstart":
  157. return "当前状态";
  158. case "currentbalance":
  159. return "当前余额";
  160. case "call400all":
  161. return "400电话总量";
  162. case "call400youxiao":
  163. return "400有效电话量";
  164. case "call400consume":
  165. return "400消耗额";
  166. case "call400avgopp":
  167. return "400平均商机费";
  168. case "call800all":
  169. return "800电话总量";
  170. case "call800youxiao":
  171. return "800有效电话量";
  172. case "call800consume":
  173. return "800消耗额";
  174. case "call800avgopp":
  175. return "800平均商机费";
  176. case "callall":
  177. return "电话总量";
  178. case "callyouxiao":
  179. return "总有效电话量";
  180. case "callconsume":
  181. return "总消耗额";
  182. case "callavgoppo":
  183. return "总平均商机费";
  184. case "hr":
  185. return "小时";
  186. case "shangji400":
  187. return "400商机费";
  188. case "shangji800":
  189. return "800商机费";
  190. case "tongxun400":
  191. return "400通讯费";
  192. case "tongxun800":
  193. return "800通讯费";
  194. case "zongji400":
  195. return "400总机费";
  196. case "zongji800":
  197. return "800总机费";
  198. case "datet":
  199. return "日期";
  200. case "opentime":
  201. return "开通时间";
  202. case "allrecharge":
  203. return "充值金额";
  204. case "Userstart":
  205. return "状态";
  206. case "allnum":
  207. return "总接听量";
  208. case "cbalance":
  209. return "合作金额";
  210. case "allmoney":
  211. return "续费额";
  212. case "username":
  213. return "商户账号";
  214. case "isguoqi":
  215. return "是否过期";
  216. case "accounttype":
  217. return "商户类型";
  218. case "mphone":
  219. return "客户手机号";
  220. case "specialText":
  221. return "专长";
  222. case "uuname":
  223. return "客服";
  224. case "opentimes":
  225. return "合作时间";
  226. case "shangjifei":
  227. return "商机费";
  228. }
  229. return "";
  230. }
  231. #endregion
  232. }
  233. }