如何在Asp .net(C#)中的Excel分隔表中导出多个Gridview [英] how to export multple Gridview in Excel Seperated Sheets in Asp .net (C#)

查看:51
本文介绍了如何在Asp .net(C#)中的Excel分隔表中导出多个Gridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的页面上有2个网格视图,我需要在excel中导出相同的

Gridview1到Excel(工作表1)

Gridview1到Excel(工作表2)



请帮帮我...

Awaitng积极回应。



问候,

Rohini G

Pune

解决方案

你可以用EPPLUS(免费)创建excel文件

(你可以用nuget下载它)



你可以制作一个检索数据源的通用方法

并将它用于网格生成和excel生成







你可以声明一个每次填写网格时,ExcelPackage(epplus excel文件)和空+填充

所以你的导出按钮只会在响应上放一个完整的文件。



示例:

http://epplus.codeplex.com/wikipage ?标题= WebapplicationExample [ ^ ]


有什么问题?

Single Gridview:将Gridview数据导出到ASP.NET中的Excel [ ^ ]



多个Gridview:多个GRIDVIEW进入多个工作表 [ ^ ]



      - Amy


 CLient Side :
----------------------------- -----------

< pre lang =xml>& lt; form id =& quot; form1& quot; RUNAT =安培; QUOT;服务器&安培; QUOT;&安培; GT;
& lt; div& gt;
& lt; table& gt;
& lt; tr& gt;
& lt; td& gt;
& lt; asp:GridView ID =& quot; gdvreport1& quot; RUNAT =安培; QUOT;服务器&安培; QUOT;&安培; GT;
& lt; / asp:GridView& gt;
& lt; / td& gt;
& lt; / tr& gt;
& lt; br /& gt;& lt; br /& gt;
& lt; tr& gt;
& lt; td& gt;
& lt; asp:GridView ID =& quot; grvreport2& quot; RUNAT =安培; QUOT;服务器&安培; QUOT;&安培; GT;
& lt; / asp:GridView& gt;
& lt; / td& gt;
& lt; / tr& gt;
& lt; tr& gt;
& lt; td& gt;
& lt; asp:按钮ID =& quot; btnget& quot; RUNAT =安培; QUOT;服务器&安培; QUOT;文本=安培; QUOT;&的GetData放大器; QUOT;的OnClick =安培; QUOT; btnget_Click&安培; QUOT; /&安培; GT;
& lt; / td& gt;
& lt; td& gt;
& lt; asp:按钮ID =& quot; btnexport& quot; RUNAT =安培; QUOT;服务器&安培; QUOT;文本=安培; QUOT;出口与安培; QUOT;的OnClick =安培; QUOT; btnexport_Click&安培; QUOT; /&安培; GT;
& lt; / td& gt;
& lt; / tr& gt;
& lt; / table& gt;
& lt; / div& gt;
& lt; / form& gt;< / pre>




服务器端:
----------------------- --------------------

< pre> using System;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControls;
使用MDIndia.ClassLibrary.ApplicationSupport;
使用System.Data;
使用Microsoft.Office.Interop.Excel;
使用Excel = Microsoft.Office.Interop.Excel;使用System.Reflection
;
使用System.IO;
使用System.Text;
使用System.Web.UI.HtmlControls;




公共部分类NewTwo:System.Web.UI.Page
{
protected void Page_Load(object sender,EventArgs e )
{

}
protected void btnget_Click(object sender,EventArgs e)
{
try
{


}
catch(例外)
{

throw;
}
}
private void GetconnectToAuth()
{
DBManager.CurrentDatabaseProvider = DatabaseProvider.MSSQLServer;
DBManager.ConnectionString =数据源= MDICENTRAL \\ AUTHORISATION;初始目录= PIMS;用户ID = mdindia1;密码= md!nd!@@ 123;
}
protected void btnexport_Click(object sender,EventArgs e)
{

GetconnectToAuth();
string query1 =从ICMaster中选择ID,ICName;
System.Data.DataTable dt = new System.Data.DataTable();
dt = DBManager.SelectDataTable(query1);
System.Data.DataTable dt2 = new System.Data.DataTable();
query1 =从LabMaster中选择LabID,LabName;
dt2 = DBManager.SelectDataTable(query1);
dt2.TableName =B;
DataSet dataset = new DataSet();
dataset.Tables.Add(dt.Copy());
dataset.Tables.Add(dt2.Copy());


Excel.Application excel = new Excel.Application();

var workbook =(Excel._Workbook)(excel.Workbooks.Add(Missing.Value));

for(var i = 0; i& lt; dataset.Tables.Count; i ++)
{
if(workbook.Sheets.Count& lt; = i) )
{
workbook.Sheets.Add(Type.Missing,Type.Missing,Type.Missing,
Type.Missing);
}

var currentSheet =(Excel._Worksheet)workbook.Sheets [i + 1];

switch(Convert.ToInt32(i))
{
case 0:
currentSheet.Name =Projects;
休息;
case 1:
currentSheet.Name =Employees;
休息;


}

for(var j = 0; j& lt; dataset.Tables [i] .Columns.Count; j ++)
{
currentSheet.Cells [1,j + 1] = dataset.Tables [i] .Columns [j] .ToString();
}

for(var y = 0; y& lt; dataset.Tables [i] .Rows.Count; y ++)
{
for(var x = 0; x& lt; dataset.Tables [i] .Rows [y] .ItemArray.Count(); x ++)
{
currentSheet.Cells [y + 2,x + 1] = dataset.Tables [i] .Rows [y] .ItemArray [x];
}
}
}

workbook.SaveAs(Server.MapPath(Test.xlsx),Type.Missing,Type.Missing,Type.Missing,
Type.Missing,Type.Missing,Excel.XlSaveAsAccessMode.xlNoChange,
Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
workbook.Close(true,Type.Missing,Type.Missing);

excel.Quit();

var filePath = Server.MapPath(Test.xlsx);
FileInfo targetFile = new System.IO.FileInfo(filePath);
try
{
FileInfo objFileInfo = new FileInfo(filePath);
Response.Clear();
Response.Cache.SetCacheability(System.Web.HttpCacheability.Private);
Response.AddHeader(Content-Disposition,(attachment; filename =+ objFileInfo.Name));
Response.AddHeader(Content-Length,objFileInfo.Length.ToString());
Response.ContentType =application / octet-stream;
Response.WriteFile(filePath);
Response.End();
}
catch(例外情况)
{
}


}
}< / pre>


I have 2 gridviews on my page which I need to export the same in excel as
Gridview1 to Excel (Sheet 1)
Gridview1 to Excel (Sheet 2)

Please help me on this ...
Awaitng for positive response.

Regards,
Rohini G
Pune

解决方案

you can use EPPLUS (free) to create the excel file
(you can download it with nuget)

you can make a generic method to retrieve the datasource
and use it both for grid generation and excel generation

OR

you can declare a ExcelPackage (the epplus excel file) and empty+fill every time you fill the grids
so your "export" button will only put a full file on the response.

Example :
http://epplus.codeplex.com/wikipage?title=WebapplicationExample[^]


What is the problem in that?
Single Gridview : Export Gridview Data to Excel in ASP.NET[^]

Multiple Gridview : MULTIPLE GRIDVIEW INTO MULTIPLE WORKSHEET[^]

     --Amy


CLient Side :
----------------------------------------

<pre lang="xml">&lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;
   &lt;div&gt;
   &lt;table&gt;
       &lt;tr&gt;
           &lt;td&gt;
               &lt;asp:GridView ID=&quot;gdvreport1&quot; runat=&quot;server&quot;&gt;
               &lt;/asp:GridView&gt;
           &lt;/td&gt;
       &lt;/tr&gt;
       &lt;br /&gt;&lt;br /&gt;
       &lt;tr&gt;
           &lt;td&gt;
               &lt;asp:GridView ID=&quot;grvreport2&quot; runat=&quot;server&quot;&gt;
               &lt;/asp:GridView&gt;
           &lt;/td&gt;
       &lt;/tr&gt;
       &lt;tr&gt;
           &lt;td&gt;
               &lt;asp:Button ID=&quot;btnget&quot; runat=&quot;server&quot; Text=&quot;GetData&quot; OnClick=&quot;btnget_Click&quot; /&gt;
           &lt;/td&gt;
           &lt;td&gt;
               &lt;asp:Button ID=&quot;btnexport&quot; runat=&quot;server&quot; Text=&quot;Export&quot; OnClick=&quot;btnexport_Click&quot; /&gt;
           &lt;/td&gt;
       &lt;/tr&gt;
   &lt;/table&gt;
   &lt;/div&gt;
   &lt;/form&gt;</pre>




Server Side :
-------------------------------------------

<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MDIndia.ClassLibrary.ApplicationSupport;
using System.Data;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.IO;
using System.Text;
using System.Web.UI.HtmlControls;
 



public partial class NewTwo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnget_Click(object sender, EventArgs e)
    {
        try
        {


        }
        catch (Exception)
        {

            throw;
        }
    }
    private void GetconnectToAuth()
    {
        DBManager.CurrentDatabaseProvider = DatabaseProvider.MSSQLServer;
        DBManager.ConnectionString = "Data Source=MDICENTRAL\\AUTHORISATION;Initial Catalog=PIMS;User ID=mdindia1;Password=md!nd!@@123";
    }
    protected void btnexport_Click(object sender, EventArgs e)
    {

        GetconnectToAuth();
        string query1 = "Select ID,ICName from ICMaster";
        System.Data.DataTable dt = new System.Data.DataTable();
        dt = DBManager.SelectDataTable(query1);
        System.Data.DataTable dt2 = new System.Data.DataTable();
        query1 = "Select LabID,LabName from LabMaster";
        dt2 = DBManager.SelectDataTable(query1);
        dt2.TableName = "B";
        DataSet dataset = new DataSet();
        dataset.Tables.Add(dt.Copy());
        dataset.Tables.Add(dt2.Copy());


        Excel.Application excel = new Excel.Application();

        var workbook = (Excel._Workbook)(excel.Workbooks.Add(Missing.Value));

        for (var i = 0; i &lt; dataset.Tables.Count; i++)
        {
            if (workbook.Sheets.Count &lt;= i)
            {
                workbook.Sheets.Add(Type.Missing, Type.Missing, Type.Missing,
                                    Type.Missing);
            }

            var currentSheet = (Excel._Worksheet)workbook.Sheets[i + 1];

            switch (Convert.ToInt32(i))
            {
                case 0:
                    currentSheet.Name = "Projects";
                    break;
                case 1:
                    currentSheet.Name = "Employees";
                    break;


            }

            for (var j = 0; j &lt; dataset.Tables[i].Columns.Count; j++)
            {
                currentSheet.Cells[1, j + 1] = dataset.Tables[i].Columns[j].ToString();
            }

            for (var y = 0; y &lt; dataset.Tables[i].Rows.Count; y++)
            {
                for (var x = 0; x &lt; dataset.Tables[i].Rows[y].ItemArray.Count(); x++)
                {
                    currentSheet.Cells[y + 2, x + 1] = dataset.Tables[i].Rows[y].ItemArray[x];
                }
            }
        }
     
        workbook.SaveAs(Server.MapPath("Test.xlsx"), Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        workbook.Close(true, Type.Missing, Type.Missing);

        excel.Quit();

        var filePath = Server.MapPath("Test.xlsx");
  FileInfo targetFile = new System.IO.FileInfo(filePath);
 try
 {
 FileInfo objFileInfo = new FileInfo(filePath);
 Response.Clear();
 Response.Cache.SetCacheability(System.Web.HttpCacheability.Private);
 Response.AddHeader("Content-Disposition", ("attachment; filename=" + objFileInfo.Name));
 Response.AddHeader("Content-Length", objFileInfo.Length.ToString());
 Response.ContentType = "application/octet-stream";
 Response.WriteFile(filePath);
 Response.End();
 }
 catch (Exception ex)
 {
 }


    }
}</pre>


这篇关于如何在Asp .net(C#)中的Excel分隔表中导出多个Gridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