在本地报告处理过程中发生错误.在第一次使用savefiledialog保存文件之后
本文关键字:第一次 savefiledialog 之后 保存文件 错误 报告 处理 过程中 | 更新日期: 2023-09-27 18:04:58
我有一个问题,我无法在谷歌搜索中找到。我试着自己解决,但还是不行。我必须渲染报告和出口到excel。问题是当我第一次保存文件时,它工作得很好。但是当我第二次保存文件时,它显示"本地报告处理期间发生错误"
我的代码
public void createReportExcel(List<Models.MachineTime> item, List<Models.TestTime> testTime, List<Models.Interval> interval)
{
ReportViewer viewer = new ReportViewer();
viewer.LocalReport.ReportPath = "../../Report/Scale.rdlc";
string path = System.AppDomain.CurrentDomain.BaseDirectory;
ReportDataSource reportDataSource1 = new ReportDataSource("DataSet1", item);
viewer.LocalReport.DataSources.Add(reportDataSource1);
ReportDataSource reportDataSource2 = new ReportDataSource("DataSet2", testTime);
viewer.LocalReport.DataSources.Add(reportDataSource2);
ReportDataSource reportDataSource3 = new ReportDataSource("DataSet3", interval);
viewer.LocalReport.DataSources.Add(reportDataSource3);
string reportType = null;
string deviceInfo = null;
reportType = "Excel";
deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>Excel</OutputFormat>" +
" <PageWidth>11in</PageWidth>" +
" <PageHeight>8.5in</PageHeight>" +
" <MarginTop>0.5in</MarginTop>" +
" <MarginLeft>1in</MarginLeft>" +
" <MarginRight>1in</MarginRight>" +
" <MarginBottom>0.5in</MarginBottom>" +
"</DeviceInfo>";
string encoding;
string fileNameExtension;
Warning[] warnings;
string[] streams;
byte[] renderedBytes= null;
string mimeType;
renderedBytes = viewer.LocalReport.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.Filter = "Excel file (*.xls)|*.xls";
if (saveFile.ShowDialog() == true)
{
string saveFileName = saveFile.FileName;
using (FileStream fs = new FileStream(@saveFileName, FileMode.Create))
{
fs.Write(renderedBytes, 0, renderedBytes.Length);
fs.Close();
fs.Dispose();
viewer.Dispose();
}
}
}
正如我所解释的,它在我第一次保存时工作正常。当我再次尝试保存时,错误将出现在
行。renderedBytes = viewer.LocalReport.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
我注意到,当我成功保存后,一个对话框显示在第一次,第二次,错误总是发生。如果我第一次取消时,对话框显示,这是没有问题的第二次。
我也试图删除这行
string saveFileName = saveFile.FileName;
using (FileStream fs = new FileStream(@saveFileName, FileMode.Create))
{
fs.Write(renderedBytes, 0, renderedBytes.Length);
fs.Close();
fs.Dispose();
viewer.Dispose();
}
问题仍未解决。
对不起,我的英语不好。我尽量解释清楚,所以它可能是模棱两可和错误的句子。谢谢你的帮助。我找到了
我添加了这一行
saveFile.RestoreDirectory = true;
它工作得很好!但我不知道为什么。