FineUI 官方论坛

标题: grid导出EXCEL,怎么屏蔽DataToolTipField的内容 [打印本页]

作者: eric_wu    时间: 2012-12-3 05:50
标题: grid导出EXCEL,怎么屏蔽DataToolTipField的内容
    求助,在将grid的内容导出到EXCEL的时候,会一并将DataToolTipField的内容也导出来,怎么屏蔽掉DataToolTipField的值,只输出该单元格的内容,用的代码如下,
   string[] var = gv_problem.Rows[rowIndex-1].Values;
rows的values除了将该格子的内容输出,也会将DataToolTipField的内容输出
   用的方式是将grid的每一行赋给数组,然后把数组的值赋给EXCEL,因为模板上导出的EXCEL并非真的EXCEL格式。

作者: eric_wu    时间: 2012-12-3 08:45
只要设置了DataToolTipField,导出的数据就会多出<span ext:qtip="DataToolTipField具体内容" ></span>,求解决
作者: 刘军    时间: 2012-12-4 00:44
建议使用NPOI
作者: eric_wu    时间: 2012-12-4 01:28
就是用的NPOI,读GRID数据的时候遇到这个问题,会将tooltip的值也读出来
作者: eric_wu    时间: 2012-12-4 01:29
不知道有没有办法在cs代码中将DataToolTipField置成无效
作者: 秋收    时间: 2012-12-4 01:52
接合grid,直接读数据库后输出到Execl
  1.       
  2. public static void OutExecl(string FileName, string mSQL, FineUI.Grid grid)//数据导出到Execl
  3.         {
  4.             string SQL = mSQL, SQL1 = "", SQL2 = "", SQL3 = "";
  5.             int n = 0;
  6.             n = mSQL.IndexOf(" top ");
  7.             if (n >= 0)//去掉Top nnn
  8.             {
  9.                 SQL1 = SQL.Substring(0,n);
  10.                 SQL2 = SQL.Substring(n+5).TrimStart();//, mSQL.Length - n - 6
  11.                 n = SQL2.IndexOf(" ");
  12.                 SQL3 = SQL2.Substring(n + 1);// ,SQL2.Length - n
  13.                 SQL = SQL1 +" "+ SQL3;
  14.             }
  15.             DataSet ds =new DataSet();
  16.             fun.CreateExcelForHtml(ds, FileName + "_Html.xls", grid);//将DataSet中的数据导出Execl,CSV格式
  17.             ds.Clear();
  18.             ds.Dispose();
  19.         }

  20.         public static string  ReturnCaption(string FieldName, FineUI.Grid grid)//根据字段名返回中文名称
  21.         {
  22.             string temp,F=FieldName.ToLower();
  23.             foreach (GridColumn column in grid.Columns)
  24.             {
  25.                 temp=column.HeaderText;
  26.                 if (F == column.SortField.ToLower()) return temp;//SortField必需赋值
  27.             }
  28.             return FieldName;
  29.         }

  30.         public static void CreateExcelForHtml(DataSet ds, string FileName, FineUI.Grid grid)//将DataSet中的数据导出Execl For Html 格式
  31.         {
  32.             HttpResponse resp;
  33.             resp = HttpContext.Current.Response;//HttpContext.Current.
  34.             resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
  35.             resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
  36.             resp.ContentType = "application/excel";
  37.             string colHeaders = "", ls_item = "",F,C;
  38.             StringBuilder sb = new StringBuilder();
  39.             sb.Append("<table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">");
  40.             sb.Append("<tr>");
  41.             DataTable dt = ds.Tables[0];//定义表对象与行对象,同时用DataSet对其值进行初始化
  42.             DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
  43.             int i = 0;
  44.             int cl = dt.Columns.Count;
  45.             for (i = 0; i < cl; i++)//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
  46.             {
  47.                 colHeaders = dt.Columns[i].Caption.ToString();
  48.                 colHeaders = ReturnCaption(colHeaders, grid);//根据字段名返回中文名称
  49.                 sb.AppendFormat("<td>{0}</td>", colHeaders);
  50.             }
  51.             sb.Append("</tr>");
  52.             for (i = 0; i < cl; i++)//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
  53.             {
  54.                 colHeaders = dt.Columns[i].Caption.ToString();
  55.                 //colHeaders = ReturnCaption(colHeaders, grid);//根据字段名返回中文名称
  56.                 sb.AppendFormat("<td>{0}</td>", colHeaders);
  57.             }
  58.             sb.Append("</tr>");
  59.             foreach (DataRow row in myRow)//逐行处理数据   
  60.             {
  61.                 sb.Append("<tr>");
  62.                 for (i = 0; i < cl; i++)//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据   
  63.                 {
  64.                     ls_item = row[i].ToString().Trim();
  65.                     F = dt.Columns[i].Caption.ToString().ToLower();
  66.                     C = ReturnCaption(F, grid);//根据字段名返回中文名称
  67.                     if (F == "cardnumber" || F == "autoid" || F == "nodenumber" || F == "parentnodenumber"||C.IndexOf("号")>=0)
  68.                     {
  69.                         sb.AppendFormat("<td style='mso-number-format:"\\@";'>{0}</td>", ls_item);
  70.                     }
  71.                     else sb.AppendFormat("<td>{0}</td>", ls_item);
  72.                 }
  73.                 sb.Append("</tr>");
  74.             }
  75.             sb.Append("</table>");
  76.             resp.Write(sb.ToString());//向HTTP输出流中写入取得的数据信息
  77.             resp.End();
  78.         }
复制代码

作者: 秋收    时间: 2012-12-4 01:59
补充:DataSet ds =new DataSet();后加fun.MySqlDataSet(SQL, ds);即连接数据库并填充数据集。
作者: eric_wu    时间: 2012-12-4 03:15
哦 谢谢,不过上面的方法导出的貌似是文本格式的EXCEL,因为导出以后我还要将修改过的内容导入,所以要导出真正格式的EXCEL,我用了最笨的方法,用正则将tooltip的内容提取出来了,问题已解决。




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4