Avatar billede sashzaz Nybegynder
25. november 2004 - 13:27

hjælp til at lave en tabel(C#) og føj til PDF

Hej

Jeg laver en tabel med en tabel klasse, der eksporteres til PDF fil. Eksport til pdf er ikke problemmet.  Jeg bruger ABCPDF component til at lave min PDF.

Tabellen tager højde for at hvis der ikke er plads på current page, så skifter den side.
Her kommer problemmet:
I mange tilfælde kan det ske, at en tabel har op til 20 eller flere kolloner, og page har kun plads til 5 el.6 kolloner. Derfor skal der være mulighed for at splittes kolonner på i f.eks. 6 kolonner pr. række.


Tabllerne kommer fra en dataset.

Koden til tabellen er her:



using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text;
using WebSupergoo.ABCpdf4;
using WebSupergoo.ABCpdf4.Objects;

namespace PDFGenerator
{
    /// <summary>
    /// Summary description for DataSetPDFTabel.
    /// </summary>
    public class DataSetPDFTabel : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Button Button1;
   

        SqlConnection sqlCon = new SqlConnection("data source=(local);initial catalog=LicensDB;integrated security=SSPI;");
        SqlDataAdapter da = new SqlDataAdapter();
        SqlDataAdapter daCustomer = new SqlDataAdapter();
        SqlDataAdapter daEmployees = new SqlDataAdapter();
        SqlDataAdapter daComputer = new SqlDataAdapter();
        SqlDataAdapter daLicens = new SqlDataAdapter();
        DataTable dt = new DataTable("ExcelOverfoersel");
        DataSet ds = new DataSet("WordOverfoersel");


        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
        }


        public void DataSetToString(DataSet ds, bool headers)
        {
               
            Doc theDoc = new Doc();
            theDoc.FontSize = 9;
            theDoc.Font = theDoc.AddFont("Verdana");
            theDoc.Rect.Inset(20,20);
            //theDoc.AddGrid();
            int maxColumns = 2;
            PDFTable theTable = new PDFTable(theDoc);

            for(int i=0;i<ds.Tables.Count;i++)
            {
           
                theTable.SetColumns(ds.Tables[i].Columns.Count);
                theTable.SetColumnWidth(0,2);
                //sb.Append("<table border=\"1\">");
       
   
                if (headers)
                {
                    //write column headings
                    //sb.Append("<tr>");
                    theTable.NextRow();
                    //    foreach (DataColumn dc in ds.Tables[i].Columns)

                    for(int s=0;s<ds.Tables[i].Columns.Count && s<maxColumns;s++)
                    {

                        theTable.NextCell();
                        theTable.AddHeadingText(ds.Tables[i].Columns[s].ColumnName);
                        theTable.SelectRow(theTable.Row);
                        theTable.Frame(false, true, false, false);
                    }
                   
                   
                }
           
               
                //write table data
                for(int x=0;x<ds.Tables[i].Rows.Count;x++)
                {
                    //sb.Append("<tr>");
       
                    //laver ny række
                    if (theTable.NextRow() == false)
                    {
                        theTable.DeleteLastRow();
                        x = x - 1;
                        theDoc.Flatten();
                        theTable.NewPage();
                    }
                    //                    theTable.NextRow();
                    if(x==(ds.Tables[i].Rows.Count-1))
                    {
                        theTable.SelectRow(theTable.Row);
                        theTable.Frame(false, true, false, false);   
                    }
   

                    for(int k = 0;k<ds.Tables[i].Columns.Count && k<maxColumns;k++)
                    {
               
                        theTable.NextCell();
                        string temp = ds.Tables[i].Rows[x][k].ToString();
                        theTable.AddText(ds.Tables[i].Rows[x][k].ToString());
                       
                    }
               

                    // underline first and last rows
                    theTable.SelectRow(theTable.Row);
                   
               
                   
                    // underline first and last rows
               
                    // shade every other row
                    if ((x % 2) == 1)
                        theTable.Fill("220 220 220");
                                               
                }
                theDoc.Flatten();


}


//skriv pfd'en ud
            }
            theDoc.Flatten();
            theDoc.Save(@"C:\ExcelFiles\simple1.pdf");
            theDoc.Clear();
           
        }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester