Компилировать отчет SQL в консольном приложении - PullRequest
0 голосов
/ 07 февраля 2011

Мне нужно написать консольное приложение, которое будет выполнять 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();
        }

    }       
}
}

Iпросто нужно знать, как:

  1. Составить отчет с этой информацией.
  2. Экспортировать этот отчет в pdf
  3. Отправить отчет в формате PDF.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 05 февраля 2015

Очень жаль, что вы не получили больше информации по этому вопросу, поскольку мне только что дали ту же самую задачу в принципе.Вот что я нашел до сих пор, что может помочь;просто пример экспорта в PDF (источник: ASP Snippets) ...

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(); 
0 голосов
/ 07 февраля 2011

Если вы хотите красиво оформить отчет в удобном для пользователя конструкторе, вы можете использовать XtraReports из DevExpress или любого другого стороннего Report Engine, они обычно позволяют вам связывать DataSource и экспортировать в формате PDF (или Excel, HTML, png и так далее ...).

Если вы хотите сделать все самостоятельно, вы можете отформатировать HTML-документ с таблицей (например), в которой вы буквально составляете циклическую сетку в полях и столбцах dataReader, тогда вам следует использовать любой компонент, который позволяет создавать PDF-документ и, наконец, вы можете использовать встроенную SMTP-рассылку .NET Framework для отправки PDF-файла по электронной почте.

...