关于水晶报表下载到客户端,以word形式显示

secret_xing 2005-10-22 08:42:04
我在b\s网上看见下面这段代码,但是没有试验成功,请各位大侠帮个忙,谢谢

Response.Clear();
   Response.Buffer= true;
   Response.Charset="utf-8"; 



   //下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
   //filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc    .xls    .txt   .htm  



   Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls");
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");  
   //Response.ContentType指定文件类型 可以为application/ms-excel    application/ms-word    application/ms-txt    application/ms-html    或其他浏览器可直接支持文档
   Response.ContentType = "application/ms-excel";
   this.EnableViewState = false;  



  二、定义一个输入流  
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);  



  三、将目标数据绑定到输入流输出  
   this.RenderControl(oHtmlTextWriter);   
   //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
   Response.Write(oStringWriter.ToString());
   Response.End();
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
secret_xing 2005-10-24
  • 打赏
  • 举报
回复
to:nameldw(安安)
你好,可不可以与您具体交流一下呢??
没太看懂你的代码,我的qq:59634981
希望您能联系我好吗??谢谢
nameldw 2005-10-24
  • 打赏
  • 举报
回复
Response.ContentType = "application/msword";
ExportRequestContext myExpReq = new ExportRequestContext();
myExpReq.ExportInfo = RDoc.ExportOptions;

Stream myReportStream;

myReportStream = RDoc.FormatEngine.ExportToStream(myExpReq);
byte[] myReportByte = new byte[myReportStream.Length];
myReportStream.Read( myReportByte,0,(int)myReportStream.Length );
Response.BinaryWrite( myReportByte );
Response.Flush();
Response.End();
secret_xing 2005-10-23
  • 打赏
  • 举报
回复
没有人能帮个忙吗??
这段代码我用DataGrid1控件试好使,但换成CrystalReportViewer1就不行了,不知道为何?
大家也来看看啊
vickyyu 2005-10-23
  • 打赏
  • 举报
回复
private void aaa()
{
DataTable tbltemp=(DataTable)Session["TblSource"];

DataTable tblNew=new DataTable();
tblNew.Columns.Add(new DataColumn("姓名",System.Type.GetType("System.String")));
tblNew.Columns.Add(new DataColumn("家庭电话",System.Type.GetType("System.String")));
tblNew.Columns.Add(new DataColumn("小灵通",System.Type.GetType("System.String")));
tblNew.Columns.Add(new DataColumn("手机",System.Type.GetType("System.String")));

foreach(DataRow row in tbltemp.Rows)
{
DataRow rowNew =tblNew.NewRow();
rowNew["姓名"]=row["name"];
rowNew["家庭电话"]=row["hometel"];
rowNew["小灵通"]=row["tel2"];
rowNew["手机"]="'"+row["mobile"];

tblNew.Rows.Add(rowNew);
}

DataSet ds=new DataSet();
ds.Tables.Add(tblNew);

this.CreateExcel(ds,"1","列表.xls");


if (ds.Tables.Count>0)
ds.Tables.Remove(ds.Tables[0]);
}
vickyyu 2005-10-23
  • 打赏
  • 举报
回复
public void CreateExcel(DataSet ds,string typeid,string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");//utf-8

if (typeid=="1")
resp.AppendHeader("Content-Disposition", "attachment;filename=filename.xls");// + FileName);
else
resp.AppendHeader("Content-Disposition", "attachment;filename=filename.xml");// + FileName);

Response.ContentType = "application/ms-excel";


string colHeaders= "", ls_item="";
int i=0;

//定义表对象与行对像,同时用DataSet对其值进行初始化
DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select("");
// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
if(typeid=="1")
{
//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for(i=0;i<dt.Columns.Count;i++)
{
colHeaders+=dt.Columns[i].Caption.ToString()+"\t";
}

colHeaders+="\n";
//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach(DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for(i=0;i<row.ItemArray.Length-1;i++)
{
ls_item +=row[i].ToString() + "\t";
}
ls_item += row[i].ToString() +"\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item="";
}
}
else
{
if(typeid=="2")
{
//从DataSet中直接导出XML数据并且写到HTTP输出流中
resp.Write(ds.GetXml());
}
}

if (ds.Tables.Count>0)
ds.Tables.Remove(ds.Tables[0]);

//写缓冲区中的数据到HTTP头文件中
resp.End();


}
secret_xing 2005-10-23
  • 打赏
  • 举报
回复
上面的代码可能还需要和下面的代码合并着用,但小弟我不知如何衔接,想了几天也没成功,希望好心人能指点一下,万分感谢
oRpt.ExportOptions.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;
oRpt.ExportOptions.ExportFormatType=CrystalDecisions.Shared.ExportFormatType.WordForWindows;
CrystalDecisions.Shared.DiskFileDestinationOptions opop=new DiskFileDestinationOptions();
opop.DiskFileName=@"e:\nihao.doc";
oRpt.ExportOptions.DestinationOptions=opop;
oRpt.Export();
secret_xing 2005-10-22
  • 打赏
  • 举报
回复
用以上方法只能实现CrystalReportViewer1控键外形的显示,不能显示其报表内容,请大家指点,谢谢

4,819

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