Hi rhino000,
I have created sample code which fullfill your requirement.
HTML
<div>
<div>
<style type="text/css">
body
{
font-family: Arial;
font-size: 10pt;
}
table
{
border: 1px solid #ccc;
}
table th
{
background-color: #F7F7F7;
color: #333;
font-weight: bold;
}
table th, table td
{
padding: 5px;
border-color: #ccc;
}
</style>
</div>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" />
<br />
<asp:Label ID="Label1" runat="server" Text="Has Header ?"></asp:Label>
<asp:RadioButtonList ID="rbHDR" runat="server">
<asp:ListItem Text="Yes" Value="Yes" Selected="True"></asp:ListItem>
<asp:ListItem Text="No" Value="No"></asp:ListItem>
</asp:RadioButtonList>
<b>
<asp:Label ID="lblEsc" runat="server" Visible="false" Text="Excel Column Name"></asp:Label></b>
<asp:CheckBoxList ID="cckk" runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="cckk_SelectedIndexChanged"
AutoPostBack="true">
</asp:CheckBoxList>
.<br />
<asp:GridView ID="gridview1" PageSize="10" AllowPaging="true" AutoGenerateColumns="true"
runat="server">
</asp:GridView>
<br />
<asp:GridView ID="grdBindExcel" runat="server" PageSize="10" AllowPaging="true" OnPageIndexChanging="grdBindExcel_PageIndexChanging"
OnRowDataBound="grdBindExcel_RowDataBound" />
</div>
</div>
C#
List<SelectListItem> items = new List<SelectListItem>();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetData();
}
}
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, rbHDR.SelectedItem.Text);
}
}
private void Import_To_Grid(string FilePath, string Extension, string isHDR)
{
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, isHDR);
OleDbConnection connExcel = new OleDbConnection(conStr);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
DataTable dt = new DataTable();
DataTable dt1 = new DataTable();
cmdExcel.Connection = connExcel;
//Get the name of First Sheet
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);
//Bind Data to GridView
ViewState["Data"] = dt;
GetData();
connExcel.Close();
PopulateColumnName();
}
private void GetData()
{
DataTable dt = new DataTable();
dt = (DataTable)ViewState["Data"];
grdBindExcel.DataSource = dt;
grdBindExcel.DataBind();
}
protected void grdBindExcel_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
string FileName = grdBindExcel.Caption;
string Extension = Path.GetExtension(FileName);
string FilePath = Server.MapPath(FolderPath + FileName);
Import_To_Grid(FilePath, Extension, rbHDR.SelectedItem.Text);
grdBindExcel.PageIndex = e.NewPageIndex;
grdBindExcel.DataBind();
}
protected void cckk_SelectedIndexChanged(object sender, EventArgs e)
{
List<string> columnName = new List<string>();
string val = string.Empty;
foreach (ListItem it in cckk.Items)
{
if (it.Selected)
{
columnName.Add(it.Text);
}
}
GetsortingData(columnName);
}
private void GetsortingData(List<string> columnName)
{
DataTable dtsorting = new DataTable();
dtsorting = (DataTable)ViewState["Data"];
DataTable dummaydt = new DataTable();
if (columnName.Count > 0)
{
dummaydt = dtsorting.DefaultView.ToTable(false, columnName.ToArray());
gridview1.DataSource = dummaydt;
gridview1.DataBind();
}
else
{
gridview1.DataSource = null;
gridview1.DataBind();
}
}
protected void grdBindExcel_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
items.Add(new SelectListItem
{
Text = e.Row.Cells[i].Text,
Value = i
});
}
}
}
private void PopulateColumnName()
{
cckk.DataSource = items;
cckk.DataTextField = "Text";
cckk.DataValueField = "Value";
cckk.DataBind();
}
public class SelectListItem
{
public string Text { get; set; }
public int Value { get; set; }
}
Screenshot
