aspose.words for asp.net word模版-修改标签-合并单元格

来源:互联网 发布:住家保姆 知乎 编辑:程序博客网 时间:2024/04/29 22:58
public void ExportToWord(int iRecordID)
        {
            DataTable dtResult = dbo.Query("usp_get_Entity_FPBKSQ " + iRecordID + ",0");
            //取得报表模板文件路径
            string wordTemplatePath = HttpContext.Current.Server.MapPath("..//..//..//Instance//Plugin//Biz//template/bfjzsq.doc");
            //导出报表文件名
            string fileName = "西北化工销售公司困难人员帮扶救助申请表.doc";
            //导出文件路径
            string outPutFilePath = HttpContext.Current.Server.MapPath("..//..//..//Instance//Plugin//Biz//template//Temp/" + fileName);
            //创建word对象
            Aspose.Words.Document doc = null;   
            doc = new Aspose.Words.Document(wordTemplatePath);//打开word
            
            Aspose.Words.DocumentBuilder docBuild = new Aspose.Words.DocumentBuilder(doc);
            //获取table
            Aspose.Words.Tables.Table table =  (Aspose.Words.Tables.Table)doc.GetChild(NodeType.Table, 0, true);
            foreach (Aspose.Words.Bookmark mark in doc.Range.Bookmarks)
            {
                if (mark.Name == "姓名")
                    mark.Text = dtResult.Rows[0]["Name"].ToString();
                else if (mark.Name == "性别")
                    mark.Text = dtResult.Rows[0]["xb"].ToString();
                else if (mark.Name == "年龄")
                    mark.Text = dtResult.Rows[0]["nl"].ToString();
                else if (mark.Name == "联系电话")
                    mark.Text = dtResult.Rows[0]["LXDH"].ToString();
                else if (mark.Name == "政治面貌")
                    mark.Text = dtResult.Rows[0]["zzmm"].ToString();
                else if (mark.Name == "婚姻状况")
                    mark.Text = dtResult.Rows[0]["HYZK"].ToString();
                else if (mark.Name == "家庭详细住址")
                    mark.Text = dtResult.Rows[0]["JTDZ"].ToString();
                else if (mark.Name == "本人月收入")
                    mark.Text = dtResult.Rows[0]["YSR"].ToString();
                else if (mark.Name == "家庭人口数")
                    mark.Text = dtResult.Rows[0]["ZRS"].ToString();
                else if (mark.Name == "月总收入")
                    mark.Text = dtResult.Rows[0]["YZSR"].ToString();
                else if (mark.Name == "月人均生活费")
                    mark.Text = dtResult.Rows[0]["YRJSHF"].ToString();
                else if (mark.Name == "人员类别")
                    mark.Text = dtResult.Rows[0]["RYLB"].ToString();
                else if (mark.Name == "二级单位审核意见")
                    mark.Text = dtResult.Rows[0]["EJDWSHYJ"].ToString();
                else if (mark.Name == "公司工会审核意见")
                    mark.Text = dtResult.Rows[0]["GSGHSHYJ"].ToString();
                else if (mark.Name == "配偶姓名")
                    mark.Text = dtResult.Rows[0]["PONAME"].ToString();
                else if (mark.Name == "工作单位")
                    mark.Text = dtResult.Rows[0]["POGZDW"].ToString();
                else if (mark.Name == "月收入")
                    mark.Text = dtResult.Rows[0]["POYSR"].ToString();
                else if (mark.Name == "身份")
                    mark.Text = dtResult.Rows[0]["sf"].ToString();
                else if (mark.Name == "所属单位")
                    mark.Text = dtResult.Rows[0]["OrgName"].ToString();
                else if (mark.Name == "困难原因")
                    mark.Text = dtResult.Rows[0]["KNYY"].ToString();
                else if (mark.Name == "救助类型")
                    mark.Text = dtResult.Rows[0]["JZLX"].ToString();
                else if (mark.Name == "身份证号")
                    mark.Text = dtResult.Rows[0]["SFZH"].ToString();
            }
            
            
             using (DataTable dt = dbo.Query("usp_get_Entity_FPBKSQ " + iRecordID + ",1"))
             {
                 int i = 4;//第4行内容,被复制用
                 if (dt.Rows.Count > 0)
                 {
                     //设置单元格属性,合并单元格
                     table.Rows[4].Cells[0].CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.First;

                     for (int j = 0; j < dt.Rows.Count - 1 ; j++)
                     {
                         Aspose.Words.Tables.Row beforeRow = table.Rows[i++];
                         Aspose.Words.Tables.Row clonedRow = (Aspose.Words.Tables.Row)beforeRow.Clone(true);
                         table.InsertAfter(clonedRow, beforeRow);//插入到指定位置下面
                         DataRow dr = dt.Rows[j];
                         //修改上行内容
                         docBuild.MoveToCell(0,i-1,1,0);
                         docBuild.Write(dr["KIDNAME"].ToString());
                         docBuild.MoveToCell(0, i - 1, 3, 0);
                         docBuild.Write(dr["xb"].ToString());
                         docBuild.MoveToCell(0, i - 1, 5, 0);
                         docBuild.Write(dr["nl"].ToString());
                         docBuild.MoveToCell(0, i - 1, 7, 0);
                         docBuild.Write(dr["xz"].ToString());
                         //设置合并内容
                         docBuild.MoveToCell(0,i,0,0);                         
                         docBuild.CellFormat.WrapText = true;
                         //合并单元格
                         clonedRow.Cells[0].CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;

                     }
                     
                     docBuild.MoveToCell(0,i,1,0);
                     docBuild.Write(dt.Rows[dt.Rows.Count - 1]["KIDNAME"].ToString());
                     docBuild.MoveToCell(0, i, 3, 0);
                     docBuild.Write(dt.Rows[dt.Rows.Count - 1]["xb"].ToString());
                     docBuild.MoveToCell(0, i, 5, 0);
                     docBuild.Write(dt.Rows[dt.Rows.Count - 1]["nl"].ToString());
                     docBuild.MoveToCell(0, i, 7, 0);
                     docBuild.Write(dt.Rows[dt.Rows.Count - 1]["xz"].ToString());
                 }
             }            
            doc.Save(outPutFilePath ,Aspose.Words.SaveFormat.Doc);
            string path = outPutFilePath;
            System.IO.FileInfo file = new System.IO.FileInfo(path);
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Charset = "GB2312";
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
            // 添加头信息,为"文件下载/另存为"对话框指定默认文件名  
            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename = " + HttpContext.Current.Server.UrlEncode(fileName));
            // 添加头信息,指定文件大小,让浏览器能够显示下载进度  
            HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
            // 指定返回的是一个不能被客户端读取的流,必须被下载  
            HttpContext.Current.Response.ContentType = "application/ms-word";
            // 把文件流发送到客户端  
            HttpContext.Current.Response.WriteFile(file.FullName);
            // 停止页面的执行  
            System.IO.DirectoryInfo pathFolder = new System.IO.DirectoryInfo(HttpContext.Current.Server.MapPath("..//Biz//template//Temp"));          
            HttpContext.Current.Response.End();


            //Response.Write(" <script> window.close(); </script> ");
        }