FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 3378|回复: 7
打印 上一主题 下一主题

grid导出EXCEL,怎么屏蔽DataToolTipField的内容

[复制链接]
跳转到指定楼层
楼主
发表于 2012-12-3 05:50:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    求助,在将grid的内容导出到EXCEL的时候,会一并将DataToolTipField的内容也导出来,怎么屏蔽掉DataToolTipField的值,只输出该单元格的内容,用的代码如下,
   string[] var = gv_problem.Rows[rowIndex-1].Values;
rows的values除了将该格子的内容输出,也会将DataToolTipField的内容输出
   用的方式是将grid的每一行赋给数组,然后把数组的值赋给EXCEL,因为模板上导出的EXCEL并非真的EXCEL格式。
沙发
 楼主| 发表于 2012-12-3 08:45:11 | 只看该作者
只要设置了DataToolTipField,导出的数据就会多出<span ext:qtip="DataToolTipField具体内容" ></span>,求解决
板凳
发表于 2012-12-4 00:44:04 | 只看该作者
建议使用NPOI
地板
 楼主| 发表于 2012-12-4 01:28:22 | 只看该作者
就是用的NPOI,读GRID数据的时候遇到这个问题,会将tooltip的值也读出来
5#
 楼主| 发表于 2012-12-4 01:29:50 | 只看该作者
不知道有没有办法在cs代码中将DataToolTipField置成无效
6#
发表于 2012-12-4 01:52:55 | 只看该作者
接合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.         }
复制代码
7#
发表于 2012-12-4 01:59:31 | 只看该作者
补充:DataSet ds =new DataSet();后加fun.MySqlDataSet(SQL, ds);即连接数据库并填充数据集。
8#
 楼主| 发表于 2012-12-4 03:15:20 | 只看该作者
哦 谢谢,不过上面的方法导出的貌似是文本格式的EXCEL,因为导出以后我还要将修改过的内容导入,所以要导出真正格式的EXCEL,我用了最笨的方法,用正则将tooltip的内容提取出来了,问题已解决。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-30 02:37 , Processed in 0.045463 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表