C# 通用表格打印 (接口)
2011-03-07 10:26
204 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
namespace cyh.General
{
/// <summary>
/// 报表每个单元打印前事件
/// </summary>
/// <param name="sender">发生事件的对象</param>
/// <param name="source">来源:1:页头 2:表头 3:表格 4:表脚 5:页脚 6:条码</param>
/// <param name="PageIndex">当前页号</param>
/// <param name="RowIndex">当前行号</param>
/// <param name="Caption">标题</param>
/// <param name="Field">绑定字段</param>
/// <param name="Value">打印前值</param>
public delegate void ReportUnitAfterPrint(object sender, ReportBandType source, int PageIndex, int RowIndex, string Caption, string Field, ref string Value, EventArgs e);
/// <summary>
/// 发生事件的来源:1:页头 2:表头 3:表格 4:表脚 5:页脚 6:条码
/// </summary>
public enum ReportBandType { PageHeader=1, TableHeader, TableDetail, TableFooter, PageFooder, BarCode };
/// <summary>
///表格线的类型 1:三栏表,2:有边框的三栏,4:完全网格
/// </summary>
public enum ReportGridLine :int { Nothing=0, Three=1, Border=2,Full=4}
/// <summary>
/// 报表主体设置
/// </summary>
internal struct ReportMain
{
/// <summary>
/// 打印机名
/// </summary>
public string printerName;
/// <summary>
/// 纸张大小
/// </summary>
public Size pageSize;
/// <summary>
/// 页边距
/// </summary>
public System.Drawing.Printing.Margins Margins;
/// <summary>
/// 获取或设置纸张类型(pageSize为空时有效)
/// </summary>
public System.Drawing.Printing.PaperKind PaperKind;
/// <summary>
/// 获取或设置每行高度(以0.1毫米为单位)
/// </summary>
public int DetailHeight;
/// <summary>
/// 获取或设置每页行数(0:自动计算)
/// </summary>
public int DetailRows;
/// <summary>
/// 获取或设置打印开始页
/// </summary>
public int BeginPage;
/// <summary>
/// 获取或设置打印结束页(0:最后一页)
/// </summary>
public int EndPage;
/// <summary>
/// 获取或设置打印方向
/// </summary>
public bool Landscape;
/// <summary>
/// 获取或设置表格线的类型
/// 1:三栏表,2:有边框的三栏,4:完全网格
/// </summary>
public ReportGridLine GridLine;
/// <summary>
/// 表格对齐方式
/// </summary>
public StringAlignment Align;
/// <summary>
/// 根据行高度及行数计算纸长(true时DetailRows不能为0)
/// </summary>
public bool AutoPageHeight;
/// <summary>
/// 每页打印的小页数
/// </summary>
public int Pages;
}
/// <summary>
/// 报表标题
/// </summary>
internal struct ReportTitle
{
/// <summary>
/// 标题内空
/// </summary>
public string Caption;
/// <summary>
/// 页头或页脚
/// </summary>
public bool Header;
/// <summary>
/// 字体(宋体加粗四号)
/// </summary>
public Font Font;
/// <summary>
/// 对齐方式(ctlTableReport用)
/// </summary>
public StringAlignment TextAlignment;
/// <summary>
/// 对齐方式(ctlTableXReport用)
/// </summary>
public DevExpress.XtraPrinting.TextAlignment xTextAlignment;
/// <summary>
/// 标题的高度和宽度,若不定义便检测Caption,否则自换行
/// </summary>
public System.Drawing.Size size;
}
/// <summary>
/// 报表各字段格式
/// </summary>
internal struct ReportField
{
/// <summary>
/// 名称
/// </summary>
public string Name;
/// <summary>
/// 表格头标题
/// </summary>
public string Caption;
/// <summary>
/// 标题字体(宋体、小四)
/// </summary>
public Font HeaderFont;
/// <summary>
/// 绑定字段
/// </summary>
public string Field;
/// <summary>
/// 对齐方式
/// </summary>
public StringAlignment TextAlignment;
/// <summary>
/// 对齐方式(ctlTableXReport用)
/// </summary>
public DevExpress.XtraPrinting.TextAlignment xTextAlignment;
/// <summary>
/// 表格字体(宋体、小四)
/// </summary>
public Font DetailFont;
/// <summary>
/// 自动换行
/// </summary>
public bool WordWrap;
/// <summary>
/// 表格脚内容
/// </summary>
public string Bottom;
/// <summary>
/// 是否合计
/// </summary>
public bool Sum;
/// <summary>
/// 格式化字符串
/// </summary>
public string FormatString;
/// <summary>
/// 标题的高度和宽度,若不定义便检测Caption,否则自换行并居中
/// </summary>
public Size HeaderSize;
}
/// <summary>
/// 设置条码打印
/// </summary>
internal struct ReportBarcode
{
/// <summary>
/// 条码内容(A-Z,0-9)
/// </summary>
public string Text;
/// <summary>
/// 起点
/// </summary>
public Point pint;
/// <summary>
/// 大小
/// </summary>
public Size size;
/// <summary>
/// 是否显示文字
/// </summary>
public bool showText;
/// <summary>
/// 字段名
/// </summary>
public string Field;
}
/// <summary>
/// 通用表格打印的接口
/// </summary>
public interface iTableReport
{
/// <summary>
/// 定义报表主体同时创建报表
/// </summary>
/// <param name="DetailHeight">明细每行高度</param>
/// <param name="DetailRows">每页行数(0:自动计算)</param>
/// <param name="GridLine">表格线的类型 1:三栏表,2:有边框的三栏,4:完全网格</param>
/// <param name="Align">表格对齐方向</param>
be8b
/// <param name="Landscape">横向还是纵向打印</param>
/// <param name="Margins">页的边距尺寸</param>
/// <param name="PaperKind">标准的纸张大小(pageSize为空时有效)</param>
/// <param name="pageSize">纸张大小(比PagerKind优先)</param>
/// <param name="FromPage">起始页</param>
/// <param name="ToPage">结束页(0:自动到最后一页)</param>
/// <param name="printerName">打印机名(为空时用自动选择)</param>
/// <param name="AutoPageHeight">根据行高度及行数计算纸长,不支持横向打印</param>
/// <param name="Pages">每页的小页数</param>
void SetReportMain(int DetailHeight, int DetailRows, ReportGridLine GridLine, StringAlignment Align, bool Landscape, System.Drawing.Printing.Margins Margins,
System.Drawing.Printing.PaperKind PaperKind, Size pageSize, int FromPage, int ToPage, string printerName, bool AutoPageHeight, int Pages);
/// <summary>
/// 定义报表主体同时创建报表
/// </summary>
/// <param name="DetailHeight">明细每行高度</param>
/// <param name="DetailRows">每页行数(0:自动计算)</param>
/// <param name="GridLine">表格线的类型 1:三栏表,2:有边框的三栏,4:完全网格</param>
/// <param name="pageSize">纸张大小(比PagerKind优先)</param>
/// <param name="FromPage">起始页</param>
/// <param name="printerName">打印机名(为空时用自动选择)</param>
/// <param name="Pages">每页的小页数</param>
void SetReportMain(int DetailHeight, int DetailRows, ReportGridLine GridLine,Size pageSize, int FromPage, string printerName, int Pages);
/// <summary>
/// 定义报表主体同时创建报表
/// </summary>
/// <param name="DetailHeight">明细每行高度</param>
/// <param name="GridLine">表格线的类型 1:三栏表,2:有边框的三栏,4:完全网格</param>
/// <param name="pageSize">纸张大小(比PagerKind优先)</param>
/// <param name="FromPage">起始页</param>
/// <param name="printerName">打印机名(为空时用自动选择)</param>
void SetReportMain(int DetailHeight, ReportGridLine GridLine, Size pageSize, int FromPage, string printerName);
/// <summary>
/// 定义报表标题
/// </summary>
/// <param name="Caption">标题内容</param>
/// <param name="Header">页头或页脚</param>
/// <param name="Font">字体(宋体加粗四号)</param>
/// <param name="TextAlignment">对齐方式</param>
/// <param name="size"> 标题的高度和宽度,若不定义便检测Caption,否则自换行</param>
void AddReportTitle(string Caption, bool Header, Font Font, StringAlignment TextAlignment, System.Drawing.Size size);
/// <summary>
/// 定义报表标题
/// </summary>
/// <param name="Caption">标题内容</param>
/// <param name="Header">页头或页脚</param>
void AddReportTitle(string Caption, bool Header);
/// <summary>
/// 定义报表字段
/// </summary>
/// <param name="Caption">表格头标题</param>
/// <param name="HeaderFont">标题字体(宋体、小四)</param>
/// <param name="Field">绑定字段</param>
/// <param name="TextAlignment">对齐方式</param>
/// <param name="DetailFont"> 表格字体(宋体、小四)</param>
/// <param name="WordWrap">自动换行</param>
/// <param name="Bottom">表格脚内容</param>
/// <param name="Sum">是否合计</param>
/// <param name="FormatString">格式化字符串</param>
/// <param name="HeaderSize">标题的高度和宽度,若不定义便检测Caption,否则自换行并居中</param>
void AddReportField(string Caption, Font HeaderFont, string Field, StringAlignment TextAlignment, Font DetailFont
, bool WordWrap, string Bottom, bool Sum, string FormatString, Size HeaderSize);
/// <summary>
/// 定义报表字段
/// </summary>
/// <param name="Caption">表格头标题</param>
/// <param name="Field">绑定字段</param>
void AddReportField(string Caption, string Filed);
/// <summary>
/// 定义条码
/// </summary>
/// <param name="Text">条码内容(A-Z,0-9)</param>
/// <param name="pint">起点</param>
/// <param name="size">大小</param>
/// <param name="showText">是否显示文字</param>
/// <param name="Field">字段名</param>
void SetReportBarCode(string Text, Point pint, Size size, bool showText, string Field);
/// <summary>
/// 报表每个单元打印前事件
/// </summary>
event ReportUnitAfterPrint UnitAfterPrint;
/// <summary>
/// 显示打印
/// </summary>
/// <returns></returns>
void ShowDialog();
/// <summary>
/// 显示打印
/// </summary>
/// <param name="owner"></param>
/// <returns></returns>
void ShowDialog(IWin32Window owner);
/// <summary>
/// 直接打印
/// </summary>
void Print();
/// <summary>
/// 数据源
/// </summary>
DataTable DataSource { get; set; }
/// <summary>
/// 自动页长时计算每页打印的行数
/// </summary>
/// <param name="rows">总行数</param>
/// <param name="maxrow">充许每页打印最大行数</param>
/// <returns></returns>
int GetAutoRow(int rows, int maxrow);
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
namespace cyh.General
{
/// <summary>
/// 报表每个单元打印前事件
/// </summary>
/// <param name="sender">发生事件的对象</param>
/// <param name="source">来源:1:页头 2:表头 3:表格 4:表脚 5:页脚 6:条码</param>
/// <param name="PageIndex">当前页号</param>
/// <param name="RowIndex">当前行号</param>
/// <param name="Caption">标题</param>
/// <param name="Field">绑定字段</param>
/// <param name="Value">打印前值</param>
public delegate void ReportUnitAfterPrint(object sender, ReportBandType source, int PageIndex, int RowIndex, string Caption, string Field, ref string Value, EventArgs e);
/// <summary>
/// 发生事件的来源:1:页头 2:表头 3:表格 4:表脚 5:页脚 6:条码
/// </summary>
public enum ReportBandType { PageHeader=1, TableHeader, TableDetail, TableFooter, PageFooder, BarCode };
/// <summary>
///表格线的类型 1:三栏表,2:有边框的三栏,4:完全网格
/// </summary>
public enum ReportGridLine :int { Nothing=0, Three=1, Border=2,Full=4}
/// <summary>
/// 报表主体设置
/// </summary>
internal struct ReportMain
{
/// <summary>
/// 打印机名
/// </summary>
public string printerName;
/// <summary>
/// 纸张大小
/// </summary>
public Size pageSize;
/// <summary>
/// 页边距
/// </summary>
public System.Drawing.Printing.Margins Margins;
/// <summary>
/// 获取或设置纸张类型(pageSize为空时有效)
/// </summary>
public System.Drawing.Printing.PaperKind PaperKind;
/// <summary>
/// 获取或设置每行高度(以0.1毫米为单位)
/// </summary>
public int DetailHeight;
/// <summary>
/// 获取或设置每页行数(0:自动计算)
/// </summary>
public int DetailRows;
/// <summary>
/// 获取或设置打印开始页
/// </summary>
public int BeginPage;
/// <summary>
/// 获取或设置打印结束页(0:最后一页)
/// </summary>
public int EndPage;
/// <summary>
/// 获取或设置打印方向
/// </summary>
public bool Landscape;
/// <summary>
/// 获取或设置表格线的类型
/// 1:三栏表,2:有边框的三栏,4:完全网格
/// </summary>
public ReportGridLine GridLine;
/// <summary>
/// 表格对齐方式
/// </summary>
public StringAlignment Align;
/// <summary>
/// 根据行高度及行数计算纸长(true时DetailRows不能为0)
/// </summary>
public bool AutoPageHeight;
/// <summary>
/// 每页打印的小页数
/// </summary>
public int Pages;
}
/// <summary>
/// 报表标题
/// </summary>
internal struct ReportTitle
{
/// <summary>
/// 标题内空
/// </summary>
public string Caption;
/// <summary>
/// 页头或页脚
/// </summary>
public bool Header;
/// <summary>
/// 字体(宋体加粗四号)
/// </summary>
public Font Font;
/// <summary>
/// 对齐方式(ctlTableReport用)
/// </summary>
public StringAlignment TextAlignment;
/// <summary>
/// 对齐方式(ctlTableXReport用)
/// </summary>
public DevExpress.XtraPrinting.TextAlignment xTextAlignment;
/// <summary>
/// 标题的高度和宽度,若不定义便检测Caption,否则自换行
/// </summary>
public System.Drawing.Size size;
}
/// <summary>
/// 报表各字段格式
/// </summary>
internal struct ReportField
{
/// <summary>
/// 名称
/// </summary>
public string Name;
/// <summary>
/// 表格头标题
/// </summary>
public string Caption;
/// <summary>
/// 标题字体(宋体、小四)
/// </summary>
public Font HeaderFont;
/// <summary>
/// 绑定字段
/// </summary>
public string Field;
/// <summary>
/// 对齐方式
/// </summary>
public StringAlignment TextAlignment;
/// <summary>
/// 对齐方式(ctlTableXReport用)
/// </summary>
public DevExpress.XtraPrinting.TextAlignment xTextAlignment;
/// <summary>
/// 表格字体(宋体、小四)
/// </summary>
public Font DetailFont;
/// <summary>
/// 自动换行
/// </summary>
public bool WordWrap;
/// <summary>
/// 表格脚内容
/// </summary>
public string Bottom;
/// <summary>
/// 是否合计
/// </summary>
public bool Sum;
/// <summary>
/// 格式化字符串
/// </summary>
public string FormatString;
/// <summary>
/// 标题的高度和宽度,若不定义便检测Caption,否则自换行并居中
/// </summary>
public Size HeaderSize;
}
/// <summary>
/// 设置条码打印
/// </summary>
internal struct ReportBarcode
{
/// <summary>
/// 条码内容(A-Z,0-9)
/// </summary>
public string Text;
/// <summary>
/// 起点
/// </summary>
public Point pint;
/// <summary>
/// 大小
/// </summary>
public Size size;
/// <summary>
/// 是否显示文字
/// </summary>
public bool showText;
/// <summary>
/// 字段名
/// </summary>
public string Field;
}
/// <summary>
/// 通用表格打印的接口
/// </summary>
public interface iTableReport
{
/// <summary>
/// 定义报表主体同时创建报表
/// </summary>
/// <param name="DetailHeight">明细每行高度</param>
/// <param name="DetailRows">每页行数(0:自动计算)</param>
/// <param name="GridLine">表格线的类型 1:三栏表,2:有边框的三栏,4:完全网格</param>
/// <param name="Align">表格对齐方向</param>
be8b
/// <param name="Landscape">横向还是纵向打印</param>
/// <param name="Margins">页的边距尺寸</param>
/// <param name="PaperKind">标准的纸张大小(pageSize为空时有效)</param>
/// <param name="pageSize">纸张大小(比PagerKind优先)</param>
/// <param name="FromPage">起始页</param>
/// <param name="ToPage">结束页(0:自动到最后一页)</param>
/// <param name="printerName">打印机名(为空时用自动选择)</param>
/// <param name="AutoPageHeight">根据行高度及行数计算纸长,不支持横向打印</param>
/// <param name="Pages">每页的小页数</param>
void SetReportMain(int DetailHeight, int DetailRows, ReportGridLine GridLine, StringAlignment Align, bool Landscape, System.Drawing.Printing.Margins Margins,
System.Drawing.Printing.PaperKind PaperKind, Size pageSize, int FromPage, int ToPage, string printerName, bool AutoPageHeight, int Pages);
/// <summary>
/// 定义报表主体同时创建报表
/// </summary>
/// <param name="DetailHeight">明细每行高度</param>
/// <param name="DetailRows">每页行数(0:自动计算)</param>
/// <param name="GridLine">表格线的类型 1:三栏表,2:有边框的三栏,4:完全网格</param>
/// <param name="pageSize">纸张大小(比PagerKind优先)</param>
/// <param name="FromPage">起始页</param>
/// <param name="printerName">打印机名(为空时用自动选择)</param>
/// <param name="Pages">每页的小页数</param>
void SetReportMain(int DetailHeight, int DetailRows, ReportGridLine GridLine,Size pageSize, int FromPage, string printerName, int Pages);
/// <summary>
/// 定义报表主体同时创建报表
/// </summary>
/// <param name="DetailHeight">明细每行高度</param>
/// <param name="GridLine">表格线的类型 1:三栏表,2:有边框的三栏,4:完全网格</param>
/// <param name="pageSize">纸张大小(比PagerKind优先)</param>
/// <param name="FromPage">起始页</param>
/// <param name="printerName">打印机名(为空时用自动选择)</param>
void SetReportMain(int DetailHeight, ReportGridLine GridLine, Size pageSize, int FromPage, string printerName);
/// <summary>
/// 定义报表标题
/// </summary>
/// <param name="Caption">标题内容</param>
/// <param name="Header">页头或页脚</param>
/// <param name="Font">字体(宋体加粗四号)</param>
/// <param name="TextAlignment">对齐方式</param>
/// <param name="size"> 标题的高度和宽度,若不定义便检测Caption,否则自换行</param>
void AddReportTitle(string Caption, bool Header, Font Font, StringAlignment TextAlignment, System.Drawing.Size size);
/// <summary>
/// 定义报表标题
/// </summary>
/// <param name="Caption">标题内容</param>
/// <param name="Header">页头或页脚</param>
void AddReportTitle(string Caption, bool Header);
/// <summary>
/// 定义报表字段
/// </summary>
/// <param name="Caption">表格头标题</param>
/// <param name="HeaderFont">标题字体(宋体、小四)</param>
/// <param name="Field">绑定字段</param>
/// <param name="TextAlignment">对齐方式</param>
/// <param name="DetailFont"> 表格字体(宋体、小四)</param>
/// <param name="WordWrap">自动换行</param>
/// <param name="Bottom">表格脚内容</param>
/// <param name="Sum">是否合计</param>
/// <param name="FormatString">格式化字符串</param>
/// <param name="HeaderSize">标题的高度和宽度,若不定义便检测Caption,否则自换行并居中</param>
void AddReportField(string Caption, Font HeaderFont, string Field, StringAlignment TextAlignment, Font DetailFont
, bool WordWrap, string Bottom, bool Sum, string FormatString, Size HeaderSize);
/// <summary>
/// 定义报表字段
/// </summary>
/// <param name="Caption">表格头标题</param>
/// <param name="Field">绑定字段</param>
void AddReportField(string Caption, string Filed);
/// <summary>
/// 定义条码
/// </summary>
/// <param name="Text">条码内容(A-Z,0-9)</param>
/// <param name="pint">起点</param>
/// <param name="size">大小</param>
/// <param name="showText">是否显示文字</param>
/// <param name="Field">字段名</param>
void SetReportBarCode(string Text, Point pint, Size size, bool showText, string Field);
/// <summary>
/// 报表每个单元打印前事件
/// </summary>
event ReportUnitAfterPrint UnitAfterPrint;
/// <summary>
/// 显示打印
/// </summary>
/// <returns></returns>
void ShowDialog();
/// <summary>
/// 显示打印
/// </summary>
/// <param name="owner"></param>
/// <returns></returns>
void ShowDialog(IWin32Window owner);
/// <summary>
/// 直接打印
/// </summary>
void Print();
/// <summary>
/// 数据源
/// </summary>
DataTable DataSource { get; set; }
/// <summary>
/// 自动页长时计算每页打印的行数
/// </summary>
/// <param name="rows">总行数</param>
/// <param name="maxrow">充许每页打印最大行数</param>
/// <returns></returns>
int GetAutoRow(int rows, int maxrow);
}
}
相关文章推荐
- 通用表格打印1
- 用C#接口实现通用的文本数据序列化
- 打印Datagridview中表格数据---c#.net
- C#打印表格
- 通用表格打印2 (基于DevExpress)
- c#asp.net表格Html数据模板转换Pdf文件web打印pdf报表dll
- c语言下的通用数据库接口(之sqlite消化,模拟c#,java的反射)
- 通用表格打印 示例
- C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 多系统开发接口 - 苹果客户端开发接口
- 打印实例 解析c#中什么是接口
- c语言下的通用数据库接口(之sqlite消化,模拟c#,java的反射)
- 【C#|.NET】从细节出发(一) 通用接口 aop dto 相关
- 用C#接口实现通用的文本数据序列化(ZT)
- C# 调用http和https请求rest接口通用操作类
- C#调用接口接收结果【Get,Post通用】
- c语言下的通用数据库接口(之sqlite消化,模拟c#,java的反射)
- 通用表格打印2 (基于DevExpress)
- C#小票打印(通用)
- c#通过Word实现打印的代码(表格为例)