我用.net写程序,做报表时一直用水晶报表来做,最近发现用Microsoft的RDLC做报表也不错,而且方便,最主要布署(WEB)的时修没有水晶报表那么麻烦。 但是唯一的缺点是学习资料太少了,都得自己瞎搞。唯一好的资源就只有蜡人张同志的《 RDLC报表》系列,当然还有 MSDN 。 下面是不预览直接打印的实现,主要代码来自MSDN。

        private void btnPrint_Click(object sender, EventArgs e)
{
Run();
}
private int m_currentPageIndex;
private IList<Stream> m_streams;
private DataTable LoadSalesData()
{
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["testrdlc.Properties.Settings.NorthwindConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("SELECT * FROM Employees", con);
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = cmd;
con.Open();
DataTable dt = new DataTable();
adp.Fill(dt);
con.Close();
return dt;
}
private Stream CreateStream(string name, string fileNameExtension,
Encoding encoding, string mimeType, bool willSeek)
{
Stream stream = new FileStream(name + "." + fileNameExtension,
FileMode.Create);
m_streams.Add(stream);
return stream;
}
private void Export(LocalReport report)
{
string deviceInfo =
"<DeviceInfo>" +
"  <OutputFormat>EMF</OutputFormat>" +
//"  <PageWidth>8.5in</PageWidth>" +
//"  <PageHeight>11in</PageHeight>" +
//"  <MarginTop>0.25in</MarginTop>" +
//"  <MarginLeft>0.25in</MarginLeft>" +
//"  <MarginRight>0.25in</MarginRight>" +
//"  <MarginBottom>0.25in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
m_streams = new List<Stream>();
try
{
report.Render("Image", deviceInfo, CreateStream, out warnings);
}
catch (Exception ex)
{
Exception innerEx = ex.InnerException;//取内异常。因为内异常的信息才有用,才能排除问题。
while (innerEx != null)
{
MessageBox.Show(innerEx.Message);
innerEx = innerEx.InnerException;
}
}
foreach (Stream stream in m_streams)
stream.Position = 0;
}
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
ev.Graphics.DrawImage(pageImage, 0, 0);
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}
private void Print()
{
const string printerName = "Microsoft Office Document Image Writer";
if (m_streams == null || m_streams.Count == 0)
return;
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = printerName;
if (!printDoc.PrinterSettings.IsValid)
{
string msg = String.Format("Can't find printer /"{0}/".", printerName);
Debug.WriteLine(msg);
return;
}
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
printDoc.Print();
}
private void Run()
{
LocalReport report = new LocalReport();
report.ReportPath = Application.StartupPath +"//Report1.rdlc";//加上报表的路径
report.DataSources.Add(new ReportDataSource("NorthwindDataSet_Employees", LoadSalesData()));
Export(report);
m_currentPageIndex = 0;
Print();
}
要说明的是:
一、report.ReportPath 属性指定的位置一定要有报表文件。
二、如果report.Render出现异常,必须捕获内异常信息,因为最外层异常信息的用处不大,根本无法排除问题。
三、
LocalReport.Render 方法的第一个参数 format

呈现报表所用的格式。 此参数将映射到某个呈现扩展插件。 支持的格式包括 Microsoft Office Excel、PDF 和 Image。详情参见MSDN

例子原码: 下载

