如何使用asp.net 4.0以编程方式从水晶报表导出数据
本文关键字:水晶 报表 数据 方式 编程 asp 何使用 net | 更新日期: 2023-09-27 18:09:45
我只想以编程方式从水晶报告导出数据。下面是我的代码:
protected void ImageButton7_Click(object sender, ImageClickEventArgs e)
{
System.IO.MemoryStream oStream = new System.IO.MemoryStream();
if (DDL_ExportOption.SelectedItem.Value != "-1")
{
switch (DDL_ExportOption.SelectedItem.Value.ToString())
{
case "1":
oStream = (System.IO.MemoryStream)((CrystalDecisions.CrystalReports.Engine.ReportDocument)Session[strQueryString]).ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
break;
case "2":
oStream = (System.IO.MemoryStream)((CrystalDecisions.CrystalReports.Engine.ReportDocument)Session[strQueryString]).ExportToStream(CrystalDecisions.Shared.ExportFormatType.Excel);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
break;
case "3":
oStream = (System.IO.MemoryStream)((CrystalDecisions.CrystalReports.Engine.ReportDocument)Session[strQueryString]).ExportToStream(CrystalDecisions.Shared.ExportFormatType.WordForWindows);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/doc";
break;
}
//export format
try
{
Response.BinaryWrite(oStream.ToArray());
Response.End();
}
catch (Exception err)
{
Response.Write("< BR >");
Response.Write(err.Message.ToString());
}
}
}
但如果运气不好,这行不通。在crystal report工作中,我遇到了很多问题
尝试:
cryRpt = new ReportDocument();
cryRpt.Load(Server.MapPath(RPTName));
cryRpt.SetDataSource(DT);
switch (DDL_ExportOption.SelectedItem.Value.ToString()) {
case 1
cryRpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "ExportedReport");
case 2
cryRpt.ExportToHttpResponse(ExportFormatType.WordForWindows, Response, true, "ExportedReport");
case 3
ExportDataSetToExcel(DT, "ExportedReport");
}
和导出到excel的功能:
public static void ExportDataSetToExcel(DataTable ds, string filename)
{
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.Buffer = true;
response.Charset = "";
response.ContentType = "application/vnd.ms-excel";
using (StringWriter sw = new StringWriter()) {
using (HtmlTextWriter htw = new HtmlTextWriter(sw)) {
DataGrid dg = new DataGrid();
dg.DataSource = ds;
dg.DataBind();
dg.RenderControl(htw);
response.Charset = "UTF-8";
response.ContentEncoding = System.Text.Encoding.UTF8;
response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble());
response.Output.Write(sw.ToString());
response.End();
}
}
}