王朝学院·作者佚名  2016-05-20  
宽屏版  字体: |||超大  

关于c#生成Word。需求:需要把数据做成这样的效果、一个页面展示一个r单子数据。

object filename = ""; Object Nothing = System.Reflection.Missing.Value; Word.application WordApp = new Word.ApplicationClass();//实例化word HY.Common.Utils.Logger.Log.Info("WordApp:" + WordApp); Word._Application oWord = new Word.Application(); //创建Word文档 Word._Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing); try { SetPage(WordApp, WordDoc, "横板", 21, 29.7, 1, 1, 1, 1); HY.Common.Utils.Logger.Log.Info("WordDoc:" + WordDoc); string name = "审批表" + DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.ToLongTimeString().Replace(":", "") + ".docx";//创建生成文件名字 HY.Common.Utils.Logger.Log.Info("name" + name); string CreateFilePath = ConfigurationManager.AppSettings["CreateFilePath"]; HY.Common.Utils.Logger.Log.Info("CreateFilePath" + CreateFilePath); filename = CreateFilePath + name; //文件保存路径 HY.Common.Utils.Logger.Log.Info("filename" + filename); string[] SerialNumberArr = Context.Request["SerialNumber"].Substring(0, Context.Request["SerialNumber"].ToString().Length - 1).Split(','); string[] PRocInstIDArr = Context.Request["ProcInstID"].Substring(0, Context.Request["ProcInstID"].ToString().Length - 1).Split(',');//挂账Id string[] PaymentProcInstIDArr = Context.Request["PaymentProcInstID"].Substring(0, Context.Request["PaymentProcInstID"].ToString().Length - 1).Split(',');//付款Id for (int i = 0; i < ProcInstIDArr.Length; i++) { #region 打印 InsertText(WordDoc, " 审批表 ", new System.Drawing.Font("微软雅黑", 12, System.Drawing.FontStyle.Bold), Word.WdParagraphAlignment.wdAlignParagraphLeft, false); InsertText(WordDoc, "", new System.Drawing.Font("微软雅黑", 12, System.Drawing.FontStyle.Bold), Word.WdParagraphAlignment.wdAlignParagraphLeft, true); InsertText(WordDoc, "申请人信息", new System.Drawing.Font("宋体", 12, System.Drawing.FontStyle.Bold), Word.WdParagraphAlignment.wdAlignParagraphLeft, false); if (ProcInstIDArr.Length - 1 != i) { InsertBreak(WordDoc, Nothing); } #endregion } WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing); WordApp = null; HY.Common.Utils.Logger.Log.Info("SaveAs" + filename); } catch (Exception ex) { HY.Common.Utils.Logger.Log.Info("error" + e.ToString()); } finally { WordDoc.Close(ref Nothing, ref Nothing, ref Nothing); oWord.Quit(ref Nothing, ref Nothing, ref Nothing); KillWordProcess(); }

#region - 插入文本 - public static bool InsertText(Word._Document oDoc, string strText, System.Drawing.Font font, Word.WdParagraphAlignment wdAlign, bool isAftre) { try { Word.Range rng = oDoc.Content; int lenght = oDoc.Characters.Count - 1; object start = lenght; object end = lenght; rng = oDoc.Range(ref start, ref end); if (isAftre == true) { strText += "\r\n"; } rng.Text = strText; rng.Font.Name = font.Name; rng.Font.Size = font.Size; if (font.Style == System.Drawing.FontStyle.Bold) { rng.Font.Bold = 1; } //设置单元格中字体为粗体 rng.ParagraphFormat.Alignment = wdAlign;//设置文本对齐格式(左对齐,右对齐,居中) return true; } catch (Exception) { return false; } } #endregion

View Code #region - 插入分页符 - public static void InsertBreak(Word._Document WordDoc, Object Nothing) { Word.Paragraph para; para = WordDoc.Content.Paragraphs.Add(ref Nothing); object pBreak = (int)Word.WdBreakType.wdSectionBreakNextPage; para.Range.InsertBreak(ref pBreak); } public static void DeleteBreak(Word.Application wordApp, Object Nothing) { Word.Range range1, range2; // 跳转种类 object objWhat = Word.WdGoToItem.wdGoToPage; // 跳转位置 object objWhich = Word.WdGoToDirection.wdGoToLast; // 转向最后一页 wordApp.Selection.GoTo(ref objWhat, ref objWhich, ref Nothing, ref Nothing); // Range取得 range1 = wordApp.Selection.Range; range2 = wordApp.ActiveDocument.Range(ref Nothing, ref Nothing); object start = range1.Start; object end = range2.End; // 删除最后一页 wordApp.ActiveDocument.Range(ref start, ref end).Delete(ref Nothing, ref Nothing); } #endregion

View Code #region - 页面设置 - public static void SetPage(Word.Application oWord, Word._Document oDoc, string orientation, double width, double height, double topMargin, double leftMargin, double rightMargin, double bottomMargin) { Logger.Log.Info("Word.Name" + oWord.Name); Logger.Log.Info("oDoc" + oDoc); oDoc.PageSetup.PageWidth = oWord.CentimetersToPoints((float)width); oDoc.PageSetup.PageHeight = oWord.CentimetersToPoints((float)height); if (orientation == "横板") { oDoc.PageSetup.Orientation = Microsoft.Office.Interop.Word.WdOrientation.wdOrientLandscape; } oDoc.PageSetup.TopMargin = (float)(topMargin * 25);//上边距 oDoc.PageSetup.LeftMargin = (float)(leftMargin * 25);//左边距 oDoc.PageSetup.RightMargin = (float)(rightMargin * 25);//右边距 oDoc.PageSetup.BottomMargin = (float)(bottomMargin * 25);//下边距 } #endregion

View Code #region - 清除word进程 - /**/ /// <summary> /// 清除word进程 /// </summary>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有