You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

163 lines
5.0 KiB

  1. using Swift.DAL.SwiftDAL;
  2. using Swift.web.Component.Grid;
  3. using Swift.web.Component.Grid.gridHelper;
  4. using Swift.web.Library;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Text;
  9. namespace Swift.web
  10. {
  11. public partial class Download : System.Web.UI.Page
  12. {
  13. private SwiftDao dao = new SwiftDao();
  14. private RemittanceDao remit = new RemittanceDao();
  15. protected void Page_Load(object sender, EventArgs e)
  16. {
  17. if (!IsPostBack)
  18. {
  19. DownloadCsv();
  20. }
  21. }
  22. private void DownloadCsv()
  23. {
  24. var data = "";
  25. var mode = GetStatic.ReadQueryString("mode", "grid").ToLower();
  26. if (mode == "grid")
  27. {
  28. data = GenerateCsvForGrid();
  29. }
  30. else if (mode == "report")
  31. {
  32. data = GenerateCsvForReport();
  33. }
  34. Response.Clear();
  35. Response.ClearContent();
  36. Response.ClearHeaders();
  37. Response.Buffer = true;
  38. Response.ContentType = "application/vnd.ms-excel";
  39. Response.AddHeader("Content-Disposition", "inline; filename=download.xls");
  40. Response.Charset = "";
  41. Response.Write(data);
  42. Response.End();
  43. }
  44. private string GenerateCsvForGrid()
  45. {
  46. var sql = GetStatic.ReadSession("exportSource", "");
  47. if (string.IsNullOrEmpty(sql))
  48. return "";
  49. var type = GetStatic.ReadQueryString("type", "").ToLower();
  50. var ds = new DataSet();
  51. if (type == "remit")
  52. {
  53. ds = remit.ExecuteDataset(sql);
  54. }
  55. else
  56. {
  57. ds = dao.ExecuteDataset(sql);
  58. }
  59. var columnList = (List<GridColumn>)Session["grid_column"];
  60. if (ds == null || columnList == null)
  61. return "";
  62. var dt = ds.Tables[1];
  63. var html = new StringBuilder("<table width=\"700\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" >");
  64. html.Append("<tr>");
  65. foreach (var column in columnList)
  66. {
  67. if (column.Description != "")
  68. html.Append("<th Class=\"HeaderStyle\" align=\"left\" nowrap " + ">" + column.Description + "</th>");
  69. }
  70. html.Append("</tr>");
  71. foreach (DataRow dr in dt.Rows)
  72. {
  73. html.Append("<tr>");
  74. foreach (var column in columnList)
  75. {
  76. switch (column.Type.ToUpper())
  77. {
  78. case "M":
  79. html.Append("<td align=\"right\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "M") + "</td>");
  80. break;
  81. case "D":
  82. html.Append("<td align=\"center\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "D") + "</td>");
  83. break;
  84. case "DT":
  85. html.Append("<td align=\"center\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "DT") + "</td>");
  86. break;
  87. case "NOSORT":
  88. if (column.Description.Trim() != "")
  89. html.Append("<td align=\"left\" nowrap>" + dr[column.Key] + "</td>");
  90. break;
  91. case "CHECKBOX":
  92. break;
  93. default:
  94. html.Append("<td align=\"left\">" + dr[column.Key] + "</td>");
  95. break;
  96. }
  97. }
  98. html.Append("</tr>");
  99. }
  100. html.Append("</table>");
  101. return html.ToString();
  102. }
  103. private string GenerateCsvForReport()
  104. {
  105. var sql = GetStatic.ReadSession("sql", "");
  106. if (sql == "")
  107. return "error";
  108. var db = new SwiftDao();
  109. var ds = db.ExecuteDataset(sql);
  110. if (ds == null || ds.Tables.Count == 0)
  111. return "error";
  112. var dt = ds.Tables[0];
  113. var html = new StringBuilder("<table width=\"700\" border=\"1\" cellpadding=\"0\" cellspacing=\"1\" >");
  114. html.Append("<tr>");
  115. for (var i = 0; i < dt.Columns.Count; i++)
  116. {
  117. html.Append("<th Class=\"HeaderStyle\" align=\"left\" nowrap " + ">" + dt.Columns[i].ColumnName + "</th>");
  118. }
  119. html.Append("</tr>");
  120. foreach (DataRow dr in dt.Rows)
  121. {
  122. html.Append("<tr>");
  123. for (var i = 0; i < dt.Columns.Count; i++)
  124. {
  125. html.Append("<td align=\"left\">" + dr[i] + "</td>");
  126. }
  127. html.Append("</tr>");
  128. }
  129. html.Append("</table>");
  130. return html.ToString();
  131. }
  132. }
  133. }