服务器之家

服务器之家 > 正文

ASP.NET利用MD.DLL转EXCEL具体实现

时间:2019-11-07 12:16     来源/作者:asp.net教程网

前提: 
引入MD.dll 文件; 
1、建立无CS文件的DownExcel.aspx 文件 

复制代码代码如下:


<%@ Page Language="C#" %> 
<%@ import Namespace="System.Data" %> 
<%@ import Namespace="System.Data.SqlClient" %> 
<%@ import Namespace="MD" %> 
<script runat="server"> 
string tableName = ""; 
string procName =""; 
private string selectSql( string selstr ) 

string sp =selstr + " WHERE"; 
int iwhere; 
iwhere=sp.IndexOf("WHERE"); 
iwhere=iwhere+7; 
string sall = Server.UrlDecode(Request.QueryString.ToString()); 
string[] sparams; 
sparams=sall.Split('&'); 
int i=0; 
if (sparams.Length>1){ 
while (i<sparams.Length){ 
if (!(sparams[i].StartsWith("table"))){ 
if ((sparams[i].StartsWith("str") )){ 
sp=sp+" and " + sparams[i].Replace("=","='").Substring(3) + "'"; 

if ((sparams[i].StartsWith("num") )) 

sp=sp+" and " + sparams[i].Substring(3) + ""; 


i++; 


if (sp.IndexOf("and") >0 ){ 
sp = (sp.Substring(0,sp.IndexOf("and")) + sp.Substring(sp.IndexOf("and")+3)); 

//sp=sp.Replace("=","='"); 
if (sp.Length<iwhere) { 
sp=sp.Substring(0,(iwhere-8)); 

return sp; 

private string selectProc( string selstr ) 

string sp =selstr + " "; 
string sall = Server.UrlDecode(Request.QueryString.ToString()); 
//Server.UrlDecode(Request.QueryString.ToString()); 
string[] sparams; 
sparams=sall.Split('&'); 
int i=0; 
if (sparams.Length>1) 

while (i<sparams.Length) 

if (!(sparams[i].StartsWith("procedure"))) 

if ((sparams[i].StartsWith("str") )) 

sp=sp + "'" + sparams[i].Substring( sparams[i].IndexOf("=")+1) + "',"; 

if ((sparams[i].StartsWith("num") )) 

sp=sp + sparams[i].Substring( sparams[i].IndexOf("=")+1) + ","; 


i++; 


if (sp.EndsWith(",")){ 
sp=sp.Substring(0, (sp.Length -1)); 

return sp; 

private void Page_Load(object sender, System.EventArgs e) 

// setup connection 
//Response.Write(selectSql("start test!")); 
string conn = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString; /// System.Configuration.ConfigurationSettings.AppSettings["connectionString"]; 
if (Request.QueryString["table"]== null && Request.QueryString["procedure"]==null) 

this.Response.Write("not supply correct parameters!"); 
this.Response.End(); 
return; 

DataSet ds = new DataSet(); 
ds.Locale = new System.Globalization.CultureInfo("zh-CN"); 
//OleDbDataAdapter adapter=new OleDbDataAdapter(); 
if (!(Request.QueryString["table"]== null ) ) 

/*string test1=selectSql(("SELECT * from " + Request.QueryString["table"])); 
this.Response.Write(test1); 
this.Response.End(); 
return;*/ 
tableName=Request.QueryString["table"]; 
MD.SqlHelper.FillDataset(conn,System.Data.CommandType.Text ,selectSql(("SELECT * from " + tableName)),ds,new string[] {"down"}); 

if (!(Request.QueryString["procedure"]== null ) ) 

/*string test2=selectProc(("exec " + Request.QueryString["procedure"])); 
this.Response.Write(test2); 
this.Response.End(); 
return;*/ 
procName=Request.QueryString["procedure"]; 
MD.SqlHelper.FillDataset(conn,System.Data.CommandType.Text ,selectProc(("exec " + procName)),ds,new string[] {"down"}); 

if (ds.Tables[0].Rows.Count==0){ 
this.Response.Write("条件不符,查询没有任何资料!"); 
return; 

string downRes=""; 
if (procName=="") 

downRes=tableName; 

else 

downRes=procName; 

//OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * from " + tableName, conn); 
//Response.Write(selectSql("SELECT * from " + tableName)); 
//return; 
// open the Database and get the results 
this.DataGridDown.DataSource=ds; 
this.DataGridDown.DataBind(); 
this.Response.Clear(); 
this.Response.Buffer =true; 
this.Response.Charset="utf-8"; 
this.Response.ContentType="application/ms-excel"; 
this.Response.AppendHeader("content-Disposition","attachment;filename="+downRes+".xls"); 
this.Response.ContentEncoding =System.Text.Encoding.GetEncoding("utf-8"); 
//Response.ContentEncoding = System.Text.Encoding.utf-8; 
this.EnableViewState =false; 
System.IO.StringWriter OStringWriter = new System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter OHtmlTextWriter = new System.Web.UI.HtmlTextWriter(OStringWriter); 
this.DataGridDown.RenderControl(OHtmlTextWriter); 
this.Response.Write(OStringWriter.ToString()); 
this.Response.End(); 
// if the action is update, well, we update our DB 

</script> 
<html> 
<head> 
<meta http-equiv="content-type" content="application/x-excel; charset=UTF-8"/> 
<!-- <meta http-equiv="Content-Type" content="application/x-msexcel; charset=iso-8859-1" /> --> 
</head> 
<body> 
<form runat="server"> 
<asp:DataGrid id="DataGridDown" style="Z-INDEX: 100; POSITION: absolute" runat="server" Height="373px" Width="674px" > 
</asp:DataGrid> 
<!-- Insert content here --> 
</form> 
</body> 
</html> 


2、调用方法: 
http://localhost:13042/report/downexcel.aspx?procedure=P_PP_SPC_FindCount&strWorkCenterNum=0&strStatus=全部&strPartno= 
注解: 
P_PP_SPC_FindCoun:存储过程 
WorkcenterNum:参数 
在每个参数前都要加上‘Str'表示该参数是字符串型 
所以参数要写成StrWorkcenterNum

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
返回顶部