不依靠控件,有条件导出.
求高人指点~
求高人指点~
解决方案 »
- 请问下winform中,字体大小的设置是否可以根据长,高来设置。
- vs2005不能连接数据库
- javascript 两个日期进行比较
- dropdownlist在前台用了这个方法,在后台改变selectIndex不触发前台事件,怎么办?
- 这个类怎么用?????菜鸟
- repeater的排版问题.
- 问一个XMLHTTP的问题
- 十分简单的字符串部分删除问题?????????
- 这是不是.net平台的bug哦……真是郁闷啊
- 请教各位treeview 高手
- 需要安装.net framework 1.1,在安装过程中出现【错误1933】,怎么办?
- ICallbackEventHandler实现AJAX后,提交页面的时候后台获取不到前台控件的值
/// 将Web控件导出
/// </summary>
/// <param name="source">控件实例</param>
/// <param name="type">类型:Excel或Word</param>
public void ExpertControl(System.Web.UI.Control source, DocumentType type)
{
//设置Http的头信息,编码格式
if (type == DocumentType.Excel)
{
//Excel
Response.AppendHeader("Content-Disposition","attachment;filename=result.xls");
Response.ContentType = "application/ms-excel";
}
else if (type == DocumentType.Word)
{
//Word
Response.AppendHeader("Content-Disposition","attachment;filename=result.doc");
Response.ContentType = "application/ms-word";
}
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8; //关闭控件的视图状态
source.Page.EnableViewState =false; //初始化HtmlWriter
System.IO.StringWriter writer = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
source.RenderControl(htmlWriter); //输出
Response.Write(writer.ToString());
Response.End();
} //文档类型
public enum DocumentType
{
Word,
Excel
}
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="ds">Dataset</param>
/// <param name="FileName">文件名,包括后缀。如:xxx.xls</param>
public void CreateExcel(DataSet ds, string FileName)
{
HttpResponse resp;
resp = Page.Response;
FileName = Page.Server.UrlEncode(FileName); //文件名编码,否则出现乱码
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders = "", ls_item = "";
//定义表对象与行对象,同时用DataSet对其值进行初始化
DataTable dt = ds.Tables[0]; DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0; int cl = dt.Columns.Count;
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
colHeaders = "姓名\t性别\n";
resp.Write(colHeaders);
//向HTTP输出流中写入取得的数据信息
//逐行处理数据
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
ls_item += row["Uname"].ToString() + "\t" + row["Usex"].ToString() + "\n";
resp.Write(ls_item);
ls_item = "";
}
resp.End();
}
dataset 导出excel.条件就是你查询出的dataset..
/// <summary>
/// 导出Execl
/// </summary>
/// <param name="dta"></param>
/// <param name="FileName"></param>
public static void CreateExcel(System.Data.DataTable dta, string FileName, HttpResponse httpResponse)
{
HttpResponse resp;
resp = httpResponse;
FileName = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(FileName));
resp.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".xls");
StringBuilder colHeaders = new StringBuilder();
StringBuilder ls_item = new StringBuilder(); //定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dtt = dta;
DataRow[] myRow = dtt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的 int i = 0;
int cl = dtt.Columns.Count; //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
colHeaders.Append(dtt.Columns[i].Caption.ToString().Replace("\n", " ").Replace("\r", " ").Replace("\n", " ").Replace("\r", " ") + "\n");
}
else
{
colHeaders.Append(dtt.Columns[i].Caption.ToString().Replace("\n", " ").Replace("\r", " ").Replace("\n", " ").Replace("\r", " ") + "\t");
} }
resp.Write(colHeaders.ToString().Replace("\r", " "));
//向HTTP输出流中写入取得的数据信息 //逐行处理数据
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
ls_item.Append(row[i].ToString().Replace("\n", " ").Replace("\r", " ").Replace("\n", " ").Replace("\r", " ") + "\n");
}
else
{
ls_item.Append(row[i].ToString().Replace("\n", " ").Replace("\r", " ").Replace("\n", " ").Replace("\r", " ") + "\t");
} }
resp.Write(ls_item.ToString().Replace("\r", " "));
ls_item.Remove(0, ls_item.Length); }
resp.End();
}