Spiga

【转载】Coolite的GridPanle导出Excel

2010-09-21 08:55 by 冷风旋, 109 visits, 收藏, 编辑
代码
public void ToExcel(Coolite.Ext.Web.GridPanel gp, string fileName, DataTable dt, HttpResponse resp)
{

resp.Clear();
resp.ContentEncoding
= System.Text.Encoding.GetEncoding("UTF-8");
resp.AppendHeader(
"Content-Disposition", "attachment;filename=" + fileName + ".xls");
resp.ContentType
= "application nd.ms-excel";

string colHeaders = string.Empty;
string ls_item = string.Empty;
int i = 0;
int cl = gp.ColumnModel.Columns.Count;
string columns = string.Empty;

//输出表头
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
if (!gp.ColumnModel.Columns[i].Hidden)
{
colHeaders
+= gp.ColumnModel.Columns[i].Header;
columns
+= gp.ColumnModel.Columns[i].DataIndex + ",";
}
colHeaders
+= "\n";
}
else
{
if (!gp.ColumnModel.Columns[i].Hidden && gp.ColumnModel.Columns[i].ColumnID != "update")
{
colHeaders
+= gp.ColumnModel.Columns[i].Header + "\t";
columns
+= gp.ColumnModel.Columns[i].DataIndex + ",";
}
}
}
resp.Write(colHeaders);

if (columns != string.Empty) columns = columns.Substring(0, columns.LastIndexOf(","));
string[] columnall = columns.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

cl
= columnall.Length;

//逐行处理数据
for (int j = 0; j < dt.Rows.Count; j++)
{
ls_item
+= (j + 1).ToString() + "\t";//No.列
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))
{
ls_item
+= EditString(dt.Rows[j][columnall[i].ToString()].ToString()) + "\n";
}
else
{
ls_item
+= EditString(dt.Rows[j][columnall[i].ToString()].ToString()) + "\t";
}
}
resp.Write(ls_item);
ls_item
= string.Empty;
}
Response.Flush();
resp.End();
}

private string EditString(string TextString)//处理字符问题
{
if (TextString.IndexOf('\r') != -1)
{
TextString
= TextString.Replace('\r', ' ');
}
if (TextString.IndexOf('\n') != -1)
{
TextString
= TextString.Replace('\n', ' ');
}
if (TextString.IndexOf('\t') != -1)
{
TextString
= TextString.Replace('\t', ' ');
}
if (TextString.IndexOf("'") != -1)
{
TextString
= TextString.Replace("'", "");
}

if (TextString.IndexOf(@"""") != -1)
{
TextString
= TextString.Replace(@"""", "");
}
return TextString;
}
作者:冷风旋
出处:http://zzyn.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1832241 QEGn939U1HI=