コード例 #1
0
        private void CreateTableOnPdfFile_3()
        {
            //create filename of pdf_file_tosave
            var word_file_tosave = @"d:\1.docx";

            //new pdf doc
            var word_doc = new Aspose.Words.Document();
            var table1   = new Aspose.Words.Tables.Table(word_doc);
            var row1     = new Aspose.Words.Tables.Row(word_doc);
            var cell1    = new Aspose.Words.Tables.Cell(word_doc);

            //var para1 = new Aspose.Words.Paragraph(word_doc);
            cell1.AppendChild(new Aspose.Words.Paragraph(word_doc));
            cell1.FirstParagraph.AppendChild(new Aspose.Words.Run(word_doc, "1223333"));
            row1.AppendChild(cell1);
            table1.AppendChild(row1);
            word_doc.FirstSection.Body.AppendChild(table1);

            //save
            try
            {
                word_doc.Save(word_file_tosave, Aspose.Words.SaveFormat.Docx);
                MessageBox.Show("Save Successfully!");
                //pdfDoc.Dispose();
                Process.Start(word_file_tosave);
            }
            catch
            {
                MessageBox.Show("Faild to Save!");
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: ol964614088/ASP.NET_Testpost
        private void Form1_Load(object sender, EventArgs e)
        {
            this.filePath.Text = "F:\\eee\\Test.docx";
            //载入模板
            var doc = new Document(this.filePath.Text);

            //基本属性
            DocumentBuilder builder = new DocumentBuilder(doc);

            builder.MoveToMergeField("txt1");
            builder.Write("被我写入了值11!");
            builder.MoveToMergeField("txt2");
            builder.Write("被我写入了值22!");

            //写表格
            NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);

            Aspose.Words.Tables.Table wordTable;
            //获取第一张表
            wordTable = allTables[0] as Aspose.Words.Tables.Table;
            //获取表头
            int index = 0;

            Aspose.Words.Tables.Row rowTen = wordTable.Rows[index];

            DataTable dt = GetDataTable();

            //添加数据
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                //复制表头的那行样式和数据等过来。如果你单独插入一行,你自己试试吧会有惊喜的
                Aspose.Words.Tables.Row row = (Aspose.Words.Tables.Row)rowTen.Clone(true);
                //因为复制的是表头,所以里面的数据是需要我们根据实际数据替换掉的。更改序号
                Aspose.Words.Tables.Cell cell = row.Cells[0];
                Aspose.Words.Paragraph   p    = new Paragraph(doc);
                p.AppendChild(new Run(doc, (i + 1).ToString()));
                cell.FirstParagraph.Remove();//移除之前的数据
                cell.AppendChild(p);
                //更改为需要填充的数据=XXX
                string str1 = dt.Rows[i]["XXX"].ToString();
                cell = row.Cells[1];
                p    = new Paragraph(doc);
                p.AppendChild(new Run(doc, str1));
                cell.FirstParagraph.Remove();
                cell.AppendChild(p);

                //添加一行数据
                wordTable.Rows.Add(row);
            }


            //写图片



            //保存
            doc.Save("F:\\eee\\WriteDoc.docx");
        }
