一键导出Word和Excel文件的简单服务器控件

Posted on 2007-05-16 15:48  ant-boss  阅读(269)  评论(0)    收藏  举报

出于项目的需求,写了这样一个控件,使用起来很简单,只需要3句代码:

    exportExcel.FileType = TSCRMLiteWeb.SC.ExportFileType.Excel;
    exportExcel.ExportFileName = "currencyList";
    exportExcel.TargetControlID = "currencyContianer.gridCurrencyList";

需要说明的只有几点:

1.由于项目中所有需要导出内容的控件都是DataGrid,因此只针对对此控件的测试,满足需求先,其它就没有测试过了:)

2.属性ExportFileName不要扩展名,FileType属性指定以后,控件自身就会得到对应的扩展名了

3.如要绑定到GridView需要在页面的后台代码中加:
public override void VerifyRenderingInServerForm(Control control)
    {
    }
否则会报:
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内.错误

4.最关键的地方就是TargetControlID,这是需要导出内容的服务器控件的“路径“,通常是DataGrid的ID值,如果你的DataGrid就直接在Page下面,那么TargetControlID的值就直接设为DataGrid的ID,如果DataGrid父亲控件不是Page,那么一直追朔到Page下的一级控件,比如上面的例子,currencyContainer就是一个Page下面的控件,gridCurrencyList的父亲控件是currencyContainer,他们之间用点号分开,看过代码后你就会知道是为什么了,就这些。这里是所有的代码:

ps:更新了一下代码,另外如果DataGrid中包含类似LinkButton这样的控件,绑定值的时候应该使用

<asp:linkbutton Text='"<%#databinder.eval(container,“columnname“)%>"'></asp:linkbutton>

,而不要使用

<asp:linkbutton><%#databinder.eval(container,“columnname“)%></asp:linkbutton>

这样的形式,因为这样Text将不会被倒入Excel中