实现功能:在页面中添加一个按钮,按钮按下将页面的HTML存入xls文件中,也就是保存成Excel文件。
代码:
private void Button_Click(object sender, System.EventArgs e)
{
string sFileName = ".\\aaa.xls";
StringWriter oStringWriter = new StringWriter();
HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
this.RenderControl(oHtmlTextWriter);
if (!File.Exists(sFileName))
{
FileStream fileXLS = File.Create(sFileName);
StreamWriter sw = new StreamWriter(fileXLS);
sw.Write(oStringWriter.ToString());
sw.Flush();
sw.Close();
}
oStringWriter.Close();
oHtmlTextWriter.Close();}出现错误:
当执行到 this.RenderControl(oHtmlTextWriter);就提示“一页只能有一个服务器端 Form 标记。”
于是我在Form下添加一个Panel控件,将this.RenderControl(oHtmlTextWriter);改为:this.Panel1.RenderControl(oHtmlTextWriter); 运行没问题。但当页面中加入Textbox控件,就报“textbox必须放在具有 runat=server 的窗体标记内”,所有的TextBox控件都是runat=server的,实在是找不到原因了,请高手给看看。
代码:
private void Button_Click(object sender, System.EventArgs e)
{
string sFileName = ".\\aaa.xls";
StringWriter oStringWriter = new StringWriter();
HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
this.RenderControl(oHtmlTextWriter);
if (!File.Exists(sFileName))
{
FileStream fileXLS = File.Create(sFileName);
StreamWriter sw = new StreamWriter(fileXLS);
sw.Write(oStringWriter.ToString());
sw.Flush();
sw.Close();
}
oStringWriter.Close();
oHtmlTextWriter.Close();}出现错误:
当执行到 this.RenderControl(oHtmlTextWriter);就提示“一页只能有一个服务器端 Form 标记。”
于是我在Form下添加一个Panel控件,将this.RenderControl(oHtmlTextWriter);改为:this.Panel1.RenderControl(oHtmlTextWriter); 运行没问题。但当页面中加入Textbox控件,就报“textbox必须放在具有 runat=server 的窗体标记内”,所有的TextBox控件都是runat=server的,实在是找不到原因了,请高手给看看。
解决方案 »
- 请教正则匹配问题
- repeater中linkButton 点击后变色
- 如何获取伪静态网页的真实地址?
- 如何在asp.net中实现asp自定义类的Class_Terminate
- 高分求救DataSet问题
- DataSet为什么不能在页面回传后,不能保持原先的数据?
- 求两个简单正则表达式,马上给分!
- 工程不能建立问题?
- 如何在数据库中新建一个数据表,并设置主键和各字段的属性?
- Access数据库只能读,不能写,为何?>:(
- 简单问题,asp.net中DATAGRID的列名的背景颜色怎么设置?
- 急问:程序中已经建立了一个SQLSERVER连接,现在想在不新建连接的情况下打开同一个数据服务器上另一个库中的视图,有办法吗??
但是我觉得你应该把所有的服务器端控件都放在一个form标记内
要知道Render是页面周期里面比较靠后的一个过程,在Render之前你的按钮事件处理函数已经执行过了并不影响你的处理逻辑,所以建议你的这些过程放到Render里面处理(这也是重写控件改变Render的通用方法)。