首页 > 代码库 > 利用html模板生成Word文件(服务器端不需要安装Word)

利用html模板生成Word文件(服务器端不需要安装Word)

                  利用html模板生成Word文件(服务器端不需要安装Word)

  由于管理的原因,不能在服务器上安装Office相关组件,所以只能采用客户端读取Html模板,后台对模板中标记的字段数据替换并返回给客户端的方法来实现,经过测试这种方法也是一种不错的选择!

      首先自己写一个html网页模板,代码如下:

技术分享
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <title>投注站申请表</title>    <style type="text/css">        table {            border-collapse: collapse;        }        table tr td {            border: 1px solid black;            font-size:17px;        }    </style></head><body>    <table cellpadding="1" cellspacing="1" style="margin:10px auto;">        <tr>            <td colspan="4" style="font-weight:bold;text-align:center;">                投注站申请表            </td>        </tr>        <tr>            <td style="width:80px;">                申请人            </td>            <td style="width:220px;">                {ProposerName}            </td>            <td style="width:150px;">                电话号码            </td>            <td style="width:130px;">                {PhoneNo}            </td>        </tr>        <tr>            <td style="width:80px;">                申请地址            </td>            <td style="width:220px;">                {ProposerAddress}            </td>            <td style="width:150px;">                申请房屋面积            </td>            <td style="width:130px;">                {HouseArea}            </td>        </tr>        <tr>            <td style="width:80px;">                房屋类型            </td>            <td style="width:220px;">                {HouseType}            </td>            <td style="width:150px;">                房屋性质            </td>            <td style="width:130px;">                {HouseNature}            </td>        </tr>        <tr>            <td style="width:80px;">                申请日期            </td>            <td colspan="3">                {ApplyDate}            </td>        </tr>    </table></body></html>
html模板代码

  

      后台读取该模板并替换返回给客户端即可,代码如下:

技术分享
#region 根据申请单ID号和模板生成word下载文件    public void DownLoadWord(string id)    {        if (string.IsNullOrEmpty(id))        {            id = "0";        }        string sql = "SELECT ID,ProposerName,PhoneNo,ProposerAddress,HouseArea,HouseType,HouseNature,ApplyDate" +                   " from BettingStationApply where ID=@id ";        SqlParameter[] parm = new SqlParameter[] { new SqlParameter("@id", int.Parse(id)) };        //根据ID号取得当前申请单的详细信息        DataTable dt = DBHelper.GetDataSet(sql, parm);        if (dt.Rows.Count > 0)        {            DataRow dr = dt.Rows[0];            try            {                //模板路径                string tempName = Server.MapPath(@"/BettingStation/ApplyTemplete.html");                string fileContent=File.ReadAllText(tempName, Encoding.UTF8);                //替换html模板中相关内容                if (dr["ProposerName"] != DBNull.Value)                {                    fileContent=fileContent.Replace("{ProposerName}", dr["ProposerName"].ToString());                }                else                {                    fileContent = fileContent.Replace("{ProposerName}", "");                }                if (dr["PhoneNo"] != DBNull.Value)                {                    fileContent = fileContent.Replace("{PhoneNo}", dr["PhoneNo"].ToString());                }                else                {                    fileContent = fileContent.Replace("{PhoneNo}", "");                }                if (dr["ProposerAddress"] != DBNull.Value)                {                    fileContent = fileContent.Replace("{ProposerAddress}", dr["ProposerAddress"].ToString());                }                else                {                    fileContent = fileContent.Replace("{ProposerAddress}", "");                }                if (dr["HouseArea"] != DBNull.Value)                {                    fileContent = fileContent.Replace("{HouseArea}", dr["HouseArea"].ToString());                }                else                {                    fileContent = fileContent.Replace("{HouseArea}", "");                }                if (dr["HouseType"] != DBNull.Value)                {                    fileContent = fileContent.Replace("{HouseType}", dr["HouseType"].ToString());                }                else                {                    fileContent = fileContent.Replace("{HouseType}", "");                }                if (dr["HouseNature"] != DBNull.Value)                {                    fileContent = fileContent.Replace("{HouseNature}", dr["HouseNature"].ToString());                }                else                {                    fileContent = fileContent.Replace("{HouseNature}", "");                }                if (dr["ApplyDate"] != DBNull.Value)                {                    fileContent = fileContent.Replace("{ApplyDate}", Convert.ToDateTime(dr["ApplyDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));                }                else                {                    fileContent = fileContent.Replace("{ApplyDate}", "");                }                //替换掉换行                fileContent = fileContent.Replace("\r", "").Replace("\n","").Replace("^p","") ;                //文件名字                string fileName = dr["ProposerName"].ToString() + "_投注站申请表.doc";                HttpContext.Current.Response.Clear();                HttpContext.Current.Response.Charset = "GB2312";                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");                // 添加头信息,为"文件下载/另存为"对话框指定默认文件名                 HttpContext.Current.Response.AddHeader("Content-Disposition",                    "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));                // 指定返回的是一个不能被客户端读取的流,必须被下载                 HttpContext.Current.Response.ContentType = "application/ms-word";                // 把文件流发送到客户端                 HttpContext.Current.Response.Write(fileContent);                // 停止页面的执行                 HttpContext.Current.Response.End();            }            catch (Exception ex)            {                //writeLog.WriteErrorLog("根据模板生成Word文件出错!错误信息:" + ex.Message);                //Message.show("根据模板生成Word文件出错!错误信息:" + ex.Message);            }        }        else        {            //writeLog.WriteErrorLog("id=" + id + "没有查找到任何数据!");            //Message.show("id=" + id + "没有查找到任何数据!");        }    }    #endregion
View Code

  

     到此,根据模板导出Word功能就完成了,该方法不需要服务器端安装Office组件,即可实现Word或者Excel的相关导出功能。

利用html模板生成Word文件(服务器端不需要安装Word)