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!"); } }
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"); }
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); }
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 }); }
public override VisitorAction VisitRowEnd(Aspose.Words.Tables.Row row) { this.structureBuilder.AppendLine("</Row>"); return(VisitorAction.Continue); }
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 }); }