Saturday, February 18, 2012

Export Data Set/Data Table To Excel C# asp.net.

最近工作需要,写了一个可以把Data set的 structure 和 data export 到 excel format file的class。 这不是正统的export 方法,其实它是用HTML的structure 来构造需要的excel。 虽然如此,这 excel的功能还是能一样的。而且还蛮整齐的。
我把 code 放在 http://cjjack88.blogspot.com/p/fastexportexcelhelper.html。 大家可以一起研究研究。

这是export 出来的excel format。

其实这个class 还不不完美。 还有很多需要改进的地方。尤其是performance 方面。 

以下是一些示范如何使用这个class的code。

           DataTable demoDataTable = BuildDemoTable();
            using (FastExportExcelHelper myExcelHelper = new FastExportExcelHelper())
            {
                myExcelHelper.SetDataTable(demoDataTable);
                string[] isDecimal = new string[] { "Decimal" };
                string[] isDate = new string[] { "Date" };
                string[] isBoolean = new string[] { "Boolean" };
                myExcelHelper.IsBoolColumns(isBoolean);
                myExcelHelper.IsDateColumns(isDate);
                myExcelHelper.IsDecimalColumns(isDecimal);
                myExcelHelper.RenameHeaderName("NeedToRename", "After Rename");
                myExcelHelper.CreateFastExcel("Demo Excel", this.Response);
            }
        }
        private DataTable BuildDemoTable()
        {
            DataTable result = new DataTable();
            result.Columns.Add(new DataColumn("INT", typeof(int)));
            result.Columns.Add(new DataColumn("Character", typeof(char)));
            result.Columns.Add(new DataColumn("Decimal", typeof(decimal)));
            result.Columns.Add(new DataColumn("Date", typeof(DateTime)));
            result.Columns.Add(new DataColumn("Text", typeof(string)));
            result.Columns.Add(new DataColumn("NeedToRename", typeof(string)));
            result.Columns.Add(new DataColumn("Boolean", typeof(bool)));
            char isChar = 'C';
            decimal isDecimal = 100;
            DateTime isDateTime = DateTime.Now;
            string isString = "I am String .";
            string isRename = "RenameBa";
            bool iaBoolean = false;
            for (int i = 0; i < 1000; i++)
            {
                result.Rows.Add(i, isChar, isDecimal, isDateTime, isString, isRename, iaBoolean);
            }
            return result;
        }

我把demo 的files 放到media fire http://www.mediafire.com/?hq31ank883l2fzz。 有兴趣可以下载来看看。最后欢迎有建设性的意见。 
_________________________________________________________________
_________________________________________________________________

3 comments:

  1. 为了鼓励你,你的所有可以按的广告我都按了。。哈哈哈

    话说回来,这个东西我也干过,把database的资料convert去.csv file.另外一次是把政府的pdf弄去excel,再从excel弄去text,最后把txt转换去database的table。

    最强是前天,同事叫我delete完database里面的资料,再从另外一个同样table structure的database import新资料进去。因为那个database有50多个table,原本要打“delete * from table01” 50多次和"append from table x01"50多次。结果我自己写了一个command,按一下它就能在自己delete完和import新的data,哈哈。。。虽然花了一天的时间,总算对公司有贡献了。。。

    ReplyDelete
  2. 《话说回来,这个东西我也干过,把database的资料convert去.csv file.另外一次是把政府的pdf弄去excel,再从excel弄去text,最后把txt转换去database的table。》

    你的工作很有挑战性哦~不错。。。

    ReplyDelete
  3. //你的工作很有挑战性哦~不错。。。//

    我写到很深奥吓你而已,哈哈。。
    pdf 去excel是上网找converter做的
    excel去 txt只是save as txt
    txt放进去table只是一行query而已。。

    哈哈~

    ReplyDelete

LinkWithin

Related Posts with Thumbnails