コード例 #3
0
ファイル: DocGenerator.cs プロジェクト: yuessir/pure.data
        public static string Process(DocOptions options)
        {
            string result = "";

            try
            {
                var       config   = ConfigHelpers.GetDefaultConfig(options.Config);
                IDatabase database = new Database(config, LogHelpers.LogStatic, option => {
                    //option.CodeGenProjectName = projectName;
                    //option.CodeGenNameSpace = nameSpace;
                    //option.CodeGenTableFilter = tablePrefixFilter;
                    //option.AutoMigrateOnContainTable = onlyTable;
                });


                string type = options.Type;

                var projectConfig = DbLoader.ConvertDatabaseConfigToProjectConfig(database);
                LogHelpers.LogStatic(projectConfig.ToString());

                string msg    = "";
                var    tables = DbLoader.GetTableInfos(database, projectConfig, null, null, out msg);
                LogHelpers.LogStatic(msg);


                string        docName        = projectConfig.DatabaseName;
                OutputContext _OutputContext = new OutputContext();
                _OutputContext.Tables = tables;
                // context.Mappers = mapperDict;
                _OutputContext.ProjectConfig = projectConfig;
                //context.ParserConfig = _parseConfig;
                string FileName           = docName + "数据库设计文档." + type;
                string RealOutputFileName = System.IO.Path.Combine(DbLoader.GetProjectDirectory(projectConfig), FileName);

                if (type == "html")
                {
                    string templatePath = DbLoader.MapPath("~/DocGen/dicthtml.cshtml");
                    if (System.IO.File.Exists(templatePath))
                    {
                        string tempalteContent = FileHelper.ReadFile(templatePath);
                        string key             = "exportdicthtml";

                        var templateEngine = DbLoader.CreateTemplateEngine();
                        var generateResult = templateEngine.Parse <OutputContext>(tempalteContent, key, _OutputContext);

                        string content = generateResult;
                        templateEngine.OutputResult(RealOutputFileName, content);
                        //return File(RealOutputFileName, "application/zip-x-compressed", FileName);
                    }
                }
                else
                {
                    //Other types
                    string tmppath = DbLoader.MapPath("~/DocGen/dict.dot");                    // System.IO.Path.Combine(path, "Template", "template.dot");
                    Aspose.Words.Document        doc     = new Aspose.Words.Document(tmppath); //载入模板
                    Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);


                    string dbName = docName;
                    if (string.IsNullOrEmpty(dbName))
                    {
                        dbName = _OutputContext.ProjectConfig.Name;
                    }
                    doc.Range.Replace("{$.DBName}", dbName, false, false);

                    Aspose.Words.Tables.Table tabletemp  = (Aspose.Words.Tables.Table)doc.GetChild(Aspose.Words.NodeType.Table, 0, true);
                    Aspose.Words.Tables.Table tableClone = (Aspose.Words.Tables.Table)tabletemp.Clone(true);

                    for (int k = 0; k < _OutputContext.Tables.Count; k++)
                    {
                        Aspose.Words.Tables.Table table = (Aspose.Words.Tables.Table)doc.GetChild(Aspose.Words.NodeType.Table, k, true);

                        var tb = _OutputContext.Tables[k];

                        //添加表头标题
                        var par = table.ParentNode.InsertBefore(new Aspose.Words.Paragraph(doc), table);
                        builder.MoveTo(par);
                        builder.ParagraphFormat.StyleIdentifier = Aspose.Words.StyleIdentifier.Heading1;
                        builder.Font.Size = 11;
                        builder.Write(tb.Comment + "(" + tb.Name + ")");


                        Aspose.Words.Tables.Cell cellh = table.FirstRow.Cells[1];
                        cellh.RemoveAllChildren();
                        builder.MoveToCell(k, 0, 1, 0);
                        builder.Write(tb.Name);
                        Aspose.Words.Tables.Cell cellh3 = table.FirstRow.Cells[3];
                        cellh3.RemoveAllChildren();
                        builder.MoveToCell(k, 0, 3, 0);
                        builder.Write(tb.Comment != null ? tb.Comment : "");


                        for (int i = 0; i < tb.Columns.Count; i++)
                        {
                            for (int j = 0; j < table.LastRow.Cells.Count; j++)
                            {
                                Aspose.Words.Tables.Cell cell = table.LastRow.Cells[j];
                                cell.RemoveAllChildren();
                                builder.MoveToCell(k, table.Rows.Count - 1, j, 0);
                                switch (j)
                                {
                                case 0:
                                    builder.Write(tb.Columns[i].Comment != null ? tb.Columns[i].Comment : "");
                                    break;

                                case 1:
                                    builder.Write(tb.Columns[i].Name);

                                    break;

                                case 2:
                                    builder.Write(tb.Columns[i].RawType);

                                    break;

                                case 3:
                                    builder.Write(tb.Columns[i].Length.ToString());

                                    break;

                                case 4:
                                    builder.Write(tb.Columns[i].Scale.ToString());

                                    break;

                                case 5:
                                    builder.Write(tb.Columns[i].IsPK ? "Y" : "");

                                    break;

                                case 6:
                                    builder.Write(tb.Columns[i].IsNullable ? "Y" : "");
                                    break;

                                case 7:
                                    builder.Write(tb.Columns[i].IsAutoIncrement ? "Y" : "");
                                    break;

                                case 8:
                                    builder.Write(tb.Columns[i].DefaultValue == null ? "" : tb.Columns[i].DefaultValue.ToString());

                                    break;

                                default:
                                    break;
                                }
                            }
                            if (i < tb.Columns.Count - 1)
                            {
                                Aspose.Words.Tables.Row clonedRow = (Aspose.Words.Tables.Row)table.LastRow.Clone(true);
                                table.AppendChild(clonedRow);
                            }
                        }
                        if (k < _OutputContext.Tables.Count - 1)
                        {
                            Aspose.Words.Tables.Table tbClone = (Aspose.Words.Tables.Table)tableClone.Clone(true);
                            table.ParentNode.InsertAfter(tbClone, table);
                        }
                    }


                    doc.UpdateFields();
                    doc.Range.Replace("{$.NowDateTime}", DateTime.Now.ToString(), false, false);
                    Aspose.Words.SaveFormat sformat = Aspose.Words.SaveFormat.Doc;
                    switch (type)
                    {
                    case "doc":
                        sformat = Aspose.Words.SaveFormat.Doc;
                        break;

                    case "docx":
                        sformat = Aspose.Words.SaveFormat.Docx;
                        break;

                    //case "html":
                    //    sformat = Aspose.Words.SaveFormat.Html;
                    //    break;
                    case "odt":
                        sformat = Aspose.Words.SaveFormat.Odt;
                        break;

                    case "pdf":
                        sformat = Aspose.Words.SaveFormat.Pdf;
                        break;

                    case "png":
                        sformat = Aspose.Words.SaveFormat.Png;
                        break;

                    case "tiff":
                        sformat = Aspose.Words.SaveFormat.Tiff;
                        break;

                    case "text":
                        sformat = Aspose.Words.SaveFormat.Text;
                        break;

                    case "epub":
                        sformat = Aspose.Words.SaveFormat.Epub;
                        break;

                    default:
                        break;
                    }
                    doc.Save(RealOutputFileName, sformat);

                    //return File(RealOutputFileName, "application/zip-x-compressed", FileName);
                }


                if (options.Zip)
                {
                    var    zipDir         = RealOutputFileName;
                    string zipedName      = docName + "-" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".zip";
                    string zipOutFileName = System.IO.Path.Combine(DbLoader.GetDataDirectory(), zipedName);
                    //ZipHelper.ZipDir(zipDir, zipOutFileName, 9);
                    //ZipHelper.ZipManyFilesOrDictorys(zipDir, zipOutFileName, "");
                    ZipHelper.ZipFile(zipDir, zipOutFileName);

                    RealOutputFileName = zipOutFileName;
                }

                LogHelpers.LogStatic("生成数据库字典成功:" + RealOutputFileName);
                ConfigHelpers.OpenDir(RealOutputFileName);
            }
            catch (Exception ex)
            {
                LogHelpers.LogStatic("DocGenerator 生成数据库字典出错!", ex, Pure.Data.MessageType.Error);
            }


            return(result);
        }
