仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 390|回复: 9
打印 上一主题 下一主题

[学习教程] ASP编程:Asp.Net下导出/导进划定规矩的Excel(.xls)文...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:38:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般asp.net|excelDataTable中的数据导出Excel文件
///<summary>
///将DataTable中的数据导出到指定的Excel文件中
///</summary>
///<paramname="page">Web页面临象</param>
///<paramname="tab">包括被导出数据的DataTable工具</param>
///<paramname="FileName">Excel文件的称号</param>
publicstaticvoidExport(System.Web.UI.Pagepage,System.Data.DataTabletab,stringFileName)
{
System.Web.HttpResponsehttpResponse=page.Response;
System.Web.UI.WebControls.DataGriddataGrid=newSystem.Web.UI.WebControls.DataGrid();
dataGrid.DataSource=tab.DefaultView;
dataGrid.AllowPaging=false;
dataGrid.HeaderStyle.BackColor=System.Drawing.Color.Green;
dataGrid.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
dataGrid.HeaderStyle.Font.Bold=true;
dataGrid.DataBind();
httpResponse.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8));//filename="*.xls";
httpResponse.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
httpResponse.ContentType="application/ms-excel";
System.IO.StringWritertw=newSystem.IO.StringWriter();
System.Web.UI.HtmlTextWriterhw=newSystem.Web.UI.HtmlTextWriter(tw);
dataGrid.RenderControl(hw);

stringfilePath=page.Server.MapPath("..")+"Files"+FileName;
System.IO.StreamWritersw=System.IO.File.CreateText(filePath);
sw.Write(tw.ToString());
sw.Close();

DownFile(httpResponse,FileName,filePath);

httpResponse.End();
}
privatestaticboolDownFile(System.Web.HttpResponseResponse,stringfileName,stringfullPath)
{
try
{
Response.ContentType="application/octet-stream";

Response.AppendHeader("Content-Disposition","attachment;filename="+
HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)+";charset=GB2312");
System.IO.FileStreamfs=System.IO.File.OpenRead(fullPath);
longfLen=fs.Length;
intsize=102400;//每100K同时下载数据
byte[]readData=newbyte[size];//指定缓冲区的巨细
if(size>fLen)size=Convert.ToInt32(fLen);
longfPos=0;
boolisEnd=false;
while(!isEnd)
{
if((fPos+size)>fLen)
{
size=Convert.ToInt32(fLen-fPos);
readData=newbyte[size];
isEnd=true;
}
fs.Read(readData,0,size);//读进一个紧缩块
Response.BinaryWrite(readData);
fPos+=size;
}
fs.Close();
System.IO.File.Delete(fullPath);
returntrue;
}
catch
{
returnfalse;
}
}

将指定Excel文件中的数据转换成DataTable
///<summary>
///将指定Excel文件中的数据转换成DataTable工具,供给用程序进一步处置
///</summary>
///<paramname="filePath"></param>
///<returns></returns>
publicstaticSystem.Data.DataTableImport(stringfilePath)
{
System.Data.DataTablers=newSystem.Data.DataTable();
boolcanOpen=false;

OleDbConnectionconn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"DataSource="+filePath+";"+
"ExtendedProperties="Excel8.0;"");

try//实验数据毗连是不是可用
{
conn.Open();
conn.Close();
canOpen=true;
}
catch{}

if(canOpen)
{
try//假如数据毗连能够翻开则实验读进数据
{
OleDbCommandmyOleDbCommand=newOleDbCommand("SELECT*FROM[Sheet1$]",conn);
OleDbDataAdaptermyData=newOleDbDataAdapter(myOleDbCommand);
myData.Fill(rs);
conn.Close();
}
catch//假如数据毗连能够翻开可是读进数据失利,则从文件中提掏出事情表的称号,再读进数据
{
stringsheetName=GetSheetName(filePath);
if(sheetName.Length>0)
{
OleDbCommandmyOleDbCommand=newOleDbCommand("SELECT*FROM["+sheetName+"$]",conn);
OleDbDataAdaptermyData=newOleDbDataAdapter(myOleDbCommand);
myData.Fill(rs);
conn.Close();
}
}
}
else
{
System.IO.StreamReadertmpStream=File.OpenText(filePath);
stringtmpStr=tmpStream.ReadToEnd();
tmpStream.Close();
rs=GetDataTableFromString(tmpStr);
tmpStr=&qu</p>使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。
分手快乐 该用户已被删除
沙发
发表于 2015-1-18 17:52:59 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
小女巫 该用户已被删除
板凳
发表于 2015-1-22 19:16:39 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
精灵巫婆 该用户已被删除
地板
发表于 2015-1-25 20:22:00 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
山那边是海 该用户已被删除
5#
发表于 2015-2-3 20:08:23 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
金色的骷髅 该用户已被删除
6#
发表于 2015-2-9 04:40:15 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
活着的死人 该用户已被删除
7#
发表于 2015-2-26 22:49:02 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-8 18:22:23 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
变相怪杰 该用户已被删除
9#
发表于 2015-3-16 10:02:16 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
蒙在股里 该用户已被删除
10#
 楼主| 发表于 2015-3-22 22:10:25 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-6 17:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表