Drukowanie nieforemnych tabel

0

[b]Moja pierszwa aplikacja komercyjna - Temat skierowany do programistów C#[/b]
...Witam...
Piszę aplikację która przelicza pewne dane liczbowe. Końcowym efektem ma być wydruk kilkunastu tabel, o niesymetrycznych kształtach, wypełninych stringami i liczbami. Układ graficzny tabel i rozmieszczenie na stronie są zawsze takie same.
Problemem jest dla mnie sam wydruk. Wiem, że musze użyć metod klasy Print. Natomiast nie wiem jak stworzyć argumenty do tych metod. Czy powinienem wczytywać w programie ogólny szblon tabeli w postaci bitmapy i potem używajac współżędnych na obrazku wpisywać tam stringi?
Może uproszczę problem: Jak wydrukować tabelę z dwiema kolumnami: w pierszej kolumnie są 3 wiersze, w drugiej 4 wiersze? Jak ja wypełnić danymi? Czy powinienem stworzyć obrazek i pracować na tabeli jak na grafice? Czy powiniem użyć importu i eksportu do Excela lub Worda? Jak to sie robi?
Proszę o pomoc, to moja pierwsza aplikacja komercyjna. Napisałem w pracy aplikację okienkową i teraz chcą ze mna podpisać umowę o dzieło, żebym zrobił kolejny program. Wiec jest to dla mnie szansa, żebym zaczął częściowo pracować jako programista...
Osoby zorientowane bardzo proszę o pomoc...
Jeśli ktoś zna się na tym, mieszka w okolicy Warszawy i chce dorobić kilka zł, gotowy jestem zapłacić za wyjaśnienie i napisanie przykładowego kodu...
Pozdrawiam
Paweł

1

Ogólnie drukowanie jest podobne do rysowania na ekranie - sprowadza się w wywoływaniu w odpowiednim momencie metod klasy Graphics. Graphics otrzymasz po prostu w metodzie obsługującej zdarzenie PrintPage.

Widziałem kiedyś artykuł tłumaczący mniej-więcej o co chodzi - odnosi się on jednak ściśle do drukowania DataGrid.
http://www.c-sharpcorner.com/UploadFile/mgold/HowToPrintaDataGridinCsHARPand.NET11212005060838AM/HowToPrintaDataGridinCsHARPand.NET.aspx

Ogólnie jednak polecam artykuł http://www.dreamincode.net/forums/topic/44330-printing-in-c%23/ - wszystko w sumie co trzeba wiedzieć o drukowaniu żeby zacząć.

Na wypadek gdyby ci zabrakło kartek w kratkę napisałem przykładowy program drukujący:

public class PCPrint : System.Drawing.Printing.PrintDocument
{
    protected override void OnPrintPage(System.Drawing.Printing.PrintPageEventArgs e)
    {
        Graphics g = e.Graphics;
        for (int x = e.MarginBounds.Left; x < e.MarginBounds.Right; x += 20)
            g.DrawLine(Pens.Black, x, e.MarginBounds.Top, x, e.MarginBounds.Bottom);
        for (int y = e.MarginBounds.Top; y < e.MarginBounds.Bottom; y += 20)
            g.DrawLine(Pens.Black, e.MarginBounds.Left, y, e.MarginBounds.Right, y);
        

        base.OnPrintPage(e);
    }
}


public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        PCPrint p = new PCPrint();
        p.Print();
    }
}
0

Jeżeli masz możliwość narzucenia wykorzystywanych komponentów, to proponuje zapoznać się z technologią CrystalReports - szablony wydruków tworzysz wtedy w Visual Studio za pomocą edytora podobnego do takiego, jak jest w Accessie (bardzo prosto tworzy się wszelkiego rodzaju wydruki tabel, faktur, etc.). Potencjalnym problemem jest konieczność instalacji runtime'a CrystalReports u klienta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1