利用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 [email protected] ";
        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

  

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

时间: 2024-12-15 17:43:18

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

使用word的xml模板生成.doc文件

一.编辑模板 替换地方以变量标记如"案件编号"可写成{caseNo} template.xml 二.准备数据 以HashMap封装数据,原理是替换模板中的变量 三.替换操作 选择输出位置:writePath WordUtil.printWordbyXMLWithOutputPath(templateFile, writePath, filename, dataMap); /** * 打印word文档(传入参数需要传入输出文件的保存路径的) * @param templateFile *

利用T4模板生成ASP.NET Core控制器的构造函数和参数

前言 在ASP.NET Core中引入了DI,并且通过构造函数注入参数,控制器中会大量使用DI注入各种的配置参数,如果配置注入的参数比较多,而且各个控制器需要的配置参数都基本一样的话,那么不断重复的复制黏贴代码提供相应的构造函数,效率低效也,因此使用T4模板生成控制器的构造函数 ,这也得益于C#对分部类(partial)的支持. T4模板生成控制器构造函数 图中CtrlTemplate.tt为模板文件,CtrlNames.txt为需要使用T4生成代码的控制器名称文件,CtrlTemplate.c

使用flying-saucer,利用HTML来生成PDF文件(裴东辉)

1.导入maven依赖 <flyingSaucer.version>9.1.0</flyingSaucer.version> <!-- flying-saucer --> <dependency>    <groupId>org.xhtmlrenderer</groupId>     <artifactId>flying-saucer-pdf</artifactId>     <version>${

java itextpdf使用HTML模板生成pdf文件,并设置table

我们这里是maven项目,导入相应jar包: <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <dependency> <groupId>com.itextpdf</groupId>

python 利用jinja2模板生成html

1 from jinja2 import Environment, FileSystemLoader 2 import json 3 4 5 def generate_html(data): 6 env = Environment(loader=FileSystemLoader('./')) # 加载模板 7 template = env.get_template('模板.html') 8 # template.stream(body).dump('result.html', 'utf-8')

Word文件翻译操作方法 如何进行word文件翻译

要将一份word文件进行翻译如何操作呢?电脑中打开一份word文件进行查看发现大多数的内容为英文,处理起来很不方便,这时候就可以将这个word文件进行翻译,针对这个操作下面小编就向大家介绍一遍. 1.我们可以在电脑上安装一款PDF转换器软件,下载的话点击进入到浏览器中搜索关键词"PDF转换工具". 2.双击运行PDF转换工具之后, 进入操作页面,在界面内选择"特色功能"栏目下面的"word翻译"功能. 3."word翻译"功能

itextsharp利用模板生成pdf文件笔记

iTextSharp是一款开源的PDF操作类库,使用它可以快速的创建PDF文件. 中文参考网站:http://hardrock.cnblogs.com/ http://pdfhome.hope.com.cn/Article.aspx?CID=bf51a5b6-78a5-4fa3-9310-16e04aee8c78&AID=f5fe52dd-8419-4baa-ab1c-ea3f26952132 英文参考网站:http://itext.ugent.be/library/ ·  技术文章(http:

根据模板生成html文件并下载

该模块用于相关内容导出功能,先读取模板文件,再替换模板中的内容,最后直接以流的形式提供下载.主要代码如下: String templateContent = ""; // 读取模板文件 FileInputStream fileinputstream = new FileInputStream(filePath); InputStreamReader isr = new InputStreamReader(fileinputstream, "utf-8"); Buff

Spring 中 AbstractExcelView 支持根据模板生成Excel文件. 通过设置 view 的 URL 属性指定模板的路径

 注意:1. 模板需放在 WEB-INF 目录下2. 指定模板路径时不需要添加扩展名, Spring将自动添加 .xls 到URL 属性中.3. 在指定URL前需先设置 view 的 ApplicationContext 1. 控制器配置 control-context.xml 1 <bean id="beanNameViewResolver" 2 class="org.springframework.web.servlet.view.BeanNameViewResol