0

請求書と給与明細を印刷する C# のアプリケーションがあります。クライアントから、日常業務に使用するテンプレートが送られてきました。アクセスデータベースからの情報を含むプログラムで作成されたテキストファイルを印刷する方法は既に知っていますが、それに印刷する方法はわかりません。

この種のテンプレートの情報を印刷するにはどうすればよいですか? (これは私が [Google で見つけた][1] だけのものであり、単純な請求書の印刷に適しています) 私が持っているドキュメント テンプレートにはロゴもあります..

4

2 に答える 2

1

PrintDocumentオブジェクトとPrintPreviewオブジェクトを使用しています。Graphicsクラスを使用します。printが呼び出されると、「PrintEventArgse」オブジェクトが取得されます。次に、e.Graphicsを使用して、e.Graphics.DrawString、.DrawImageなどにアクセスできます。

印刷をオーバーライドする印刷オブジェクトクラス全体を作成しました。そのため、さまざまなフォント、ロゴ、ヘッダー、専門用語などを含む詳細ボックスがあります。これらにはそれぞれ独自のクラスがあります。それらすべてを大きなリストに入れて、printThis(List);と呼びます。そしてそれはそれぞれの印刷機能と座標を取り、私を形にします。

継承されたオブジェクト

class formHdr : printObject
{
    private string headerText;

    public formHdr(string hText)
        : base()
    {
        headerText = hText;

    }

    public override void printThis(System.Drawing.Printing.PrintPageEventArgs e)
    {
        Graphics g = e.Graphics;
        g.DrawString(headerText, FRHEADER, Brushes.Black, BaseX, BaseY);

    }
}

基本クラス

abstract class printObject
{
    protected Font FTHEADER;
    protected Font NRML;
    protected Font DETAIL;
    protected Font FRHEADER;
    protected Font DETHEADER;
    protected Font LEGAL;
    protected Font LEGAL2;

    public int baseX, baseY;
    public int boxSX, boxSY;

    public printObject()
    {
        baseX = 0;
        baseY = 0;
        boxSX = 0;
        boxSY = 0;
        FTHEADER = new Font("Arial", 12, FontStyle.Bold);
        NRML = new Font("Calibri", 10);
        DETAIL = new Font("Consolas", 8);
        FRHEADER = new Font("Arial", 16, FontStyle.Bold);
        DETHEADER = new Font("Calibri", 10, FontStyle.Bold);
        LEGAL = new Font("Arial", 8);
        LEGAL2 = new Font("Arial", 10);
    }

    public virtual void printThis(PrintPageEventArgs e) { }

オブジェクトの作成

                mainHead = new formHdr("Bill of Lading/Weigh slip Original");
                mainHead.BaseX = 225;
                mainHead.BaseY = 20;
                bol.Add(mainHead);

多分これはあなたが始めることができますか?私はまだそれを微調整していて、他の応答に興味があるでしょう。

于 2012-10-31T12:28:52.707 に答える
1

Wordの差し込み印刷で行います。この手法を使用して、Word 文書を作成します。ドキュメント内で、テキストのプレースホルダーを作成します。コードから、必要なものをプレースホルダーに入力します。

例えば:

  1. Word 文書タイプでctrl+F9
  2. フィールドを右クリックし、Edit field
  3. 選ぶMergeField
  4. フィールド名タイプについてFirstName
  5. コードを追加:

.

var document = new Document("document.docx");
var sqlCommand = "SELECT TOP 1 userName FirstName FROM Users";
var table = GetTable(sqlCommand, String.Empty);
document.MailMerge.Execute(table);
于 2012-10-31T13:04:06.417 に答える