DataGridViewDtsProvider

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
using System.Windows.Forms;

namespace DtsWizard
{
    public class DataGridViewDtsProvider : IDtsProvider
    {
        private string filePath = "";

        [Editor(typeof(Design.HtmFileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
        public string FilePath
        {
            get { return filePath; }
            set { filePath = value; }
        }

        #region IDtsProvider Members

        public void Export(object dataSOurce)
        {
            using (System.IO.StreamWriter sw = new System.IO.StreamWriter(this.filePath))
            {
                //string myHtmlFile = "";
                if (dataSOurce == null)
                {
                    throw new System.ArgumentNullException("targetTable");
                }
                else
                {
                    //Continue.
                }
                DataGridView datagrid = dataSOurce as DataGridView;

                //Get a worker object.
                //StringBuilder myBuilder = new StringBuilder();
                //Open tags and write the top portion.
                sw.WriteLine("<html xmlns='http://www.w3.org/1999/xhtml'>");
                sw.WriteLine("<head>");
                sw.WriteLine("<title>");
                sw.WriteLine("Page-");
                sw.WriteLine(Guid.NewGuid().ToString());
                sw.WriteLine("</title>");
                sw.WriteLine("</head>");
                sw.WriteLine("<body>");
                sw.WriteLine("<table border='1px' cellpadding='5' cellspacing='0' ");
                sw.WriteLine("style='border: solid 1px Silver; font-size: x-small;'>");

                //Add the headings row.
                sw.WriteLine("<tr align='left' valign='top'>");

                List<int> columns = new List<int>();
                foreach (DataGridViewColumn column in datagrid.Columns)
                {
                    if (column.Visible)
                    {
                        sw.WriteLine("<td align='left' valign='top'>");
                        sw.WriteLine(column.HeaderText);
                        sw.WriteLine("</td>");
                        columns.Add(column.Index);
                    }
                }
                //foreach (DataColumn myColumn in datatable.Columns)
                //{
                //    sw.WriteLine("<td align='left' valign='top'>");
                //    sw.WriteLine(myColumn.ColumnName);
                //    sw.WriteLine("</td>");
                //}

                sw.WriteLine("</tr>");

                foreach (DataGridViewRow row in datagrid.Rows)
                {
                    sw.WriteLine("<tr align='left' valign='top'>");
                    for (int i = 0; i < columns.Count; i++)
                    {
                        DataGridViewCell cell = row.Cells[columns[i]];
                        if (cell.ValueType == typeof(string))
                        {
                            sw.WriteLine("<td style='mso-number-format:\\@' align='left' valign='top'>");
                        }
                        else
                        {
                            sw.WriteLine("<td align='left' valign='top'>");
                        }
                        sw.WriteLine(cell.FormattedValue);
                        sw.WriteLine("</td>");
                    }
                    sw.WriteLine("</tr>");
                }
                //Add the data rows.
                //foreach (DataRow myRow in datatable.Rows)
                //{
                //    sw.WriteLine("<tr align='left' valign='top'>");

                //    foreach (DataColumn myColumn in datatable.Columns)
                //    {
                //        sw.WriteLine("<td align='left' valign='top'>");
                //        sw.WriteLine(myRow[myColumn.ColumnName].ToString());
                //        sw.WriteLine("</td>");
                //    }
                //    sw.WriteLine("</tr>");
                //}
                //Close tags.
                sw.WriteLine("</table>");
                sw.WriteLine("</body>");
                sw.WriteLine("</html>");
                //Get the string for return.
                //myHtmlFile = myBuilder.ToString();
            }
        }

        public Type SubForm
        {
            get
            {
                throw new Exception("The method or operation is not implemented.");
            }
            set
            {
                throw new Exception("The method or operation is not implemented.");
            }
        }

        #endregion
    }
}

posted @ 2010-06-15 17:54  leslie116  阅读(178)  评论(0编辑  收藏  举报