使用c#将Sql Server中的表导出为PDF文件

本文关键字:PDF 文件 Sql Server 使用 | 更新日期: 2023-09-27 17:58:13

我在sql中有几个表,我想在单击表单按钮后将它们导出到PDF文件有人知道我该怎么做吗?

当我将表从SQL导出到Excel时,我有以下代码:

protected void insertBTN(object sender, EventArgs e)
{
string conString = @"Data Source =XXXX; Initial Catalog=XXXX;     Persist Security     Info=True;User ID=XXXX; Password=XXXX";SqlConnection sqlCon     = new     SqlConnection(conString);
sqlCon.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT * from InjuryScenario", sqlCon);
System.Data.DataTable dtMainSQLData = new System.Data.DataTable();
da.Fill(dtMainSQLData);
DataColumnCollection dcCollection = dtMainSQLData.Columns;
// Export Data into EXCEL Sheet
Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = new                                            
Microsoft.Office.Interop.Excel.ApplicationClass();
ExcelApp.Application.Workbooks.Add(Type.Missing);
// ExcelApp.Cells.CopyFromRecordset(objRS);
for (int i = 1; i < dtMainSQLData.Rows.Count + 2; i++)
{
    for (int j = 1; j < dtMainSQLData.Columns.Count + 1; j++)
    {
        if (i == 1)
        {
            ExcelApp.Cells[i, j] = dcCollection[j - 1].ToString();
        }
        else
            ExcelApp.Cells[i, j] = dtMainSQLData.Rows[i - 2][j - 1].ToString();
    }
}
ExcelApp.ActiveWorkbook.SaveCopyAs("C:''Users''Mor Shivek''Desktop''test.xls");
ExcelApp.ActiveWorkbook.Saved = true;
ExcelApp.Quit();
}

使用c#将Sql Server中的表导出为PDF文件

"导出到PDF"是什么意思?使用上面的excel导出,然后使用PDF打印机发送文件的打印命令,这不是最简单的方法吗?如果你想以本机方式创建PDF,你很可能需要一些精力来布局文档。

//编辑:只需对SO进行一点研究,也会提到这一点:创建PDF 的最佳C#API

参考本

using System;
using System.Windows.Forms;
using System.Diagnostics;
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.Data.SqlClient;
using System.Data;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            string connetionString = null;
            SqlConnection connection ;
            SqlCommand command ;
            SqlDataAdapter adapter = new SqlDataAdapter();
            DataSet ds = new DataSet();
            int i = 0;
            string sql = null;
            int yPoint = 0;
            string pubname = null;
            string city = null;
            string state = null;
            connetionString = "Data Source=YourServerName;Initial Catalog=pubs;User ID=sa;Password=zen412";
            sql = "select pub_name,city,country from publishers";
            connection = new SqlConnection(connetionString);
            connection.Open();
            command = new SqlCommand(sql, connection);
            adapter.SelectCommand = command;
            adapter.Fill(ds);
            connection.Close();
            PdfDocument pdf = new PdfDocument();
            pdf.Info.Title = "Database to PDF";
            PdfPage pdfPage = pdf.AddPage();
            XGraphics graph = XGraphics.FromPdfPage(pdfPage);
            XFont font = new XFont("Verdana", 20, XFontStyle.Regular );
            yPoint = yPoint + 100;
            for (i = 0; i < = ds.Tables[0].Rows.Count - 1; i++)
            {
                pubname = ds.Tables[0].Rows[i].ItemArray[0].ToString ();
                city = ds.Tables[0].Rows[i].ItemArray[1].ToString();
                state = ds.Tables[0].Rows[i].ItemArray[2].ToString();
                graph.DrawString(pubname, font, XBrushes.Black, new XRect(40, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
                graph.DrawString(city, font, XBrushes.Black, new XRect(280, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
                graph.DrawString(state, font, XBrushes.Black, new XRect(420, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
                yPoint = yPoint + 40;
            }

            string pdfFilename = "dbtopdf.pdf";
            pdf.Save(pdfFilename);
            Process.Start(pdfFilename);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
}

}