小编最近在跟项目,在项目中的历练也是学习到了很多,不知道大家是否曾注意到在很多项目中有模板下载的功能。自己做的ITOO的考评模板时,有很多导出导入的功能,一直算是一个功能的维护吧。只是简单看过,没有机会,感谢订餐系统,给了这次机会,也是自己发挥死不要脸精神,非要给人家做一个功能吧。
首先说要做模板的格式取决于什么?主要是在导入Excel的过程需要哪些内容,这些刚好成为制作模板的主要组成部分。关于这一部分有两种方式,一是让系统通过代码动态生成Excel模板,为用户提供下载;二是提前做好一个模板,然后在程序中写好该部分的代码,只需要读文件的路径,下载就行了。
先看代码,请大家判断我用的是方法几?
#region btnDown+下载批量导入模板+贾文静+2016年8月13日10:19:59
protected void btnDown_Click(object sender, EventArgs e)
{
//客户端保存的文件名
string fileName = "DownLoad.xlsx";
//服务上模板的路径
string filePath = Server.MapPath("DownLoad.xlsx");
//以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/vnd.ms-excel";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
#endregion
这次我采用的方法二,原因一是此模板格式固定,除非程序改动,否则该模板样式不会改变;二是这样会比动态生成模板效率高,还有一点,当时开发时间紧张,没有时间研究动态生成的过程,还是在于自己偷懒啊。代码非常简单,主要是读取机器上的Excel模板存放的路径。其实我采用的这种方式存在很大的弊端,但是该模板文件在意外环境下丢失,那么这个功能的实现基本作废,留下只能用户的无限抱怨。而方法一,就有很大的优势,动态生成,和文件是否丢失无关,在任何情况下都可以使用。因为做过机房收费系统中导出Excel的功能,其实静下心想,动态生成也就那么一会儿事啊。
【总结】
可能是项目的历练,这次尝试做订餐,觉得做些东西也不再想象中的那那么困难了。还是能感到非常高兴的。其实在实现这个过程中尝试了很多种方式,一直提示模板文件报错,可是当快放弃的时候,就神奇的成功了,或许这就做程序猿的乐趣吧。还有这个过程我觉会体会用户的感受了,因为当给我这个模块的时候让我来做,错误信息弹出的部分,只有导入功能,用户肯定会用这不方便的,所以多此一举,做个功能,希望可以真正提高用户的满意度。