为什么水晶报表能够导出rpt,word就是不能导出Excel呢

2020-04-29 科技 129阅读
网络上提到的方法 大概有以下:
1、如果你使用VS2005,可以使用RDLC报表,导出的Excel效果十分好。
2、可以考虑用文本框代替线。
3、
水晶报表自带的导出Excel不太完美,导出的文件没有网格线,要使它出现网格线就要自己写导出方法.要注意的一点是只有用强类型的水晶报表才可以写自定义的导出方法(个人意见)。方法步骤:
1, 创建个数据集
2, 在业务层创建水晶报表文件(强类型水晶报表就是把水晶报表放在项目里面,而不是网站里,这样在界面可以调用报表文件相关的方法)
3, 报表绑定:
在方法前面声明必要的参数
ReportDocument ReportDoc;
TableLogOnInfo logOnInfo;
DiskFileDestinationOptions FileOPS;
ExportOptions ExOPS;
CrystalReport1 cr = new CrystalReport1();
绑定代码:
DataSet1 ds = new DataSet1();
SqlConnection con = new SqlConnection("server=YWG;uid=sa;pwd=;database=jcjyzbxj");
SqlDataAdapter da = new SqlDataAdapter("SELECT DM,MC FROM DM_XB", con);
da.Fill(ds, "DM_XB");
cr.SetDataSource(ds);
CrystalReportViewer1.ReportSource = cr;
导出Excel代码:
调用Excel的方法:
protected void Button1_Click(object sender, EventArgs e)
{
DataSet1 ds = new DataSet1();
SqlConnection con = new SqlConnection("server=YWG;uid=sa;pwd=;database=jcjyzbxj");
SqlDataAdapter da = new SqlDataAdapter("SELECT DM,MC FROM DM_XB", con);
da.Fill(ds, "DM_XB");
cr.SetDataSource(ds);
CrystalReportViewer1.ReportSource = cr;
string ReportFile = Server.MapPath("CrystalReport1.rpt");
string ExcelFileName = "g:\\myExcel.xls";
bool msg= ExportToExcel(ReportFile, ds, ExcelFileName);
}
导出Excel的方法:
public bool ExportToExcel(string ReportFile, object ReportDataSource, string ExcelFileName)
{
try
{
ReportDoc = new ReportDocument();
logOnInfo = new TableLogOnInfo();
FileOPS = new DiskFileDestinationOptions();
cr.Load(ReportFile);
cr.SetDataSource(ReportDataSource);
FileOPS.DiskFileName = ExcelFileName;
ExOPS = cr.ExportOptions;
ExOPS.DestinationOptions = FileOPS;
ExOPS.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
ExOPS.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.ExcelRecord;
cr.Export();
System.Web.HttpResponse Response = System.Web.HttpContext.Current.Response;
Response.ClearContent();
Response.ClearHeaders();
//Response.ContentType = contentType;
//Response.WriteFile(ExcelFileName);
Response.Flush();
Response.Close();
return true;
}
catch
{
return false;
}
}
需要注意的地方:1在导出Excel以前一定要重新绑定一次数据,要不导出的文件没有数据
2导出Excel的文件类型要是ExcelRecord,不能是Excel否则一样没有网格线
还有看下软件有没有问题
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com