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
public static void OutExecl(string FileName, string mSQL, FineUI.Grid grid)//数据导出到Execl
{
string SQL = mSQL, SQL1 = "", SQL2 = "", SQL3 = "";
int n = 0;
n = mSQL.IndexOf(" top ");
if (n >= 0)//去掉Top nnn
{
SQL1 = SQL.Substring(0,n);
SQL2 = SQL.Substring(n+5).TrimStart();//, mSQL.Length - n - 6
n = SQL2.IndexOf(" ");
SQL3 = SQL2.Substring(n + 1);// ,SQL2.Length - n
SQL = SQL1 +" "+ SQL3;
}
DataSet ds =new DataSet();
fun.CreateExcelForHtml(ds, FileName + "_Html.xls", grid);//将DataSet中的数据导出Execl,CSV格式
ds.Clear();
ds.Dispose();
}
public static string ReturnCaption(string FieldName, FineUI.Grid grid)//根据字段名返回中文名称
{
string temp,F=FieldName.ToLower();
foreach (GridColumn column in grid.Columns)
{
temp=column.HeaderText;
if (F == column.SortField.ToLower()) return temp;//SortField必需赋值
}
return FieldName;
}
public static void CreateExcelForHtml(DataSet ds, string FileName, FineUI.Grid grid)//将DataSet中的数据导出Execl For Html 格式
{
HttpResponse resp;
resp = HttpContext.Current.Response;//HttpContext.Current.
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
resp.ContentType = "application/excel";
string colHeaders = "", ls_item = "",F,C;
StringBuilder sb = new StringBuilder();
sb.Append("<table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">");
sb.Append("<tr>");
DataTable dt = ds.Tables[0];//定义表对象与行对象,同时用DataSet对其值进行初始化
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0;
int cl = dt.Columns.Count;
for (i = 0; i < cl; i++)//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
{
colHeaders = dt.Columns[i].Caption.ToString();
colHeaders = ReturnCaption(colHeaders, grid);//根据字段名返回中文名称
sb.AppendFormat("<td>{0}</td>", colHeaders);
}
sb.Append("</tr>");
for (i = 0; i < cl; i++)//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
{
colHeaders = dt.Columns[i].Caption.ToString();
//colHeaders = ReturnCaption(colHeaders, grid);//根据字段名返回中文名称
sb.AppendFormat("<td>{0}</td>", colHeaders);
}
sb.Append("</tr>");
foreach (DataRow row in myRow)//逐行处理数据
{
sb.Append("<tr>");
for (i = 0; i < cl; i++)//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
{
ls_item = row[i].ToString().Trim();
F = dt.Columns[i].Caption.ToString().ToLower();
C = ReturnCaption(F, grid);//根据字段名返回中文名称
if (F == "cardnumber" || F == "autoid" || F == "nodenumber" || F == "parentnodenumber"||C.IndexOf("号")>=0)
{
sb.AppendFormat("<td style='mso-number-format:"\\@";'>{0}</td>", ls_item);
}
else sb.AppendFormat("<td>{0}</td>", ls_item);
}
sb.Append("</tr>");
}
sb.Append("</table>");
resp.Write(sb.ToString());//向HTTP输出流中写入取得的数据信息
resp.End();
}
复制代码
作者:
秋收
时间:
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