C#中使用GDI+实现复杂打印
近日做报表,需要实现一个比较特殊的打印:针对不同患者的药费记录,打印不同的清单,并且支持一次打印多个患者的记录。其效果看起来应该像下面这个样子:
如上所述,使用弱智的水晶报表,就会遇到如何构造数据源的问题,由于不同患者的药费记录和遗嘱记录都不同,而且整体上需要一个患者一个清单,所以其数据源只能为一个数组,而不是简单的DataTable。小弟一向对大且笨拙的CrystalReport不感冒,再加上对GDI+比较痴迷,索性费点功夫,使用GDI+来打印上述报表。
首先需要构造数据源,创建一个ArrayList对象a,然后再把每个患者需要打印的东东保存为一个ArrayList放入ATotal中。
if( a != null )
{
a.Clear();
}
for( int m = 0; m < 3; m ++ )
{
ArrayList a1 = new ArrayList();
string x0 = "住院患者一日清单";
string x1 = "入院日期: 2007-11-11 结算日期: 2007-11-11 至 2007-11-15 ";
string x2 = "姓名:欧阳峰 住院号:20090909090 床:512 妇科";
string x3 = "项目编号*项目名称*单价*数量*单位"; // 注意其中的*标志
string[] x4 = new string[ 90 ]; // 假设有90条数据,不固定
for( int i = 0; i < 90<