医院收费票据打印(这是这个项目最后的一个问题了,请兄弟们帮忙,万分感谢!)    已经有固定格式,只是把打印信息精确打印到票据对应位置上  
    格式如: 
                  **医院收据票据
    病人姓名:*****                   收费日期:********
    收费员:****
    
    收费类型   金额
    西药    25.00元   
     挂号费  15.00 元      红色的就是我要打印出来的内容       
       
  当操作人员点击页面的“打印”或者"打印预览"按扭的时候,   
  要打印的信息就会从从数据库中输出到页面,打印3张即可,。(如果只能打印一份也可以,先做着)
   

解决方案 »

  1.   

        楼上的兄弟,可以说的明白点吗?
     
        是套打,不过,我不知道是用GDI  绘出来,还是,用报表什么的来实现这个打印..
      

  2.   

    兄弟,介绍你一个好用的控件,很不错。
    http://www.wfsoft.com/middleware_info.asp?id=11010
      

  3.   

    用Excel做一个摸版,根据样式确定哪一个cell,把数据写进Excel的cell内,然后调用Excel的打印,就可以了,还可以循环实现套打,以前做的学校收费单据就这么做的    
                            **医院收据票据 
            病人姓名:(A1,e1)cell1                                       收费日期:cell3   
            收费员:cell2    
            
            收费类型       金额 
            西药         (A1 F2) 25.00元        
              挂号费     15.00   元   
      

  4.   

    1.在资源管理器中右键->"添加新项"->添加crystal报表
    2.aspx文件中:
    <%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"  Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
    注册程序集。
    3.aspx代码:
    <CR:CrystalReportViewer ID="CrystalReportViewer1"  runat="server" BackColor="white" HasToggleGroupTreeButton="False"  HasRefreshButton="False" PrintMode="ActiveX" DisplayGroupTree="False" DisplayPage="true" HasDrillUpButton="False" HasGotoPageButton="False" HasSearchButton="False" HasCrystalLogo="False" HasViewList="False" />
    4.aspx.cs代码:
    using CrystalDecisions.Shared;引用命名空间
    using CrystalDecisions.CrystalReports.Engine;//引用命名空间
    public string strInvTitle//开票抬头
    {get 
    { object o = ViewState["strInvTitle"]; if (o == null) { return ""; } 
                                              return (string)ViewState["strInvTitle"]; }
     set { ViewState["strInvTitle"] = value.ToString(); }
    }
    string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();//建立所需连接//建立报表文档
    ReportDocument rd = new ReportDocument();
    rd.Load(Server.MapPath(@"invoice_interface.rpt"));
    CrystalReportViewer1.ReportSource = rd;rd.ParameterFields["inv_title"].CurrentValues.AddValue(strInvTitle);
    //类似地给在第一步中建立的CrystalReport中的参数字段赋值。
      

  5.   

    我最近也在研究CrystalReport,有空多交流下。
      

  6.   

    对了,你的环境是什么样的?
    VS2003+C#+SqlServer2000?
    是B/S结构的程序吗?
      

  7.   

    不好意思,我晚上qq不在,代码是这样的,真的希望对你有所帮助,最主要的是做个excel模版private void Print()
    { //制作步骤:
    /* 1、用Excel作出与要打印的样式一样的电子表格存为模板;
     *     技巧:最好把第一行与第一列作为空行,以利于调整边距(虽然Excel、打印机可调整页边距), 尽量的在需要调整的地方多空几行与几列,以利于调整套打对准
     * 
     *  2、如同本程序一样,将Excel作为套打的模板,直接将要打印的数据写入;
     * 
     *  3、打印,根据实际的效果调整Excel模板行高列宽及空出的行列, 直到能够准确的套上。将模板拷贝一份,清除模板上的文字也网格线,做成套打的模板。
     */ #region 套打、打印预览 //用Excel打印,步骤为:打开、写数据、打印预览、关闭
    GoldPrinter.ExcelAccess excel = new GoldPrinter.ExcelAccess(); string strFileName = "PayBillCase.xls"; //套打模板文件名 string strExcelTemplateFile = System.IO.Path.GetFullPath(@"..\..\ExcelTemplate\" + strFileName);

    excel.Open(strExcelTemplateFile); //用模板文件
    excel.IsVisibledExcel = true;
    excel.FormCaption = "山 东 省 非aaaafd 款 书";
    //在模板中写入要打印的数据 //***发票抬头*** //年月日
    excel.SetCellText(2,"C",this.txt_Year.Text);
    excel.SetCellText(2,"D",this.txt_Month.Text);
    excel.SetCellText(2,"E",this.txt_Day.Text);

    //缴款人
    excel.SetCellText(3,"C",this.cbx_Student.Text);
    //执行单位名称
    excel.SetCellText(2,"I",this.txt_Name.Text);
    //执行单位编码
    excel.SetCellText(3,"I",txt_Nubmer.Text);
    //***项目编码、项目名称、单位、数量、收费标准、金额***
    //A6--A11是项目编码 excel.SetCellText(6,"B",txt_Num1.Text);
    excel.SetCellText(7,"B",txt_Num2.Text);
    excel.SetCellText(8,"B",txt_Num3.Text);
    excel.SetCellText(9,"B",txt_Num4.Text);
    excel.SetCellText(10,"B",txt_Num5.Text);
    excel.SetCellText(11,"B",txt_Num6.Text); //D6--D11是项目名称
    if(this.txt_Num1.Text!="")
    {
    excel.SetCellText(6,"D",cbx_Project1.Text);
    }
    if(this.txt_Num2.Text!="")
    {
    excel.SetCellText(7,"D",cbx_Project2.Text);
    }
    if(this.txt_Num3.Text!="")
    {
    excel.SetCellText(8,"D",cbx_Project3.Text);
    }
    if(this.txt_Num4.Text!="")
    {
    excel.SetCellText(9,"D",cbx_Project4.Text);
    }
    if(this.txt_Num5.Text!="")
    {
    excel.SetCellText(10,"D",cbx_Project5.Text);
    }
    if(this.txt_Num6.Text!="")
    {
    excel.SetCellText(11,"D",cbx_Project6.Text);
    } //I6--I11是单位
    excel.SetCellText(6,"G",txt_UintName1.Text);
    excel.SetCellText(7,"G",txt_UintName2.Text);
    excel.SetCellText(8,"G",txt_UintName3.Text);
    excel.SetCellText(9,"G",txt_UintName4.Text);
    excel.SetCellText(10,"G",txt_UintName5.Text);
    excel.SetCellText(11,"G",txt_UintName6.Text); //J6--J11是数量
    excel.SetCellText(6,"H",txt_Count1.Text);
    excel.SetCellText(7,"H",txt_Count2.Text);
    excel.SetCellText(8,"H",txt_Count3.Text);
    excel.SetCellText(9,"H",txt_Count4.Text);
    excel.SetCellText(10,"H",txt_Count5.Text);
    excel.SetCellText(11,"H",txt_Count6.Text); //K6--K11是收费标准
    excel.SetCellText(6,"I",txt_StandardCharge1.Text);
    excel.SetCellText(7,"I",txt_StandardCharge2.Text);
    excel.SetCellText(8,"I",txt_StandardCharge3.Text);
    excel.SetCellText(9,"I",txt_StandardCharge4.Text);
    excel.SetCellText(10,"I",txt_StandardCharge5.Text);
    excel.SetCellText(11,"I",txt_StandardCharge6.Text); //L6--L11是金额
    excel.SetCellText(6,"K",txt_Money1.Text);
    excel.SetCellText(7,"K",txt_Money2.Text);
    excel.SetCellText(8,"K",txt_Money3.Text);
    excel.SetCellText(9,"K",txt_Money4.Text);
    excel.SetCellText(10,"K",txt_Money5.Text);
    excel.SetCellText(11,"K",txt_Money6.Text);
    //***总金额**
    //合计金额(大写)
    excel.SetCellText(12,"F",txtTotalUpper.Text);
    //合计金额(小写)
    excel.SetCellText(12,"K",txtTotalLower.Text);
    //***缴款单尾***
    //校验码
    excel.SetCellText(14,"D",txt_Code.Text);
    //制单:
    excel.SetCellText(14,"J",txt_Writer.Text); excel.Print(); //打印 excel.Close(); //关闭并释放

    #endregion

    }
    private void PrintAll(string aStudentID)
    {
    Table_MainBody aTable_MainBody=new Table_MainBody(aStudentID); #region 套打、打印预览 try
    {
    if(aTable_MainBody.ID!="0")
    {
    //用Excel打印,步骤为:打开、写数据、打印预览、关闭
    GoldPrinter.ExcelAccess excel = new GoldPrinter.ExcelAccess();
    string strFileName = "PayBillCase.xls"; //套打模板文件名 string strExcelTemplateFile = System.IO.Path.GetFullPath(@"..\..\ExcelTemplate\" + strFileName);

    excel.Open(strExcelTemplateFile); //用模板文件
    excel.IsVisibledExcel = true;
    excel.FormCaption = "山 东 省 非 税 务 收 入 缴 款 书";
    //在模板中写入要打印的数据 //***发票抬头*** //年月日
    excel.SetCellText(2,"C",aTable_MainBody.MakeYear);
    excel.SetCellText(2,"D",aTable_MainBody.MakeMonth);
    excel.SetCellText(2,"E",aTable_MainBody.MakeDay);

    //缴款人
    excel.SetCellText(3,"C",aTable_MainBody.PayerName);
    //执行单位名称
    excel.SetCellText(2,"I",aTable_MainBody.CollageName);
    //执行单位编码
    excel.SetCellText(3,"I",aTable_MainBody.CollageNumber); int printItem=0;
    for(int i=0;i<aTable_MainBody.Details.Count;i++)
    {
    Table_Details aDetail=(Table_Details)aTable_MainBody.Details[i];
    printItem=i+6; excel.SetCellText(printItem,"B",aDetail.SubjectNumber);
    excel.SetCellText(printItem,"D",aDetail.SubjectName);
    excel.SetCellText(printItem,"G",aDetail.UintName);
    excel.SetCellText(printItem,"H",Common.SystemOperater.ReSkipSpace(aDetail.Count));
    //K6--K11是收费标准
    excel.SetCellText(printItem,"I",Common.SystemOperater.ReSkipSpace(aDetail.StandardCharge));
    //L6--L11是金额
    excel.SetCellText(printItem,"K",Common.SystemOperater.ReSkipSpace(aDetail.Money));
    } //***总金额**
    //合计金额(大写)
    excel.SetCellText(12,"F",aTable_MainBody.TotalCapi);
    //合计金额(小写)
    excel.SetCellText(12,"K",aTable_MainBody.TotalLower);
    //***缴款单尾***
    //校验码
    excel.SetCellText(14,"D",aTable_MainBody.CheckNumber);
    //制单:
    excel.SetCellText(14,"J",aTable_MainBody.UserName); excel.Print(); //打印 excel.Close(); //关闭并释放
    }
    }
    catch{}
    #endregion

    }
      

  8.   

      谢谢,各位,我正在GDI  一点点的画,快说了..问题好了,就来结账..呵呵..
      

  9.   

      感谢各位,问题解决了,GDI绘图..谢谢...