내 프로젝트 중 하나에서 다음 코드를 사용하여 페이지 당 하나의 스트림을 얻습니다. 불행히도 VB.NET을 사용하지는 않지만 C#에서 VB로 변환 할 수 있어야합니다. 참고 : 이것은 SSRS2005에서 작동합니다 - SSRS2008에서도 작동하는지 잘 모르겠습니다! 또한 보고서 뷰어를 사용하지 않고 코드를 직접 인쇄하므로 EMF 장치 정보가 생성되므로이 코드를 변경해야 할 수도 있습니다.
이 기본 코드는 몇 시간 동안 인터넷 검색을 통해 웹에서 발견되었습니다. 저자에게 크레딧을주고 싶지만 링크를 북마크하지 않았습니다. 죄송합니다.
CultureInfo us = new CultureInfo("en-US");
string deviceInfo = String.Format(
"<DeviceInfo>" +
" <OutputFormat>EMF</OutputFormat>" +
" <PageWidth>{0}cm</PageWidth>" +
" <PageHeight>{1}cm</PageHeight>" +
" <MarginTop>{2}cm</MarginTop>" +
" <MarginLeft>{3}cm</MarginLeft>" +
" <MarginRight>{4}cm</MarginRight>" +
" <MarginBottom>{5}cm</MarginBottom>" +
"</DeviceInfo>",
Math.Round(m_pageSize.Width, 2).ToString(us),
Math.Round(m_pageSize.Height, 2).ToString(us),
Math.Round(m_marginTop, 2).ToString(us),
Math.Round(m_marginLeft, 2).ToString(us),
Math.Round(m_marginRight, 2).ToString(us),
Math.Round(m_marginBottom, 2).ToString(us));
m_reportStreams = new List<Stream>();
try
{
// Tell SSRS to store one stream per page on server
NameValueCollection urlAccessParameters = new NameValueCollection();
urlAccessParameters.Add("rs:PersistStreams", "True");
// Render first page
Stream s = viewer.ServerReport.Render("IMAGE", deviceInfo, urlAccessParameters, out mime, out extension);
m_reportStreams.Add(s);
// Loop to get other streams
urlAccessParameters.Remove("rs:PersistStreams");
urlAccessParameters.Add("rs:GetNextStream", "True");
do
{
s = viewer.ServerReport.Render("IMAGE", deviceInfo, urlAccessParameters, out mime, out extension);
if (s.Length != 0) m_reportStreams.Add(s);
}
while (s.Length > 0);
// Now there's one stream per page - do stuff with it
}
finally
{
foreach (Stream s in m_reportStreams)
{
s.Close();
s.Dispose();
}
m_reportStreams = null;
}
편집
는 viewer
당신이/인쇄, 저장하려는 보고서를 렌더링하는 초기화 ReportViewer
컨트롤의 프로그래밍 생성 된 인스턴스는 것을 언급하는 것을 잊었다.
시도한 결과 오류가 발생합니다. 실행 ''을 (를) 찾을 수 없습니다. –
빠른 Google에서 다음 URL을 보여줍니다. 다른 사람은 당신이 당신의 착오 알림말을 도울 때 유효하다 : http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices/thread/0ab399df-56b3-4ac8-a703-4001e7a5fb18 –
나는 있고, 나 제안 된 모든 권장 솔루션을 사용해 보았습니다. 나는 당신의 대답을 옳은 것으로 받아 들일 것이고, 문제와 함께 새로운 질문을 게시 할 것이다. –