Cấp bậc tác giả:

DOTNET

Import Excel Data into GridView & Export to Excel Sheet

Được viết bởi QuangIT ngày 23/09/2012 lúc 03:01 PM
Recently I worked on a site in which we were required to import excel in website and calculate internal fields then display in grid view and save data in database then export to excel File. That was really nice and I decided to put the code here.
  • 0
  • 10459
Tải tệp tin: Click ở đây

Import Excel Data into GridView & Export to Excel Sheet

Introduction

Recently I worked on a site in which we were required to import excel in website and calculate internal fields then display in grid view and save data in database then export to excel File.

That was really nice and I decided to put the code here.


1) Aspx Page 


<%@ Page Language="C#" AutoEventWireup="true"CodeFile="Export_excel_.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>Import Excel Data into GridView & Again Export to Excel Sheet</title>

    <style type="text/css">

        .hdr

        {

            background#ccc;

            font-familyArial;

            font-size12px;

            color#fff;

        }

        .ftr

        {

            background#000;

            color#fff;

            font-familyArial;

            font-size12px;

            color#fff;

        }

        .hdr1

        {

            background#FF0000;

            font-familyArial;

            font-size12px;

            font-weightbold;

            color#fff;

        }

        .ftr1

        {

            background#000;

            color#fff;

            font-familyArial;

            font-size12px;

            color#fff;

        }

        .Row

        {

            background#ccc;

            text-aligncenter;

            font-size12px;

            color#000;

        }

        .Alt

        {

            background##808000;

            text-aligncenter;

            font-size12px;

            color#000;

        }

    </style>

    <script language="javascript" type="text/javascript">

        function exportToExcel() {

            var oExcel = new ActiveXObject("Excel.Application");

            var oBook = oExcel.Workbooks.Add;

            var oSheet = oBook.Worksheets(1);

            var dt = document.getElementById('tbl')

            for (var y = 0; y < dt.rows.length; y++)

            // detailsTable is the table where the content to be exported is

            {

                for (var x = 0; x < dt.rows(y).cells.length; x++)

                {

                    oSheet.Cells(y + 1, x + 1) = dt.rows(y).cells(x).innerText;

                }

            }

            oExcel.Visible = true;

            oExcel.UserControl = true;

        }

    </script>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <table cellpadding="10" cellspacing="10" style="font-family: Arial; font-size: 12px;

            border: solid 1px #ccc;" border="1" align="center">

            <tr>

                <td align="center">

                    <asp:FileUpload ID="FileUpload1" runat="server" />

                </td>

                <td>

                    <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click"/>

                </td>

            </tr>

            <tr>

                <td align="center" colspan="2">

                    <asp:GridView ID="GridView1" runat="server" AllowPaging="false"OnPageIndexChanging="PageIndexChanging">

                        <HeaderStyle CssClass="hdr" />

                        <FooterStyle CssClass="ftr" />

                    </asp:GridView>

                </td>

            </tr>

            <tr>

                <td align="center" colspan="2">

                    <asp:GridView ID="GridView2" runat="server" AllowPaging="false">

                        <HeaderStyle CssClass="hdr1" />

                        <RowStyle CssClass="Row" />

                        <AlternatingRowStyle CssClass="Alt" />

                    </asp:GridView>

                </td>

            </tr>

            <tr>

                <td align="center" colspan="2">

                    <asp:Button ID="Save_ExporttoExcel" runat="server" Text="Save to DB & Export to Excel"

                        OnClientClick="exportToExcel()" OnClick="Save_ExporttoExcel_Click" />

                </td>

            </tr>

            <tr>

                <td colspan="2" align="center">

                    <asp:Label ID="lblError" runat="server" Text="Label"></asp:Label>

                </td>

            </tr>

        </table>

    </div>

    </form>

</body>

</html>


2) .Cs Page 


using System;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data;

using System.Data.OleDb;

using System.Data.SqlClient;

using System.IO;

using System.Configuration;


