0

データベースで SQL クエリを実行するコンソール アプリケーションを作成する必要があります。アプリケーションは、この情報を取得してレポートにコンパイルし、このレポートを PDF にエクスポートしてから、PDF レポートを電子メールで送信する必要があります。(これはすべて自動的に行われる必要があります。Windows スケジューラを使用して、特定の日時にこのアプリケーションを実行します。)

これが私がこれまでに持っているものです:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
using System.IO;
using System.Net.Mail;

namespace SqlQueryReports
{
class Program
{
    static void Main(string[] args)
    {
        SqlConnection dataConnection = new SqlConnection();
        try
        {
            dataConnection.ConnectionString ="Data Source=MY-PC\\SQLEXPRESS;Initial Catalog=mydb;Integrated Security=True;Pooling=False";
            dataConnection.Open();

            SqlCommand dataCommand = new SqlCommand();
            dataCommand.Connection = dataConnection;

            dataCommand.CommandText = "SELECT Product_id,Product_name,Product_price FROM Product";
            Console.WriteLine("About to execute: {0}\n\n", dataCommand.CommandText);

            SqlDataReader dataReader = dataCommand.ExecuteReader();

            // Compile data into Report
            // Export Report to .pdf
            // Email .pdf report

            dataReader.Close();

            Console.WriteLine("DONE");
        }
        catch(SqlException e)
        {
            Console.WriteLine(e.Message);
        }

        finally
        {
            dataConnection.Close();
        }

    }       
}
}

次の方法を知る必要があります。

  1. この情報を使用してレポートを作成します。
  2. このレポートを pdf にエクスポート
  3. PDF レポートを電子メールで送信します。

前もって感謝します!

4

2 に答える 2

0

基本的にまったく同じタスクを与えられたばかりなので、これについてもっと意見があればいいのにと思います。これまでのところ、役立つ可能性があることがわかりました。サンプル PDF エクスポート (ソース: ASP スニペット)...

protected void ExportToPDF(object sender, EventArgs e)
{
    //Get the data from database into datatable
    string strQuery = "select CustomerID, ContactName, City, PostalCode"     +
        " from customers";
    SqlCommand cmd = new SqlCommand(strQuery);
DataTable dt = GetData(cmd);

//Create a dummy GridView
GridView GridView1 = new GridView();
GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();

Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition",
    "attachment;filename=DataTable.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End(); 
于 2015-02-05T20:36:35.560 に答える
0

ユーザーフレンドリーなデザイナーでレポートを適切にデザインしたい場合は、DevExpress の XtraReports または他のサードパーティの Report Engine を使用できます。通常は、DataSource をバインドし、pdf (または Excel、html、png など) としてエクスポートできます。の上... )。

すべてを自分で行いたい場合は、dataReader フィールドと列でグリッド ループを文字通り構成するテーブル (たとえば) を使用して一種の HTML ドキュメントをフォーマットできます。次に、pdf ドキュメントを作成できる任意のコンポーネントを使用する必要があります。最後に、組み込みの .NET Framework の Smtp Mailing を使用して、pdf を電子メールで送信できます。

于 2011-02-07T13:08:58.860 に答える