關於打印(c#套打...)

  今天經理讓寫一個套打的程序?

什麼是套打呀,沒有用過,也不小的,於是百度一下,知道了,是什麼意思?

 

在電算化會計工作中,幾乎所有的由計算機生成的會計檔案都應當按照會計制度規定的格式進行輸出設計。例如各類帳本和記帳憑證等。通常,這些檔案的打印輸出處理方式有兩種:

  第一種:非套打方式------根據會計軟件生成的應輸出的檔案,打印時,既打印應當輸出的數據,也將帳本上印刷的格線打印出來。這種方式適用於在無痕跡的白紙上打印輸出會計檔案。   第二種:套打方式------在這種方式下,會計軟件的生產商必須在生產會計軟件的同時,配套 生產既符合會計制度規定又滿足該種會計軟件輸出要求的印有格線、格式固定的空白帳證和報表。電算會計在打印輸出會計檔案時,只套用現有格式打印應當輸出的 數據,並不將帳本上印刷的格線打印出來。這樣,提高了打印輸出效率,降低了打印機損耗,節約了打印成本。   目前,一些較成熟的會計軟件同時提供了套打和非套打兩種會計檔案打印輸出方式,例如金蝶、用友等財務軟件。   當然,這組概念也可以用於非會計軟件的其他軟件設計當中。

 

這意思我們在平時生活中都用過的,車票了,條形碼,什麼的,等等,都有...

 

 

   在網上看了下,實現的過程,建了一個打印操作的類,具體的實現方法如下:

 

PublicPrint.cs 打印操作類

using System;
using System.Collections.Generic;
using System.Text;

using System.Data;
using System.Drawing;

namespace WindowsFormsPing
{
    class PublicPrint
    {     
        public PublicPrint()
        {
          
        }

        public void Postion(Graphics e, DataTable dt)
        {
            int x = 60;//x座標

            int y = 50;//y座標

            Font fontNormalContent = new System.Drawing.Font("華文楷體", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

            Pen pen = new Pen(Color.Black, 1);

            for (int i = 0; i < dt.Rows.Count; i++)
            {

                string wpmc = dt.Rows[i]["MC"].ToString();//名稱

                string wpgg = dt.Rows[i]["GG"].ToString();//規格

                string wpdw = dt.Rows[i]["DW"].ToString();//單位

                string wpsl = dt.Rows[i]["SL"].ToString();//數量

                string wpdj = dt.Rows[i]["DJ"].ToString();//單價

                string wpje = dt.Rows[i]["JE"].ToString();//金額

                string sjxx = DateTime.Parse(dt.Rows[i]["DJSJ"].ToString()).ToShortDateString();//時間



                e.DrawString(wpmc + " " + wpgg, fontNormalContent, Brushes.Black, x, y);

                e.DrawString(wpdw, fontNormalContent, Brushes.Black, x + 80, y);

                e.DrawString(wpsl, fontNormalContent, Brushes.Black, x + 115, y);

                e.DrawString(wpdj, fontNormalContent, Brushes.Black, x + 160, y);



                //寫入時間

                if (i == 0)
                {

                    string year = sjxx.Substring(2, 2);

                    string month = sjxx.Substring(5, 2);

                    string day = sjxx.Substring(8, 2);

                    e.DrawString(year, fontNormalContent, Brushes.Blue, 150, 25);

                    e.DrawString(month, fontNormalContent, Brushes.Blue, 170, 25);

                    e.DrawString(day, fontNormalContent, Brushes.Blue, 190, 25);

                }

                y += 30;

            }
        }
    }
}

 

 

 

頁面調用.cs類:

 

        private void btnPrint_Click(object sender, EventArgs e)
        {
            if (printDialog1.ShowDialog() == DialogResult.OK)
            {
                printDocument1.PrinterSettings = printDialog1.PrinterSettings;

                printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
                printDocument1.Print();

            }
        } 


        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Graphics g = e.Graphics;

            DataSet ds = new DataSet();//綁定數據源
            PublicPrint p = new PublicPrint();
            p.Postion(g, ds.Tables[0]);

        } 

 

 

以上代碼就是.有從別人 那拿的,呵呵,也有自己改些, 記錄下.

 

 Q: 還有關於e.Graphics.Drawing()中X.Y的位,沒有一下子定好的位置,問朋友們說要慢慢的調才能出的來,如果是有規律的套打,還方便於實現,過於複雜的,是不是要體現出,另一種套打,就是動態生成線和格格. 有操作過的朋友可以一塊討論下!

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章