我也遇到过这样的问题。
我的解决方法是,把报表导出成EXCEL文件,再将其在EXCEL中打印。
我的解决方法是,把报表导出成EXCEL文件,再将其在EXCEL中打印。
解决方案 »
- TFS2010 项目门户网站设置问题
- ASP.NET中如何用正则表达式验证文件的存储路径,如d:\win\d.txt???
- 关于xml
- 一个不知道该不该问的问题?asp.net程序的再次开发。
- 新手提问,请问什么时候该用Viewstate【】??
- 请大家给一个jmail定时发送邮件的例子
- javascript如何获得后台Session赋予Label的值?
- 大家来进来讨论讨论,给我点建议..
- 菜鸟提问!怪问题!请高手近来帮和看看!!!!
- 20万条记录进行显示和翻页,如何每次只取固定数量的记录
- 我有个aspnet.cn的域名,想建一个ASP技术网,请大家帮我想个网站名称好吗?
- 正版vs.net2003低价出售
——————————————————————————————————————
概念和原理:
1、PageMargins
获取报表页边距。
使用ApplyPageMargins方法应用更改。
PrintOptions 成员,CrystalDecisions.CrystalReports.Engine 命名空间
2、ApplyPageMargins
应用通过PrintOptions.PageMargins属性设置的更改。
PrintOptions 公共实例方法,CrystalDecisions.CrystalReports.Engine 命名空间
3、PageMargins 成员
公共实例字段
bottomMargin Int32。下边距的大小。
leftMargin Int32。左边距的大小。
rightMargin Int32。右边距的大小。
topMargin Int32。上边距的大小。
——————————————————————————————————————
事例代码:
[Visual Basic]
Private Sub SetMargins(ByVal left As Integer, ByVal top As Integer, ByVal right As Integer, ByVal bottom As Integer)
Dim margins As PageMargins ' 获取 PageMargins 结构并设置
'报表边距。
margins = Report.PrintOptions.PageMargins
margins.leftMargin = left
margins.topMargin = top
margins.rightMargin = right
margins.bottomMargin = bottom ' 应用页边距。
Report.PrintOptions.ApplyPageMargins(margins)
End Sub
[C#]
private void SetMargins(int left, int top, int right, int bottom)
{
PageMargins margins; // 获取 PageMargins 结构并设置
//报表边距。
margins = Report.PrintOptions.PageMargins;
margins.leftMargin = left;
margins.topMargin = top;
margins.rightMargin = right;
margins.bottomMargin = bottom; // 应用页边距。
Report.PrintOptions.ApplyPageMargins(margins);
}
[C++]
static void SetMargins(int left, int top, int right, int bottom)
{
PageMargins margins; // 获取 PageMargins 结构并设置
//报表边距。
margins = Report->PrintOptions->PageMargins;
margins.leftMargin = left;
margins.topMargin = top;
margins.rightMargin = right;
margins.bottomMargin = bottom; // 应用页边距。
Report->PrintOptions->ApplyPageMargins(margins);
};
问题:
pagemargins.leftmargin 的單位是甚麼?可否改? 與cm的換算關係如何?
——————————————————————————————————————
解决方案:
1、單位是twips
2、换算关系:
点素(Twip)
英寸(Inch)
点(Point)
毫米(Millimeter)
象素(Pixel,这与屏幕分辨率有关)
厘米(Centimeter)1英寸= 1440 Twips
1 厘米 = 567 Twips
1 英寸 = 72 Points
问题:Crystal Report的打印的时候,如何直接打印而不打开打印设置窗口?
——————————————————————————————————————
解决方案:
ReportDocument.PrintToPrinter 方法
ReportDocument 类 | ReportDocument 成员 | CrystalDecisions.CrystalReports.Engine 命名空间
要求
命名空间:CrystalDecisions.CrystalReports.Engine
平台:Windows 98,Windows NT 4.0,Windows Millennium Edition,Windows 2000
程序集:CrystalDecisions.CrystalReports.Engine使用 PrintOptions.PrinterName 属性将报表的指定页输出到选定的打印机上。如果未选择打印机,则将使用报表中指定的默认打印机。[Visual Basic]
Public Overridable Sub PrintToPrinter(ByVal nCopies As Integer, ByVal collated As Boolean, ByVal startPageN As Integer, ByVal endPageN As Integer)
[C#]
public virtual void PrintToPrinter (int nCopies , bool collated , int startPageN , int endPageN );
[C++]
public virtual void PrintToPrinter (int nCopies , bool collated , int startPageN , int endPageN );
参数
nCopies
指明要打印的份数。
collated
指明是否逐份打印。
startPageN
指明要打印的第一页。
endPageN
指明要打印的最后一页。
备注
若要打印所有页,请将 startPageN 参数和 endPageN 参数设置为零。 示例
下面的示例设置报表的页边距,选择打印机,并打印报表。[Visual Basic]
Private Sub PrintReport(ByVal printerName As String)
Dim margins As PageMargins ' 获取 PageMargins 结构并设置
' 报表边距。
margins = Report.PrintOptions.PageMargins
margins.bottomMargin = 350
margins.leftMargin = 350
margins.rightMargin = 350
margins.topMargin = 350
' 应用页边距。
Report.PrintOptions.ApplyPageMargins(margins) ' 选择打印机。
Report.PrintOptions.PrinterName = printerName' 打印报表。将 startPageN 和 endPageN
'参数设置为 0 表示打印所有页。
Report.PrintToPrinter(1, False, 0, 0)
End Sub
[C#]
private void PrintReport(string printerName)
{
PageMargins margins; // 获取 PageMargins 结构并设置
//报表的边距。
margins = Report.PrintOptions.PageMargins;
margins.bottomMargin = 350;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 350;
// 应用页边距。
Report.PrintOptions.ApplyPageMargins(margins); // 选择打印机。
Report.PrintOptions.PrinterName = printerName; // 打印报表。将 startPageN 和 endPageN
// 参数设置为 0 表示打印所有页。
Report.PrintToPrinter(1, false,0,0);
}
[C++]
void PrintReport(String* printerName)
{
PageMargins margins; // 获取 PageMargins 结构并设置
//报表的边距。
margins = Report->PrintOptions->PageMargins;
margins.bottomMargin = 350;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 350;
// 应用页边距。
Report->PrintOptions->ApplyPageMargins(margins); // 选择打印机。
Report->PrintOptions->PrinterName = printerName; // 打印报表。将 startPageN 和 endPageN
// 参数设置为 0 表示打印所有页。
Report->PrintToPrinter(1, false,0,0);
};