swap

.Office.xWord { public class WordFileBuilder : FileBuilder { private Microsoft.Office.Interop.Word.Application m_WordApp; private Microsoft.Office.Interop.Word.Document m_Doc; private object m_Missing = System.Reflection.Missing.Value; private Document Open(ref object FileName, ref object ConfirmConversions, ref object ReadOnly, ref object AddToRecentFiles, ref object PasswordDocument, ref object PasswordTemplate, ref object Revert, ref object WritePasswordDocument, ref object WritePasswordTemplate, ref object Format, ref object Encoding, ref object Visible, ref object OpenAndRepair, ref object DocumentDirection, ref object NoEncodingDialog, ref object XMLTransform) { m_WordApp = new Microsoft.Office.Interop.Word.Application(); m_Doc = m_WordApp.Documents.Open(ref FileName, ref ConfirmConversions, ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate, ref Revert, ref WritePasswordDocument, ref WritePasswordTemplate, ref Format, ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection, ref NoEncodingDialog, ref XMLTransform); m_Doc.Activate(); return m_Doc; } /// <summary> /// 打開文件 /// </summary> /// <param name="fileName"></param> /// <param name="readOnly"></param> /// <param name="addToRecentFiles"></param> /// <param name="encoding"></param> /// <returns></returns> public Document Open(string fileName, bool readOnly, bool addToRecentFiles, object encoding) { object visible = false; object oFileName = fileName; object oReadOnly = readOnly; object oAddToRecentFiles = addToRecentFiles; object oEncoding = encoding; return this.Open(ref oFileName, ref m_Missing, ref oReadOnly, ref oAddToRecentFiles, ref m_Missing, ref m_Missing, ref m_Missing, ref m_Missing, ref m_Missing, ref m_Missing, ref oEncoding, ref visible, ref m_Missing, ref m_Missing, ref m_Missing, ref m_Missing); } /// <summary> /// 打開文件 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public Document Open(string fileName) { return this.Open(fileName, false, false, m_Missing); } /// <summary> /// 關閉文件 /// </summary> /// <param name="save"></param> public void Close(bool save) { if (m_WordApp == null) { return; } if (m_Doc == null) { this.QuiteApp(); return; } object oSave = save; Microsoft.Office.Interop.Word._Document doc = m_Doc as Microsoft.Office.Interop.Word._Document; if (doc == null) { #pragma warning disable m_Doc.Close(ref oSave, ref m_Missing, ref m_Missing); #pragma warning restore this.QuiteApp(); return; } doc.Close(ref oSave, ref m_Missing, ref m_Missing); this.QuiteApp(); } /// <summary> /// 填充數據 /// </summary> /// <param name="data"></param> public void FillData(BasicData data) { object oWhat = WdGoToItem.wdGoToBookmark; foreach (string key in data.Keys) { object bmName = key; if (m_Doc.Bookmarks.Exists(key)) { m_Doc.ActiveWindow.Selection.GoTo(ref oWhat, ref m_Missing, ref m_Missing, ref bmName); m_Doc.ActiveWindow.Selection.TypeText(data[key].ToString()); // m_Doc.ActiveWindow.Selection.ContentControls.Add(WdContentControlType.wdContentControlPicture, } } } /// <summary> /// 生成文件 /// </summary> /// <param name="data"></param> /// <param name="templateFile"></param> /// <param name="outputFile"></param> /// <returns></returns> public override bool Generate(BasicData data, string templateFile, string outputFile) { try { File.Copy(templateFile, outputFile); Document doc = this.Open(outputFile); this.FillData(data); this.Close(true); } catch { this.Close(false); return false; } return true; } /// <summary> /// 退出Word Application /// </summary> private void QuiteApp() { Microsoft.Office.Interop.Word._Application app = m_WordApp as Microsoft.Office.Interop.Word._Application; if (app == null) { #pragma warning disable m_WordApp.Quit(ref m_Missing, ref m_Missing, ref m_Missing); #pragma warning restore return; } app.Quit(ref m_Missing, ref m_Missing, ref m_Missing); } public void fun() { string message = ""; try { Object Nothing = System.Reflection.Missing.Value; string name = "CNSI_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".docx"; object filename = @"E:/Ding/TestProject/FBug.TestProject/WebSite/" + name; //文件保存路徑 //創建Word文檔 Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); Microsoft.Office.Interop.Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing); //添加頁眉 WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView; WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader; WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[頁眉內容]"); WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;//設置右對齊 WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出頁眉設置 WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//設置文檔的行間距 //移動焦點並換行 object count = 14; object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//換一行; WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移動焦點 WordApp.Selection.TypeParagraph();//插入段落 //文檔中創建表格 Microsoft.Office.Interop.Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing); //設置表格樣式 newTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleThickThinLargeGap; newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; newTable.Columns[1].Width = 100f; newTable.Columns[2].Width = 220f; newTable.Columns[3].Width = 105f; //填充表格內容 newTable.Cell(1, 1).Range.Text = "產品詳細信息表"; newTable.Cell(1, 1).Range.Bold = 2;//設置單元格中字體爲粗體 //合併單元格 newTable.Cell(1, 1).Merge(newTable.Cell(1, 3)); WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中 WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中 //填充表格內容 newTable.Cell(2, 1).Range.Text = "產品基本信息"; newTable.Cell(2, 1).Range.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorDarkBlue;//設置單元格內字體顏色 //合併單元格 newTable.Cell(2, 1).Merge(newTable.Cell(2, 3)); WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; //填充表格內容 newTable.Cell(3, 1).Range.Text = "品牌名稱:"; newTable.Cell(3, 2).Range.Text = "BrandName"; //縱向合併單元格 newTable.Cell(3, 3).Select();//選中一行 object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdLine; object moveCount = 5; object moveExtend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend; WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend); WordApp.Selection.Cells.Merge(); //插入圖片 string FileName = @"C:/Documents and Settings/v.dingxiaodong/桌面/TestUpload1.jpg";//圖片所在路徑 object LinkToFile = false; object SaveWithDocument = true; object Anchor = WordDoc.Application.Selection.Range; WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor); WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//圖片寬度 WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//圖片高度 //將圖片設置爲四周環繞型 Microsoft.Office.Interop.Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape(); s.WrapFormat.Type = Microsoft.Office.Interop.Word.WdWrapType.wdWrapSquare; newTable.Cell(12, 1).Range.Text = "產品特殊屬性"; newTable.Cell(12, 1).Merge(newTable.Cell(12, 3)); //在表格中增加行 WordDoc.Content.Tables[1].Rows.Add(ref Nothing); WordDoc.Paragraphs.Last.Range.Text = "文檔創建時間:" + DateTime.Now.ToString();//“落款” WordDoc.Paragraphs.Last.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight; //文件保存 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); WordDoc.Close(ref Nothing, ref Nothing, ref Nothing); WordApp.Quit(ref Nothing, ref Nothing, ref Nothing); message = name + "文檔生成成功,以保存到C://CNSI//下"; } catch { message = "文件導出異常!"; } } } }

 

.Office { public class BasicData { /// <summary> /// 字符串字典 /// </summary> protected Dictionary<string, object> m_Dict; /// <summary> /// /// </summary> public BasicData() { m_Dict = new Dictionary<string, object>(); } /// <summary> /// 索引器 /// </summary> /// <param name="key"></param> /// <returns></returns> public object this[string key] { get { return m_Dict[key]; } set { m_Dict[key] = value; } } /// <summary> /// key的集合 /// </summary> public ICollection Keys { get { return m_Dict.Keys; } } /// <summary> /// 將帶有指定鍵和值的項添加到BasicData中 /// </summary> /// <param name="key"></param> /// <param name="value"></param> public void Add(string key, string value) { m_Dict.Add(key, value); } } }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章