手把手教你如何擴展GridView之自帶Excel和Word導出
最新重構源碼下載:打造0代碼全自動GridView-天具神力
在web應用程序中,我們是不是很發愁打印問題,您是不是有過為了打印寫Activex的經歷,我們有沒有想過,Word和Excel的打印功能能被我們利用起來呢?只要我們將我們將數據導出到Excel或者Word中,打印豈不是小case了么。下面就談談如何讓GridView自己支持導出Excel和Word 。
首先增加了兩個屬性,用于指示是否支持Excel導出和Word導出
//增加了一個設置是否顯示“導出Word”按鈕的屬性
/// <summary>
/// 排序提示信息
/// </summary>
[
Description("顯示導出到Word"),
Category("擴展"),
DefaultValue(true)
]
public virtual bool ShowExportWord
{
get
{
object obj2 = this.ViewState["ShowExportWord"];
if (obj2 != null)
{
return (bool)obj2;
}
return true;
}
set
{
bool aShowExportWord = this.ShowExportWord;
if (value != aShowExportWord)
{
this.ViewState["ShowExportWord"] = value;
if (base.Initialized)
{
base.RequiresDataBinding = true;
}
}
}
}
//增加了一個設置是否顯示“導出Excel”按鈕的屬性
[
Description("顯示導出到Excel"),
Category("擴展"),
DefaultValue(true)
]
public virtual bool ShowExportExcel
{
get
{
object obj2 = this.ViewState["ShowExportExcel"];
if (obj2 != null)
{
return (bool)obj2;
}
return true;
}
set
{
bool aShowExportExcel = this.ShowExportExcel;
if (value != aShowExportExcel)
{
this.ViewState["ShowExportExcel"] = value;
if (base.Initialized)
{
base.RequiresDataBinding = true;
}
}
}
}
聲明兩個LinkButton控件btnExportWord,btnExport,分別用于點擊導出Excel和點擊導出word,并在控件的OnInit事件中初始化兩個控件
聲明兩個LinkButton,并在控件的OnInit中初始化
將兩個LinkButton添加到GridView子控件中。
protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding) {
int res = base.CreateChildControls(dataSource, dataBinding);
try
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal); TableCell cell2 = new TableCell();
cell2.HorizontalAlign = HorizontalAlign.Right;
cell2.Wrap = false; if (this.ShowExportExcel == true)
{
l1 = new Literal();
l1.Text = " [";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnExport);
l1 = new Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
}

if (this.ShowExportWord == true)
{
l1 = new Literal();
l1.Text = " [";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnExportWord);
l1 = new Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
} r.Cells.Add(cell2);
this.Controls[0].Controls.AddAt(0, row);
}
catch
{
}
}
return res;
}
在導出的時候,我們希望一些列不被導出,如修改,刪除這樣的列,因此我們添加了這樣的一個屬性
用于指定不被導出列,列名之間用,隔開
在導出的時候,原來的GridView列表中會有一些LinkButton或者DropDownList控件,導出的時候,我們也希望將其換成純文本,用下面這個函數可以完成這個目的
用于將GridView中的LinkButton和DropDownList轉換成文本的方法
下面是處理ItemCommand,將GridView導出的代碼
處理OnRowCommand事件,將GridView數據導出到Excel和Word
使用的時候,只要指定ShowExportExcel=True,ShowExportWord=True就自動出現導出Word和導出Excel的按鈕了,點擊自動會將GridView中的數據導出到Word或者Excel中了,如果原GridView是多頁的,那也會自動將全部數據(而不是當前頁的數據)導出,而且會剔除原來數據中的一些超級鏈接。使用起來相當簡單,效果頁非常好。
上篇文章地址:
手把手教你如何擴展GridView之自帶分頁
手把手教你如何擴展GridView之自帶CheckBox
手把手教你如何擴展GridView之自動排序篇
在web應用程序中,我們是不是很發愁打印問題,您是不是有過為了打印寫Activex的經歷,我們有沒有想過,Word和Excel的打印功能能被我們利用起來呢?只要我們將我們將數據導出到Excel或者Word中,打印豈不是小case了么。下面就談談如何讓GridView自己支持導出Excel和Word 。
首先增加了兩個屬性,用于指示是否支持Excel導出和Word導出
//增加了一個設置是否顯示“導出Word”按鈕的屬性
/// <summary>
/// 排序提示信息
/// </summary>
[
Description("顯示導出到Word"),
Category("擴展"),
DefaultValue(true)
]
public virtual bool ShowExportWord
{
get
{
object obj2 = this.ViewState["ShowExportWord"];
if (obj2 != null)
{
return (bool)obj2;
}
return true;
}
set
{
bool aShowExportWord = this.ShowExportWord;
if (value != aShowExportWord)
{
this.ViewState["ShowExportWord"] = value;
if (base.Initialized)
{
base.RequiresDataBinding = true;
}
}
}
}
//增加了一個設置是否顯示“導出Excel”按鈕的屬性
[
Description("顯示導出到Excel"),
Category("擴展"),
DefaultValue(true)
]
public virtual bool ShowExportExcel
{
get
{
object obj2 = this.ViewState["ShowExportExcel"];
if (obj2 != null)
{
return (bool)obj2;
}
return true;
}
set
{
bool aShowExportExcel = this.ShowExportExcel;
if (value != aShowExportExcel)
{
this.ViewState["ShowExportExcel"] = value;
if (base.Initialized)
{
base.RequiresDataBinding = true;
}
}
}
}將兩個LinkButton添加到GridView子控件中。
protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding) {
int res = base.CreateChildControls(dataSource, dataBinding);
try
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal); TableCell cell2 = new TableCell();
cell2.HorizontalAlign = HorizontalAlign.Right;
cell2.Wrap = false; if (this.ShowExportExcel == true)
{
l1 = new Literal();
l1.Text = " [";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnExport);
l1 = new Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
}
if (this.ShowExportWord == true)
{
l1 = new Literal();
l1.Text = " [";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnExportWord);
l1 = new Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
} r.Cells.Add(cell2);
this.Controls[0].Controls.AddAt(0, row);
}
catch
{
}
}
return res;
}使用的時候,只要指定ShowExportExcel=True,ShowExportWord=True就自動出現導出Word和導出Excel的按鈕了,點擊自動會將GridView中的數據導出到Word或者Excel中了,如果原GridView是多頁的,那也會自動將全部數據(而不是當前頁的數據)導出,而且會剔除原來數據中的一些超級鏈接。使用起來相當簡單,效果頁非常好。
上篇文章地址:
手把手教你如何擴展GridView之自帶分頁
手把手教你如何擴展GridView之自帶CheckBox
手把手教你如何擴展GridView之自動排序篇
作者:jillzhang
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


浙公網安備 33010602011771號