MVC3 응용 프로그램에서 보고서를 생성해야합니다. mvc3에서 RDLC를 어떻게 사용할 수 있습니까? 누구든지 내 MVC3 응용 프로그램에서 RDLC 보고서를 작성하기 위해 따라야 할 예시적인 설명과 지침을 제공 할 수 있습니다.mvc3 응용 프로그램의 RDLC 보고서
감사
MVC3 응용 프로그램에서 보고서를 생성해야합니다. mvc3에서 RDLC를 어떻게 사용할 수 있습니까? 누구든지 내 MVC3 응용 프로그램에서 RDLC 보고서를 작성하기 위해 따라야 할 예시적인 설명과 지침을 제공 할 수 있습니다.mvc3 응용 프로그램의 RDLC 보고서
감사
나는 최근 Excel 스프레드 시트에 결과를 수출하는 MVC3 App에서 RDLC 보고서를 사용했다.
private class ExcelReport
{
private string encoding;
private string[] streams;
private Warning[] warnings;
private string fileNameExtension;
private string mimeType;
public ExcelReport()
{
this.ReportDataSources = new List<ReportDataSource>();
}
public string ExportFileName { get; set; }
public string MimeType
{
get
{
return mimeType;
}
private set
{
mimeType = value;
}
}
public string Encoding
{
get
{
return encoding;
}
private set
{
encoding = value;
}
}
public string FileNameExtension
{
get
{
return fileNameExtension;
}
private set
{
fileNameExtension = value;
}
}
public string[] Streams
{
get
{
return streams;
}
private set
{
streams = value;
}
}
public Warning[] Warnings
{
get
{
return warnings;
}
private set
{
warnings = value;
}
}
public string ReportPath { get; set; }
public IList<ReportDataSource> ReportDataSources { get; set; }
public byte[] GetReport()
{
LocalReport localReport = new LocalReport();
localReport.ReportPath = this.ReportPath;
foreach (var source in this.ReportDataSources)
{
localReport.DataSources.Add(source);
}
string reportType = "Excel";
//The DeviceInfo settings should be changed based on the reportType
//http://msdn2.microsoft.com/en-us/library/ms155397.aspx
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>Excel</OutputFormat>" +
" <PageWidth>21cm</PageWidth>" +
" <PageHeight>29cm</PageHeight>" +
" <MarginTop>1cm</MarginTop>" +
" <MarginLeft>2cm</MarginLeft>" +
" <MarginRight>2cm</MarginRight>" +
" <MarginBottom>1cm</MarginBottom>" +
"</DeviceInfo>";
//Render the report
return localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings
);
}
}
컨트롤러
public ActionResult GetReport(string reportParameter1)
{
/*Get data for your report that matches the dataset format in the report.*/
IEnumerable<ReportData> list = new IEnumerable<ReportData> /*Your Report Data*/
{
new ReportData{Id = 1, Code="ABC"},
new ReportData{Id = 2, Code="DEF"}
};
var excelReport = new ExcelReport
{
ExportFileName = "Your File Name",
ReportPath = Server.MapPath("~/Content/Reports/YourReport.rdlc")
};
var ds = new ReportDataSource("Main", list); /* Main is the name of the dataset inside the report*/
excelReport.ReportDataSources.Add(ds);
var report = excelReport.GetReport();
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}.{1}", excelReport.ExportFileName, excelReport.FileNameExtension));
Response.ContentType = "application/vnd.ms-excel";
return File(report, excelReport.MimeType);
}
최종 결과는 엑셀 docuemnt로 보낸 보고서되어야한다.
위의 예와 같이 수동으로 보고서를 생성해야합니다. Acrobat을 먼저 다운로드하지 않고 브라우저에서 볼 수 있도록 pdf를 사용할 수 있습니다.
이것은 간단한 작업이 아닙니다! 여기에 6 단계를 거쳐야합니다.
1
가 시작 당신의 Web.config를 열고 <compilation>
태그 내에서 <system.web>
섹션에 다음
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
validate="false" />
</httpHandlers>
과 다음을 추가하려면의 Web.config는 다음을 추가 :
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</buildProviders>
다음 <system.webServer>
태그 안에이 추가 :백99경2천9백67조6백8억2천97만3천2백10
<handlers>
<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
또한 Microsoft.ReportViewer.Common.dll뿐만 아니라 Microsoft.ReportViewer.WebForms.dll (버전 10.0.0.0)에 대한 레퍼런스를 추가한다.
2의 Global.asax는
당신의 Global.asax.cs을 열고 RegisterRoutes에() 함수는 다음을 추가 :
//Reports Viewers depend on Viewstate so are hosted in class ASPX web forms, so bypassing MVC3 routing
routes.IgnoreRoute("ReportViewer/");
당신이이 일을하는 동안은, 새로운를 만듭니다 폴더 asp.net 응용 프로그램에서 "ReportViewer"라는.
3. XSD 데이터 세트
프로젝트 폴더의 루트에 새 XSD 파일을 만듭니다 (예,이 루트해야합니다!).
프로젝트를 마우스 오른쪽 단추로 클릭하고 "새 데이터 세트 추가"를 클릭하십시오. 그것은 비어 있어야합니다.
오른쪽 은 데이터베이스 연결 문자열을 선택 ... 그것을 클릭하고, TableAdapter에 추가로 이동합니다. 앱 구성에 저장하십시오. 기존 저장된 프로 시저를 사용하십시오. SELECT 쿼리를 사용하여 데이터 집합을 채 웁니다. 데이터 집합에 의미있는 이름을 지정하십시오.4. 당신의 RDLC 보고서
가 (이에 대한 BI 도구가 필요합니다), 그리고 '데이터 집합을 추가 "갈 새로운 RDLC 보고서 파일을 만듭니다. 새 데이터 세트를 선택하십시오. 보고서를 작성하십시오. 데이터 세트 이름을 기록하십시오. (예를 들면, "을 DataSet1는"더 유용 뭔가 나중에 변경해야합니다.)
5. 설정을
가 새 ASP.NET WebForm에 만들기 ASPX 페이지, 그래, 웹 양식이라는 제목의 페이지 ShowReport를 .aspx. html로는 다음이 있어야합니다 귀하의 reports.aspx.cs에 대한 코드 숨김 내
<body>
<form id="form1" runat="server" >
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<rsweb:ReportViewer
ID="ReportViewer1"
SizeToReportContent="False"
Width="820px"
Height="820px"
runat="server"
ShowRefreshButton="false"
AsyncRendering="false"
DocumentMapCollapsed="True"
PageCountMode="Actual"
PromptAreaCollapsed="True"></rsweb:ReportViewer>
</form>
</body>
6. Codebehind가
을, 이렇게 :
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataSet dataset = GetPopulatedDatasetFromDB() // Populate your dataset here by calling the stored proc.
ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local;
ReportViewer1.LocalReport.ReportPath = Server.MapPath("/Reports/MyNewReport.rdlc");
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(
new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1", dataset.Tables[0]));
ReportViewer1.LocalReport.Refresh();
}
}
를 방문 페이지를 :
http://localhost/MyApp/ReportViewer/ShowReport.aspxVoila!
RDL 일 수 있습니까? 아니면 rdlc 여야합니까? –
RDLC 여야 함 – ziaullah