不预览直接打印 Microsoft RDLC报表相关推荐

  1. SQL Server R2 报表服务,BIDS中预览带参数的报表,整个BIDS突然关闭

    数据库版本:SQL Server R2 企业版 SP1 + CU 6 操作系统:Windows Server 2003 问题描述:在BIDS中开发报表,预览带有参数的报表时,点查看报表,整个BIDS全 ...

  2. 浏览器打印不弹出预览直接打印

    设置谷歌,360浏览器不弹出预览直接打印,按下面步骤设置即可 http://www.yayihouse.com/yayishuwu/chapter/2909

  3. 使用RSClientPrint直接打印本地RDLC报表

    最近一个项目使用ReportViewer来呈现本地RDLC模块的报表,需要用户点击至少三次才能直正打印,用户感觉易用性很不好,需要我们修改. 经过网上查找相关资料,发现直接使用ACTIVEX控件RSC ...

  4. 【web小票打印】谷歌浏览器跳过预览直接打印(lodop)

    因项目需求,需要在网页端直接打印订单小票,然后客户给寄了一台得力热敏票据打印机.lowlowlow,人家都是什么云打印了.... 上产品官网溜达了一圈啥也没给,就给了驱动安装.装完在打印的时候选择该打 ...

  5. [微软新技术培训]微软新技术预览之Microsoft Office SharePoint Server 2007

    Microsoft Office SharePoint Server 2007 提供了一些企业级功能,来满足业务关键需求,例如,管理内容和业务流程,简化用户跨范围查找和共享信息的方式,以及使决策更加合 ...

  6. FastReport 实现不预览直接打印的写法(FastReport4.6 和 FastReport2.4)

    FastReport4.6 frxReport1.PrepareReport(); frxReport1.PrintOptions.ShowDialog := False: frxReport1.Pr ...

  7. lodop web打印 vue项目 无预览直接打印

    封装 LodopFuncs.js var CreatedOKLodop7766=null;//====判断是否需要安装CLodop云打印服务器:==== export function needCLo ...

  8. FastReport浏览器直接打印无须预览(2022终版)

    我们在使用web技术开发管理系统,如医疗领域的HIS系统,企业的ERP系统,财务系统等等,都有打印需求,而正是各类系统和客户都有着各种不相同的打印需要,模板,格式,数据不一样等:市面上报表有多种产品, ...

  9. 预览窗格无法预览word_使用导航窗格轻松重组Microsoft Word文档

    预览窗格无法预览word Microsoft Word is packed with features that improve usability and workflow efficiency. ...

最新文章

  1. 用什么样的个人笔记类软件?OneNote、EverNote(印象笔记)、为知笔记、麦库记事、有道云笔记……...
  2. php超链接如何隐藏参数,php如何去除超链接
  3. Linux命令学习总结:dos2unix - unix2dos
  4. 5-4日 socket套接字
  5. mysql负责均衡读写分离_MySQL读写分离之负载均衡
  6. python pymysql_python使用pymysql实现操作mysql
  7. Numpy 数组操作
  8. sas数据集怎么导出_SAS学习--导入导出文件、拼表、数据集筛选
  9. python 运算符重载_一锅类似函数重载的小杂烩
  10. (超详细)Linux Shell 编程
  11. 计算机网络各章节知识点总结
  12. WPS文档目录更新产生的问题记录
  13. 使用moment获取本周、前n周、后n周开始结束日期以及动态计算周数
  14. 杭州亲历重要时间点记录
  15. PS 颜色表大全-CMYK颜色表(2)
  16. 密码学系列之四:一文搞懂序列密码
  17. Chrome浏览器常用快捷键总结
  18. 【论文泛读】Leveraging Distribution Alignment via Stein Path for Cross-Domain Cold-Start Recommendation
  19. 查看服务器ip修改记录,如果查看服务器ip地址和修改ip
  20. 怎么选聚氨酯减震弹簧万向轮

热门文章

  1. 二维数组或三维数组转换为一维数组
  2. mysql数据库sysdate_mysql now() sysdate() 区别
  3. java 多态 ppt下载_java继续多态.ppt
  4. Web负载均衡解决方案 HAproxy
  5. java的动态绑定机制
  6. uni-app视频播放及下载功能
  7. 如何用秒验提升用户体验和转换率?
  8. PyTorch实现基于ResNet18迁移学习的宝可梦数据集分类
  9. 双11狂欢节模板 让大屏“闪电”起来
  10. gmail_如何关闭GMail对话视图