コード例 #4
0
        public object SetWordFile(string TemplateNameID, string ContractNumber, string fileName)
        {
            string GUID = System.Guid.NewGuid().ToString();
            var    flag = true;

            try
            {
                //获取sql语句、模版名称
                string    SQL = "SELECT TemplateName,sqlstr,DataBaseUrl FROM  I_TemplateFile WHERE ObjectID ='" + TemplateNameID + "'";
                DataTable dt  = OThinker.H3.Controllers.AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(SQL);
                //模版名称
                var TemplateName = dt.Rows[0]["TemplateName"];
                var datasource   = dt.Rows[0]["DataBaseUrl"].ToString();
                if (string.IsNullOrEmpty(datasource))
                {
                    datasource = "cap";
                }

                string    SQL1  = "SELECT sqlstring FROM  I_TemplateFile_SQL WHERE ParentObjectID ='" + TemplateNameID + "'";
                DataTable dtstr = OThinker.H3.Controllers.AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(SQL1);

                //模版地址
                string path = System.AppDomain.CurrentDomain.BaseDirectory;
                path += "Sheets\\Model\\" + TemplateName + ".doc";
                var document = new Document(path);
                var builder  = new DocumentBuilder(document);
                //查模版维护表获取标签值
                for (int i = 0; i < dtstr.Rows.Count; i++)
                {
                    string sqlstr = dtstr.Rows[i]["sqlstring"].ToString();
                    sqlstr = HttpUtility.HtmlDecode(sqlstr);                       // wangxg 19.12 HTML解码
                    string    sql1 = string.Format(sqlstr, ContractNumber.Trim()); // "Br-A000056000");
                    DataTable dt1  = ExecuteDataTableSql(datasource, sql1);
                    if (dt1.Rows.Count > 0)
                    {
                        //确定为还款计划表
                        if (dt1.Columns[0].ColumnName == "CUSTOMER_RENTAL_ID")
                        {
                            NodeCollection            allTables = document.GetChildNodes(NodeType.Table, true); //拿到所有表格
                            Aspose.Words.Tables.Table table     = allTables[2] as Aspose.Words.Tables.Table;    //拿到第二个表格

                            for (int l = 0; l < dt1.Rows.Count; l++)
                            {
                                // 复制上一行
                                Aspose.Words.Tables.Row clonedRow = (Aspose.Words.Tables.Row)table.LastRow.Clone(true);
                                for (int j = 0; j < clonedRow.Count; j++)
                                {
                                    clonedRow.Cells[j].RemoveAllChildren(); //清除单元格中内容
                                    Aspose.Words.Paragraph p = new Aspose.Words.Paragraph(document);
                                    var CellVal = dt1.Rows[l][j] + string.Empty;
                                    CellVal = CellVal.Replace("/", "-").Replace("0:00:00", "");
                                    p.AppendChild(new Aspose.Words.Run(document, CellVal));
                                    clonedRow.Cells[j].AppendChild(p);
                                }
                                table.Rows.Add(clonedRow); //添加一行
                            }
                        }
                        else
                        {
                            //取标签 给标签赋值
                            foreach (DataColumn dc in dt1.Columns)
                            {
                                if (document.Range.Bookmarks[dc.ColumnName] != null)
                                {
                                    document.Range.Bookmarks[dc.ColumnName].Text = dt1.Rows[0][dc.ColumnName].ToString();
                                }
                            }
                        }
                    }
                }
                //文件名称//存在则覆盖,采用原来fileName
                if (string.IsNullOrEmpty(fileName))
                {
                    fileName = ContractNumber + TemplateName + GUID;
                }

                //测试  判断是否重新生成
                //else
                //{
                //    string filePath = Server.MapPath("~/TemplateFile/") + fileName + ".pdf";
                //    document.Save(filePath, SaveFormat.Pdf);
                //}

                //string filePathDocold = Server.MapPath("~/TemplateFile/Doc/") + fileName + ".DOC";
                //string filePathDoc = System.AppDomain.CurrentDomain.BaseDirectory + "\\PrintFilePath\\" + fileName + ".doc";
                string filePathDoc = GetfilePath() + fileName + ".DOC";
                OThinker.H3.Controllers.AppUtility.Engine.LogWriter.Write("filePathDoc=" + filePathDoc);
                //PdfSaveOptions saveOption = new PdfSaveOptions();
                //saveOption.SaveFormat = Aspose.Words.SaveFormat.Pdf;
                ////user pass 设置了打开时,需要密码
                ////owner pass 控件编辑等权限
                //PdfEncryptionDetails encryptionDetails = new PdfEncryptionDetails(string.Empty, "PasswordHere", PdfEncryptionAlgorithm.RC4_128);
                //encryptionDetails.Permissions = PdfPermissions.DisallowAll;
                //saveOption.EncryptionDetails = encryptionDetails;

                //加密文档保存到指定地点---//使用ntko不需要使用pdf暂时注释
                // document.Save(filePath, saveOption);
                //如不不需要保存doc 请注释下句
                document.Save(filePathDoc, SaveFormat.Doc);
            }
            catch (Exception e)
            {
                OThinker.H3.Controllers.AppUtility.Engine.LogWriter.Write(e.ToString());
                flag = false;
            }

            return(new
            {
                Flag = flag,
                FileName = fileName
            });
        }
