如果你的程序通用性不强,也就是说打印的格式一般都是定死的,那么你最好用水晶报表。如果你做的是比较通用的软件,而且不希望总是去给用户改打印格式,那么你就自己用c#中提供的打印控件或打印类自己写一段打印代码,可以根据Grid的格式所见即所得的打印。

解决方案 »

  1.   

    在printdocument的PrintPage事件里用GDI+手工作图然后按发票大小自定义打印机纸张大小,并将打印机全部纸张设置为自定义格式即可实现套打
      

  2.   

    我有类似的案例,打的是保险凭证,我先用一张凭证的扫描图铺在窗体上,再根据位置放置透明的Label控件,写一个打印类,只打印Label的Text即可,如果需要源码可以发送给你,不过不太完善,只是送给客户的小程序。
      

  3.   

    我觉得载程序中将你的数据或报表直接导到excel中,然后在程序中使用excel自己的打印功能就可以了。
    我们公司的OA系统就是这么做的。
      

  4.   

    做OA可以导出到Excel中,但是要是管理软件,尤其是作为商业软件,最好不要那样做。
      

  5.   

    to tangyanjun1(唐延军) 
    数据或报表如何直接导到excel中?
    谢谢
      

  6.   

    利用sql的DTS可以到处到excel,不过,我不是要这个,我们是要打印很多证件。