Senin, 30 April 2012

Membuat Laporan Report Excel MHT HTML dengan C#.NET


Report HTML & Excel

Untuk membuat report menggunakan format HTML/MHT dengan Microsoft Excel ikuti langkah-langkah di bawah ini :

1. Buka Microsoft Excel. Buat dokumen dengan format seperti tampilan di bawah ini. Kemudian klik File-Save dan simpan dengan nama template.xls.

 

2. Kemudian klik File-Save As untuk menyimpan dokumen tersebut dalam format Single Web Page (*mht) dengan nama template.mht.


3. Tutup Microsoft Excel. Kemudian buka file template.mht dengan Notepad sehingga tampak isi file dengan format HTML seperti di bawah ini :


4. Kemudian carilah bagian file yang mempunyai tag <tr> dan mempunyai isi [name], [address], dan [phone] sampai bagian akhir tag penutup </tr>


5. Cut bagian tersebut, kemudian buka Notepad lagi, Paste bagian file tersebut pada Notepad yang baru sehingga tampak seperti tampilan di bawah ini. Klik Save dan simpan dengan nama templatecontent.mht. Tutup Notepad tersebut.


9. Pada Notepad yang berisi file template.mht, di bagian yang sudah di Cut tuliskan  [content]. Kemudian klik File-Save dan tutup Notepad.


10. Buka Microsoft Visual Studio 2008, pilih File-New Project, pilih Project Types : Visual C# dan Templates : Windows Application. Klik OK.



11. Pada Form1 dari Toolbox tambahkan control DataGridView dan Button.

 


12. Tampilkan kode program Form1.vb milik Form1. Pada bagian imports paling atas tambahkan reference-reference yang akan dipakai, yaitu : System.Data.Odbc dan System.IO.

using System.Data.Odbc;
using System.IO;
using System.Runtime.InteropServices;

13. Kemudian di bawahnya pada deklarasi variabel dan objek global milik Class Form1 tambahkan kode program berikut ini :

public partial class Form1 : Form
{
    [DllImport("shell32.dll")]
    static extern IntPtr ShellExecute(
        IntPtr hwnd,
        string lpOperation,
        string lpFile,
        string lpParameters,
        string lpDirectory,
        int ShowCommands);

    public OdbcConnection cn;
    public DataSet ds;
    public DataTable tb;

14. Klik dua kali pada Form1 kemudian pada private void Form1_Load tambahkan kode program berikut :

private void Form1_Load(object sender, EventArgs e)
{
     cn = new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + Path.GetDirectoryName(Application.ExecutablePath) + "\\data.mdb");
           
      cn.Open();

      OdbcCommand cm = new OdbcCommand("SELECT name, address, phone FROM contacts", cn);
      OdbcDataReader rd;

      rd = cm.ExecuteReader();

      ds = new DataSet();
      tb = new DataTable();
      tb.TableName = "contacts";
      ds.Tables.Add(tb);

      ds.Load(rd, LoadOption.Upsert, tb);

      for (int i = 0; i < tb.Columns.Count; i++)
      {
           if (tb.Columns[i].DataType.ToString() == "System.String") { tb.Columns[i].MaxLength = 255; }
      }

      rd.Close();
      cn.Close();

      bindingSource1.DataSource = ds;

      bindingSource1.DataMember = "contacts";

      dataGridView1.DataSource = bindingSource1;
 }

15. Untuk menjalankan program klik menu Debug-Start Debugging (F5). Program akan berjalan seperti tampilan di bawah ini:


16. Hentikan Pogram. Kemudian klik dua kali pada Button1 pada private void Button1_Click tambahkan kode program berikut :

        private void Button1_Click(object sender, EventArgs e)
        {
            String rpt;
            String cPart, tContent;

            rpt = File.ReadAllText(Path.GetDirectoryName(Application.ExecutablePath) + "\\template.mht");

            tContent = "";

            for (int i = 0; i < bindingSource1.Count; i++)
            {
                cPart = File.ReadAllText(Path.GetDirectoryName(Application.ExecutablePath) + "\\templatecontent.mht");

                cPart = cPart.Replace("[name]", ((DataRowView)bindingSource1[i])["name"].ToString());
                cPart = cPart.Replace("[address]", ((DataRowView)bindingSource1[i])["address"].ToString());
                cPart = cPart.Replace("[phone]", ((DataRowView)bindingSource1[i])["phone"].ToString());
                tContent = tContent + (Char)13 + cPart;
            }

            rpt = rpt.Replace("[content]", tContent);

            File.WriteAllText(Path.GetDirectoryName(Application.ExecutablePath) + "\\report.xls", rpt);

            ShellExecute(this.Handle, "open", Path.GetDirectoryName(Application.ExecutablePath) + "\\report.xls", "", "", 1);
        }

17. Untuk menjalankan program klik menu Debug-Start Debugging (F5). Kemudian coba klik Button1, maka akan muncul tampilan report dalam Microsoft Excel.