exportExcel.ashx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <%@ WebHandler Language="C#" Class="exportExcel" %>
  2. using System;
  3. using System.Web;
  4. using System.Data;
  5. using System.Collections;
  6. using System.Data.OleDb;
  7. using Oracle.ManagedDataAccess.Client;
  8. using System.Reflection;
  9. using System.Text;
  10. using System.IO;
  11. using Curtain.DataAccess;
  12. using DK.XuWei.WebMes;
  13. public class exportExcel : IHttpHandler
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. using (IDataAccess conn = DataAccess.Create())
  19. {
  20. OracleDataReader dr = (OracleDataReader)conn.ExecuteReader(@"
  21. SELECT
  22. *
  23. FROM
  24. TP_MST_USER
  25. WHERE
  26. VALUEFLAG = '1'
  27. AND USERID < @USERID@
  28. ",
  29. new CDAParameter("USERID", "10")
  30. );
  31. string excelFile = "/export/export.xls";
  32. int result = ExportToCsv(dr, HttpContext.Current.Server.MapPath(excelFile));
  33. if(result == 1)
  34. {
  35. context.Response.Write(new JsonResult(excelFile) { message = "数据导出成功!"}.ToJson());
  36. context.Response.Redirect(excelFile);
  37. }
  38. else
  39. context.Response.Write(new JsonResult(JsonStatus.error) { message = "数据导出失败!"}.ToJson());
  40. }
  41. }
  42. /// <summary>
  43. /// 导出到Csv文件
  44. /// </summary>
  45. /// <param name="dataReader">SqlDataReader</param>
  46. /// <param name="csvFile">csv文件</param>
  47. /// <returns></returns>
  48. public static int ExportToCsv(OracleDataReader dataReader, string csvFile)
  49. {
  50. try
  51. {
  52. string headerStr = "";
  53. StringBuilder dataStr = new StringBuilder("");
  54. //读标题列
  55. for (int i = 0; i < dataReader.FieldCount; i++)
  56. {
  57. if (i > 0) headerStr += ",";
  58. headerStr += "\"" + dataReader.GetName(i) + "\"";
  59. }
  60. headerStr += "\n";
  61. dataStr.Append(headerStr);
  62. //读数据列
  63. while (dataReader.Read())
  64. {
  65. for (int j = 0; j < dataReader.FieldCount; j++)
  66. {
  67. if (j > 0) dataStr.Append(",");
  68. dataStr.Append("\"" + dataReader[j].ToString().Replace("\"", "\\\"") + "\"");
  69. }
  70. dataStr.Append("\n");
  71. }
  72. //写文件
  73. StreamWriter sw = new StreamWriter(csvFile, false, Encoding.GetEncoding("utf-8"));
  74. sw.Write(dataStr.ToString());
  75. sw.Flush();
  76. sw.Close();
  77. return 1;
  78. }
  79. catch
  80. {
  81. return -1;
  82. }
  83. }
  84. public bool IsReusable
  85. {
  86. get
  87. {
  88. return false;
  89. }
  90. }
  91. }