(急)DataGrid导出为Excel (Anthem)

Cwst 2006-12-30 04:50:04
DataGrid1,Button1都是Anthem的。
页面只是闪一下,确没有导出?
知道的请赐教,谢谢!

private void Button1_Click(object sender, EventArgs e)
{
ExportOut();
}


[Anthem.Method]
public void ExportOut()
{
Response.Clear();
Response.Buffer= true;
Response.Charset="UTF-8";
Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/vnd.ms-excel";
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("EN-US",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
...全文
192 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChengKing 2006-12-31
  • 打赏
  • 举报
回复
http://blog.csdn.net/ChengKing/archive/2006/08/27/1128385.aspx
weiwei6054 2006-12-30
  • 打赏
  • 举报
回复
参见
http://www.cnblogs.com/weiweictgu/category/61245.html
Cwst 2006-12-30
  • 打赏
  • 举报
回复
@yangyupeng521(自家胖子)
那我的ExportOut()就没用了...
weiwei6054 2006-12-30
  • 打赏
  • 举报
回复
经典问题,参考
http://www.cnblogs.com/weiweictgu/category/61245.html
crosir_z 2006-12-30
  • 打赏
  • 举报
回复
如果你的DataGrid是规则的表格,可以参考下面的方法:
<script language="vbscript">

Sub Test2(str)
dim RangeStart,RangeEnd,arrRange
str = arrReplace(str,RangeStart,RangeEnd,arrRange)

if RangeStart>0 and RangeEnd>0 then
Set objExcel = CreateObject("Excel.Application")
Set objBook = objExcel.Workbooks.Add()
Set objSheet = objBook.Worksheets(1)

Set objRng = objSheet.Range("A" & 1 & ":" &getRange(RangeStart,RangeEnd))

objExcel.Visible = True
objRng.Value = arrRange


Set objBook = Nothing
Set objSheet = Nothing
Set objExcel = Nothing
else
exit sub
end if
End Sub

function arrReplace(str,byref Range1,byref Range2,byref arrRange)
Dim regEx,strTR,arrRangeTR
Set regEx = New RegExp
str = replace(str,vbcrlf,"")
str = replace(str," ","")
str = replace(str,"<br>","")


'使用正则表达式作大量替换
regEx.IgnoreCase = True ' 设置是否区分字符大小写。
regEx.Global = True ' 设置全局可用性。

regEx.Pattern="(<table)(.*?)(>)(.*?)(<\/table>)"
str = regEx.Replace(str,"$4")
regEx.Pattern="(<tbody)(.*?)(>)(.*?)(<\/tbody>)"
str = regEx.Replace(str,"$4")
regEx.Pattern = "(<tr)(.*?)(>)(.*?)(<)(\/tr>)"

'**********************************************
strTR=regEx.Replace(str,"$4|")
arrRangeTR = split(strTR,"|")
Range2=ubound(arrRangeTR)
'**********************************************
str = regEx.Replace(str,"$4")

regEx.Pattern = "(_)(<a)(.*?)(>)(.*?)(<)(\/a>)"
str = regEx.Replace(str,"$4")
strTR = regEx.Replace(strTR,"$4")

regEx.Pattern="(<td)(.*?)(>)(.*?)(<\/td>)"
str = regEx.Replace(str,"$4~")
strTR = regEx.Replace(strTR,"$4~")
'*****把所有的HTML标签去掉
regEx.Pattern="<(.*?)>(.*?)<\/(.*?)>"
'msgbox(str)
str = regEx.Replace(str,"$2")
strTR = regEx.Replace(strTR,"$2")
' msgbox(str)

'**********************************************
arrRange = split(str,"~")
arrRangeTR = split(strTR,"|")
Range2=ubound(arrRangeTR)
Range1=ubound(arrRange)
if Range1>0 and Range2>0 then
Range1 = cint(Range1/Range2)
else
Range1=0
Range2=0
arrReplace = str
Exit function
end if
'**********************************************
redim arrRange(Range2-1,Range1)

dim arrTemp,temp

for j=0 to Range2-1
temp = arrRangeTR(j)
arrTemp = split(temp,"~")
for i=lbound(arrTemp) to ubound(arrTemp)-1
if i<Range1 then
arrRange(j,i) = arrTemp(i)
'msgBox(arrRange(j,i) & j&i)
end if
next
next
arrReplace = str
end function
function getRange(Range1,Range2)
dim letter
if Range1<=26 then
'65 - 90 A--Z
letter = chr(65+Range1 -1 )
getRange = letter&Range2
else

end if
end function
</script>

然后在按钮的onclick中调用该方法
如:
<input name="button" type="button" id="Button_Excel" value="生成Excel" onclick="Test2(DataGrid_List.innerHTML)">
yangyupeng521 2006-12-30
  • 打赏
  • 举报
回复
不能在本页导出!!!
你必须将一个一模一样的Grid控件放到另外一个窗体上,然后点击导出按钮后,通过传参数给那个窗体,然后在弹出的窗体上绑定Grid,然后再执行你的按钮就可以了~~~
我以前也遇到过一个类似于你这样的问难,现在解决了!
Cwst 2006-12-30
  • 打赏
  • 举报
回复
但是调试ExportOut();有执行啊。
glacier111 2006-12-30
  • 打赏
  • 举报
回复
服务器事件不能走Ajax方法吧,用JS试试看,还有在Ajax方法中不能有服务器的控件和方法

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