public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

       lblError.Visible = false;

    }

    // Upload excel files.

    protected void btnUpload_Click(object sender, EventArgs e)

    {

        if (FileUpload1.HasFile)

        {

            string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);

            string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);

            string FolderPath = ConfigurationManager.AppSettings["FolderPath"];

            string FilePath = Server.MapPath(FolderPath + FileName);

            FileUpload1.SaveAs(FilePath);

            Import_To_Grid(FilePath, Extension);

        }

    }

    // Bind with Grid

    private void Import_To_Grid(string FilePath, string Extension)

    {

        string conStr = "";

        switch (Extension)

        {

            case ".xls"//Excel 97-03

                conStr =ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;

                break;

            case ".xlsx"//Excel 07

                conStr =ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;

                break;

        }

        conStr = String.Format(conStr, FilePath, 1);

        OleDbConnection connExcel = new OleDbConnection(conStr);

        OleDbCommand cmdExcel = new OleDbCommand();

        OleDbDataAdapter oda = new OleDbDataAdapter();

        DataTable dt = new DataTable();

        cmdExcel.Connection = connExcel;

        connExcel.Open();

        DataTable dtExcelSchema;

        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();

        connExcel.Close();


        //Read Data from First Sheet

        connExcel.Open();

        cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";

        oda.SelectCommand = cmdExcel;

        oda.Fill(dt);

        connExcel.Close();

        GridView1.DataSource = dt;

        GridView1.DataBind();


        // Creat Temproary table

        DataTable dttable_data = new DataTable();

        dttable_data = dt; //Return Table consisting data


        //Create Tempory Table

        DataTable dtTemp = new DataTable();


        // Creating Header Row

        dtTemp.Columns.Add(" S. No.");

        dtTemp.Columns.Add(" Student Name ");

        dtTemp.Columns.Add(" Roll No ");

        dtTemp.Columns.Add(" Total Marks ");

        dtTemp.Columns.Add(" Percentage");


        int sum;

        DataRow drAddItem;

        for (int i = 0; i < dttable_data.Rows.Count; i++)

        {

            drAddItem = dtTemp.NewRow();

            drAddItem[0] = dttable_data.Rows[i]["S# No#"].ToString();

            drAddItem[1] = dttable_data.Rows[i]["Student Name"].ToString();//Student Name

            drAddItem[2] = dttable_data.Rows[i]["Roll No#"].ToString();//Roll No


            //Sum

            sum = (int.Parse(dttable_data.Rows[i]["Hindi"].ToString()) +int.Parse(dttable_data.Rows[i]["English"].ToString()) + int.Parse(dttable_data.Rows[i]["Maths"].ToString()) + int.Parse(dttable_data.Rows[i]["Physics"].ToString()));

            drAddItem[3] = sum.ToString();


            //%age

            int prcnt = (sum*100/800);

            drAddItem[4] = prcnt.ToString();

            dtTemp.Rows.Add(drAddItem);

        }


        //Bind Data with Grid View

        GridView2.DataSource = dtTemp;

        GridView2.DataBind();

    }

    // Page Index Changing

    protected void PageIndexChanging(object sender, GridViewPageEventArgs e)

    {

        string FolderPath = ConfigurationManager.AppSettings["FolderPath"];

        string FileName = GridView1.Caption;

        string Extension = Path.GetExtension(FileName);

        string FilePath = Server.MapPath(FolderPath + FileName);

        Import_To_Grid(FilePath, Extension);

        GridView1.PageIndex = e.NewPageIndex;

        GridView1.DataBind();

    }


    // Write in Excel Sheet

    private void creatExcel()

    {

        if (Int32.Parse(GridView2.Rows.Count.ToString()) < 65536)

        {

            GridView2.AllowPaging = true;

            //grvProdReport.DataBind()

            StringWriter tw = new StringWriter();

            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

            HtmlForm frm = new HtmlForm();

            string strTmpTime = (System.DateTime.Today).ToString();

            if (strTmpTime.IndexOf("/") != -1)

            {

                strTmpTime = strTmpTime.Replace("/""-").ToString().Trim();

            }

            if (strTmpTime.IndexOf(":") != -1)

            {

                strTmpTime = strTmpTime.Replace(":""-").ToString().Trim();

            }

            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

            Response.AddHeader("content-disposition""attachment;filename=sheet.xls");

            Response.Charset = "UTF-8";

            EnableViewState = false;

            Controls.Add(frm);

            frm.Controls.Add(GridView2);

            frm.RenderControl(hw);

            hw.WriteLine("<b> <u> <font-size:'5'> Student Report </font> </u> </b>");

            Response.Write(tw.ToString());

            Response.End();

        }

        else

        {

            lblError.Visible = true;

            lblError.Text = "Export to Excel not possible";

        }

    }


    // insert value in database

    private void inst_data()

    {

        int i;

        string s = ConfigurationManager.ConnectionStrings["test_"].ConnectionString;

        SqlConnection con = new SqlConnection(s);

        for (i = 0; i <= GridView1.Rows.Count - 1; i++)

        {

            string query = "insert into tbl_studentsummary values ('" + GridView2.Rows[i].Cells[0].Text + "','" + GridView2.Rows[i].Cells[1].Text.ToString() + "','" +  GridView2.Rows[i].Cells[2].Text  "','"+  GridView2.Rows[i].Cells[3].Text  "','" +  GridView2.Rows[i].Cells[4].Text + "')";

            SqlCommand cmd = new SqlCommand(query,con);

            con.Open();   

            cmd.ExecuteNonQuery();

            con.Close();

            lblError.Visible = true;

            lblError.Text = "Sucessfull";

        }

    }

    protected void Save_ExporttoExcel_Click(object sender, EventArgs e)

    {

         inst_data(); // insert data in database.

         creatExcel(); // Creat Excel  File

    }

}


3) web.config


<connectionStrings>

    <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/>

    <add name="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/>

    <add name="test_" connectionString="Data Source=XCEEDSTUDIO;Initial Catalog=test_;Persist Security Info=True;User ID=sa;Password=12345"/>

</connectionStrings>



Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML