在 .NET中使用开源免费库操作Excel

    

从1-6的类库均不需要安装Office,不使用Office COM组件;而NetOffice需要安装Office,它提供的是与Office COM组件差不多的功能。

  自从上次找到NPOI之后,根据园友提供的线索以及Google,又找到了一些开源免费的类库,所以都简单体验了一遍。

  主要找到以下类库:

  MyXls(http://sourceforge.net/projects/myxls/)

  Koogra(http://sourceforge.net/projects/koogra/)

  ExcelLibrary(http://code.google.com/p/excellibrary/)

  ExcelPackage(http://excelpackage.codeplex.com/)

  EPPlus(http://epplus.codeplex.com/)

  LinqToExcel(http://code.google.com/p/linqtoexcel/)

  NetOffice(http://netoffice.codeplex.com/) 需安装Office Excel

  从1-6的类库均不需要安装Office,不使用Office COM组件;而NetOffice需要安装Office,它提供的是与Office COM组件差不多的功能。

  注:本文仅简单演示读取与创建Excel。

  准备测试代码

  首先,为这些类库准备一些测试代码,用于之后的测试。

  aspx主要代码如下:


<asp:FileUpload ID="FileUpload1" runat="server" />
 <asp:Button ID="Button1" runat="server" Text="上传Excel" onclick="Button1_Click" />
 <asp:Button ID="Button2" runat="server" Text="下载Excel" onclick="Button2_Click" />
 <asp:GridView ID="GridView2" runat="server">

 </asp:GridView>
aspx.cs主要代码如下:



private void RenderToBrowser(MemoryStream ms, string fileName)
    {
        if (Request.Browser.Browser == "IE")
        {
            fileName = HttpUtility.UrlEncode(fileName);
        }
        Response.AddHeader("Content-Disposition", "attachment;fileName=" + fileName);
        Response.BinaryWrite(ms.ToArray());
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile) //读取上传的文件绑定到GridView
        {
            GridView1.DataSource = ReadByXXX(FileUpload1.FileContent);
            GridView1.DataBind();
        }
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        DataTable table = new DataTable();
        table.Columns.Add("aa", typeof(string));
        table.Columns.Add("bb", typeof(string));
        table.Columns.Add("cc", typeof(string));
        for (int i = 0; i < 10; i++)
        {
            string a = DateTime.Now.Ticks.ToString();
            Thread.Sleep(1);
            string b = DateTime.Now.Ticks.ToString();
            Thread.Sleep(1);
            string c = DateTime.Now.Ticks.ToString();
            Thread.Sleep(1);
            table.Rows.Add(a, b, c);
        }
        //从DataTable创建Excel并下载
        RenderToBrowser(CreateByXXX(table), "test.xls");
    }





你可能感兴趣的:(在 .NET中使用开源免费库操作Excel)