在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之自动排序篇

