地铁二期项目正式开始

Worksheet.cs 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using System;
  2. using System.Data;
  3. using System.Collections;
  4. using System.Web;
  5. using System.Text;
  6. namespace YTSoft.Common.Office
  7. {
  8. /// <summary>
  9. /// Excel表单类
  10. /// </summary>
  11. public class Worksheet
  12. {
  13. private string sheetname = Guid.NewGuid().ToString().Replace("-", "");
  14. /// <summary>
  15. /// 表单名称
  16. /// </summary>
  17. public string SheetName
  18. {
  19. set { sheetname = value.Replace(">", "").Replace("<", "").Replace("\"", "").Replace("&", "").Replace("'", ""); }
  20. }
  21. private bool columnfilter = false;
  22. /// <summary>
  23. /// 是否自动条件过滤
  24. /// 注意:如果设置不导出标题行,此属性无效!
  25. /// </summary>
  26. public bool ColumnFilter
  27. {
  28. set { columnfilter = value; }
  29. get
  30. {
  31. if (!writeheaders)
  32. return false;
  33. else
  34. return columnfilter;
  35. }
  36. }
  37. private DataTable datasource = new DataTable();
  38. public DataTable DataSource
  39. {
  40. set { datasource = value; }
  41. }
  42. private bool writeheaders = true;
  43. public bool WriteHeaders
  44. {
  45. set { writeheaders = value; }
  46. }
  47. private ArrayList columnname = new ArrayList();
  48. public ArrayList ColumnName
  49. {
  50. set { columnname = value; }
  51. get
  52. {
  53. if (columnname.Count > 0)
  54. return columnname;
  55. else
  56. {
  57. ArrayList temp = new ArrayList();
  58. foreach (DataColumn dc in datasource.Columns)
  59. {
  60. temp.Add(dc.ColumnName);
  61. }
  62. return temp;
  63. }
  64. }
  65. }
  66. public void OutPut()
  67. {
  68. int columscnt = datasource.Columns.Count;
  69. int rowcnt = datasource.Rows.Count + 1;
  70. HttpResponse Response = HttpContext.Current.Response;
  71. Response.Write("<Worksheet ss:Name=\"" + sheetname + "\">");
  72. if (!ColumnFilter)
  73. {
  74. #region
  75. Response.Write("<Table ss:ExpandedColumnCount=\"" + columscnt + "\" ss:ExpandedRowCount=\"" + rowcnt + "\" x:FullColumns=\"1\" x:FullRows=\"1\" ss:DefaultColumnWidth=\"54\" ss:DefaultRowHeight=\"13.5\">");
  76. if (writeheaders)
  77. {
  78. Response.Write("<Row ss:AutoFitHeight=\"0\">");
  79. foreach (object o in ColumnName)//<![CDATA[这里放置需要显示的字符]]>
  80. {
  81. Response.Write("<Cell><Data ss:Type=\"String\"><![CDATA[" + o.ToString() + "]]></Data></Cell>");
  82. }
  83. Response.Write("</Row>");
  84. }
  85. foreach (DataRow dr in datasource.Rows)
  86. {
  87. Response.Write("<Row ss:AutoFitHeight=\"0\">");
  88. for (int i = 0; i < datasource.Columns.Count; i++)
  89. {
  90. Response.Write("<Cell><Data ss:Type=\"String\"><![CDATA[" + dr[i].ToString() + "]]></Data></Cell>");
  91. }
  92. Response.Write("</Row>");
  93. }
  94. Response.Write("</Table>");
  95. #endregion
  96. }
  97. else
  98. {
  99. #region
  100. Response.Write("<Names><NamedRange ss:Name=\"_FilterDatabase\" ss:RefersTo=\"=" + sheetname + "!R1C1:R" + (rowcnt - 1) + "C" + columscnt + "\" ss:Hidden=\"1\"/></Names>");
  101. Response.Write("<Table ss:ExpandedColumnCount=\"" + columscnt + "\" ss:ExpandedRowCount=\"" + rowcnt + "\" x:FullColumns=\"1\" x:FullRows=\"1\" ss:DefaultColumnWidth=\"54\" ss:DefaultRowHeight=\"13.5\">");
  102. if (writeheaders)
  103. {
  104. Response.Write("<Row ss:AutoFitHeight=\"0\">");
  105. foreach (object o in ColumnName)
  106. {
  107. Response.Write("<Cell><Data ss:Type=\"String\"><![CDATA[" + o.ToString() + "]]></Data><NamedCell ss:Name=\"_FilterDatabase\"/></Cell>");
  108. }
  109. Response.Write("</Row>");
  110. }
  111. foreach (DataRow dr in datasource.Rows)
  112. {
  113. Response.Write("<Row ss:AutoFitHeight=\"0\">");
  114. for (int i = 0; i < datasource.Columns.Count; i++)
  115. {
  116. Response.Write("<Cell><Data ss:Type=\"String\"><![CDATA[" + dr[i].ToString() + "]]></Data><NamedCell ss:Name=\"_FilterDatabase\"/></Cell>");
  117. }
  118. Response.Write("</Row>");
  119. }
  120. Response.Write("</Table>");
  121. Response.Write("<AutoFilter x:Range=\"R1C1:R" + (rowcnt - 1) + "C" + columscnt + "\" xmlns=\"urn:schemas-microsoft-com:office:excel\"></AutoFilter>");
  122. #endregion
  123. }
  124. }
  125. }
  126. }