コード例 #5
0
        public override VisitorAction VisitRowEnd(Aspose.Words.Tables.Row row)
        {
            this.structureBuilder.AppendLine("</Row>");

            return(VisitorAction.Continue);
        }
コード例 #6
0
        public object SetWordFile(string TemplateNameID, string ContractNumber)
        {
            string GUID           = Guid.NewGuid().ToString();
            var    flag           = true;
            var    message        = "";
            var    TemplateName   = "";
            var    instanceType   = "";
            var    SavedDataField = "";
            string fileName       = "";

            double rate_fixed = 0;
            double rate_base  = 0;
            double rate_float = 0;

            bool isNewContract = false;

            try
            {
                //获取sql语句、模版名称
                string    SQL = "SELECT TemplateName,sqlstr,DataBaseUrl,instancetype,SavedDataField FROM  I_TemplateFile WHERE ObjectID ='" + TemplateNameID + "'";
                DataTable dt  = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(SQL);
                //模版名称
                TemplateName   = dt.Rows[0]["TemplateName"] + string.Empty;
                instanceType   = dt.Rows[0]["instancetype"] + string.Empty;
                SavedDataField = dt.Rows[0]["SavedDataField"] + string.Empty;
                string loanContractField = ConfigurationManager.AppSettings["LoanContractSavedDataField"] + string.Empty;

                if (string.IsNullOrEmpty(SavedDataField))
                {
                    return(new
                    {
                        Flag = false,
                        FileName = "",
                        Id = "",
                        Message = "未设置保存的数据项编码,请联系管理员"
                    });
                }

                #region 处理打印合同
                // 打印合同
                if (loanContractField.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Contains(SavedDataField))
                {
                    string  sql       = $"SELECT ACTUAL_RTE FROM APPLICATION_CONTRACT_VW WHERE APPLICATION_NUMBER = '{ContractNumber}'";
                    decimal actualRte = Convert.ToDecimal((ExecuteDataTableSql("cap", sql).Rows[0]["ACTUAL_RTE"] + string.Empty));
                    sql = $"SELECT STATUS_CODE FROM APPLICATION@TO_CMS WHERE APPLICATION_NUMBER = '{ContractNumber}'";
                    string statusCode = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteScalar(sql) + string.Empty;

                    if (statusCode == "55")
                    {
                        // 已放款状态,取上一次的打印记录
                        sql = $@"SELECT * FROM (
                            SELECT TEMPLATENAME, RATE_FIXED, RATE_BASE, RATE_FLOAT  FROM C_CONTRACTDETAIL
                            WHERE APPLICATIONNUMBER = '{ContractNumber}'
                            ORDER BY CREATEDTIME DESC)
                            WHERE ROWNUM = 1";
                        DataTable recordTable = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(sql);

                        if (recordTable.Rows.Count == 0)
                        {
                            // 没有打印记录,返回false
                            return(new
                            {
                                Flag = false,
                                Message = "没有找到打印记录"
                            });
                        }
                        else
                        {
                            TemplateName = recordTable.Rows[0]["TEMPLATENAME"] + string.Empty;
                            string oldUserTemplateName = ConfigurationManager.AppSettings["OldUserLoanContractName"] + string.Empty;
                            string oldOrgTemplateName  = ConfigurationManager.AppSettings["OldOrgLoanContractName"] + string.Empty;

                            // 有打印记录
                            // 个人模板并且模板名称不等于维护的老个人模板名称
                            // 机构模板并且模板名称不等于维护的老机构模板名称
                            if ((instanceType == "个人" && TemplateName != oldUserTemplateName) ||
                                (instanceType == "机构" && TemplateName != oldOrgTemplateName))
                            {
                                isNewContract = true;
                                rate_fixed    = Convert.ToDouble(recordTable.Rows[0]["RATE_FIXED"]);
                                rate_base     = Convert.ToDouble(recordTable.Rows[0]["RATE_BASE"]);
                                rate_float    = Convert.ToDouble(recordTable.Rows[0]["RATE_FLOAT"]);
                            }
                        }
                    }
                    else
                    {
                        //未放款状态,打印新合同
                        string    rateSql   = $@"
                        SELECT {actualRte} RATE_FIXED, RATEBASE RATE_BASE, {actualRte} - RATEBASE AS RATE_FLOAT FROM (
                          SELECT HTLL.RATEBASE FROM I_HTLL2 HTLL
                          INNER JOIN (
                            SELECT
                              CASE
                                WHEN LEASE_TERMS/12 > 1 THEN '5年'
                                ELSE '1年'
                              END LEASE_TERMS, createdtime FROM 
                              (select a.createdtime, b.lease_term_in_month as lease_terms
                               from i_application a
                               inner join i_Contract_Detail b on b.parentobjectid = a.objectid
                               where a.application_number = '{ContractNumber}'
                              )
                            ) CONTRACT
                            ON HTLL.DURATION = CONTRACT.LEASE_TERMS and to_date('{DateTime.Now.ToShortDateString()}', 'yyyy/MM/dd') >= htll.enabledtime
                            WHERE HTLL.ISDELETE = 0
                          ORDER BY HTLL.ENABLEDTIME DESC
                        ) ";
                        DataTable rateTable = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(rateSql);

                        // 没有维护LPR,就不让打印
                        if (rateTable.Rows.Count == 0)
                        {
                            return(new
                            {
                                Flag = false,
                                Message = "没有找到对应LPR记录,请维护"
                            });
                        }
                        else
                        {
                            isNewContract = true;
                            rate_fixed    = Convert.ToDouble(rateTable.Rows[0]["RATE_FIXED"]);
                            rate_base     = Convert.ToDouble(rateTable.Rows[0]["RATE_BASE"]);
                            rate_float    = Convert.ToDouble(rateTable.Rows[0]["RATE_FLOAT"]);
                        }
                    }
                }
                #endregion

                var datasource = dt.Rows[0]["DataBaseUrl"] + string.Empty;
                if (string.IsNullOrEmpty(datasource))
                {
                    datasource = "cap";
                }

                string    SQL1  = "SELECT sqlstring FROM  I_TemplateFile_SQL WHERE ParentObjectID ='" + TemplateNameID + "'";
                DataTable dtstr = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(SQL1);

                //模版地址
                string path = AppDomain.CurrentDomain.BaseDirectory;
                path += "Sheets\\Model\\" + TemplateName + ".doc";
                var document = new Document(path);
                var builder  = new DocumentBuilder(document);

                //查模版维护表获取标签值
                for (int i = 0; i < dtstr.Rows.Count; i++)
                {
                    string sqlstr = dtstr.Rows[i]["sqlstring"].ToString();
                    sqlstr = HttpUtility.HtmlDecode(sqlstr);                             // wangxg 19.12 HTML解码
                    string    sql1       = string.Format(sqlstr, ContractNumber.Trim()); // "Br-A000056000");
                    DataTable dataSource = ExecuteDataTableSql(datasource, sql1);
                    //记录打印查询出的数据源;
                    AppUtility.Engine.LogWriter.Write(ContractNumber + TemplateName + GUID + "数据源" + (i + 1) + "\r\n" +
                                                      Newtonsoft.Json.JsonConvert.SerializeObject(dataSource));
                    if (dataSource.Rows.Count > 0)
                    {
                        //确定为还款计划表
                        if (dataSource.Columns[0].ColumnName == "CUSTOMER_RENTAL_ID")
                        {
                            NodeCollection            allTables = document.GetChildNodes(NodeType.Table, true); //拿到所有表格
                            Aspose.Words.Tables.Table table     = allTables[2] as Aspose.Words.Tables.Table;    //拿到第二个表格

                            for (int l = 0; l < dataSource.Rows.Count; l++)
                            {
                                // 复制上一行
                                Aspose.Words.Tables.Row clonedRow = (Aspose.Words.Tables.Row)table.LastRow.Clone(true);
                                for (int j = 0; j < clonedRow.Count; j++)
                                {
                                    clonedRow.Cells[j].RemoveAllChildren(); //清除单元格中内容
                                    Aspose.Words.Paragraph p = new Aspose.Words.Paragraph(document);
                                    var CellVal = dataSource.Rows[l][j] + string.Empty;
                                    CellVal = CellVal.Replace("/", "-").Replace("0:00:00", "");
                                    p.AppendChild(new Aspose.Words.Run(document, CellVal));
                                    clonedRow.Cells[j].AppendChild(p);
                                }
                                table.Rows.Add(clonedRow); //添加一行
                            }
                        }
                        else
                        {
                            //取标签 给标签赋值
                            foreach (DataColumn dc in dataSource.Columns)
                            {
                                if (document.Range.Bookmarks[dc.ColumnName] != null)
                                {
                                    if (instanceType.ToString() == "正源" && dc.DataType.ToString() == "System.DateTime")
                                    {
                                        document.Range.Bookmarks[dc.ColumnName].Text = Convert.ToDateTime(dataSource.Rows[0][dc.ColumnName].ToString()).ToString("yyyy-MM-dd");
                                    }
                                    else
                                    {
                                        document.Range.Bookmarks[dc.ColumnName].Text = dataSource.Rows[0][dc.ColumnName].ToString();
                                    }
                                }
                            }
                        }
                    }
                }

                // 如果是新合同,给rate_fixed, rate_base, rate_float三个书签赋值
                if (isNewContract)
                {
                    document.Range.Bookmarks["rate_fixed"].Text = rate_fixed.ToString();
                    document.Range.Bookmarks["rate_base"].Text  = rate_base.ToString();
                    document.Range.Bookmarks["rate_float"].Text = rate_float.ToString();
                }

                fileName = ContractNumber + TemplateName + GUID;

                #region Save
                string tempfilePath = Server.MapPath("~/TempImages/") + GUID + ".doc";
                document.Save(tempfilePath, SaveFormat.Doc);
                SaveAttachment(
                    FilePath: tempfilePath,
                    ApplicationNumber: ContractNumber,
                    TemplateId: TemplateNameID,
                    TemplateName: TemplateName,
                    AttachmentId: GUID,
                    FileName: fileName + ".doc",
                    SchemaCode: ActionContext.SchemaCode,
                    DataField: SavedDataField,
                    BizObjectId: ActionContext.BizObjectID,
                    InstanceType: instanceType,
                    InstanceId: ActionContext.InstanceId,
                    Rate_Fixed: rate_fixed,
                    Rate_Base: rate_base,
                    Rate_Float: rate_float
                    );

                if (instanceType.ToString() == "正源")
                {
                    string tempfilePathPDF = Server.MapPath("~/TempImages/") + GUID + ".pdf";
                    document.Save(tempfilePathPDF, SaveFormat.Pdf);
                    SaveAttachment(
                        FilePath: tempfilePathPDF,
                        ApplicationNumber: ContractNumber,
                        TemplateId: TemplateNameID,
                        TemplateName: TemplateName,
                        AttachmentId: Guid.NewGuid().ToString(),
                        FileName: fileName + ".pdf",
                        SchemaCode: ActionContext.SchemaCode,
                        DataField: SavedDataField,
                        BizObjectId: ActionContext.BizObjectID,
                        InstanceType: instanceType,
                        InstanceId: ActionContext.InstanceId,
                        Rate_Fixed: rate_fixed,
                        Rate_Base: rate_base,
                        Rate_Float: rate_float
                        );
                }
                #endregion
            }
            catch (Exception e)
            {
                AppUtility.Engine.LogWriter.Write(e.ToString());
                flag    = false;
                message = e.Message;
            }

            return(new
            {
                Flag = flag,
                FileName = fileName,
                Id = GUID,
                Message = message
            });
        }