hjælp til at lave en tabel(C#) og føj til PDF
HejJeg 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();
}
