////############################################################ //// https://github.com/yuzhengyang //// author:yuzhengyang ////############################################################ //using Microsoft.Office.Interop.Word; //using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using System.Threading.Tasks; //namespace Y.Utils.IOUtils.OfficeUtils //{ // public class WordTool // { // private _Application wordApp = null; // private _Document wordDoc = null; // public _Application Application // { // get // { // return wordApp; // } // set // { // wordApp = value; // } // } // public _Document Document // { // get // { // return wordDoc; // } // set // { // wordDoc = value; // } // } // //通过模板创建新文档 // public void CreateNewDocument(string filePath) // { // killWinWordProcess(); // wordApp = new Application(); // wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone; // wordApp.Visible = false; // object missing = System.Reflection.Missing.Value; // object templateName = filePath; // wordDoc = wordApp.Documents.Open(ref templateName, ref missing, // ref missing, ref missing, ref missing, ref missing, ref missing, // ref missing, ref missing, ref missing, ref missing, ref missing, // ref missing, ref missing, ref missing, ref missing); // } // //保存新文件 // public void SaveDocument(string filePath) // { // object fileName = filePath; // object format = WdSaveFormat.wdFormatDocument;//保存格式 // object miss = System.Reflection.Missing.Value; // wordDoc.SaveAs(ref fileName, ref format, ref miss, // ref miss, ref miss, ref miss, ref miss, // ref miss, ref miss, ref miss, ref miss, // ref miss, ref miss, ref miss, ref miss, // ref miss); // //关闭wordDoc,wordApp对象 // object SaveChanges = WdSaveOptions.wdSaveChanges; // object OriginalFormat = WdOriginalFormat.wdOriginalDocumentFormat; // object RouteDocument = false; // wordDoc.Close(ref SaveChanges, ref OriginalFormat, ref RouteDocument); // wordApp.Quit(ref SaveChanges, ref OriginalFormat, ref RouteDocument); // } // //在书签处插入值 // public bool InsertValue(string bookmark, string value) // { // object bkObj = bookmark; // if (wordApp.ActiveDocument.Bookmarks.Exists(bookmark)) // { // wordApp.ActiveDocument.Bookmarks.get_Item(ref bkObj).Select(); // wordApp.Selection.TypeText(value); // return true; // } // return false; // } // //插入表格,bookmark书签 // public Table InsertTable(string bookmark, int rows, int columns, float width) // { // object miss = System.Reflection.Missing.Value; // object oStart = bookmark; // Range range = wordDoc.Bookmarks.get_Item(ref oStart).Range;//表格插入位置 // Table newTable = wordDoc.Tables.Add(range, rows, columns, ref miss, ref miss); // //设置表的格式 // newTable.Borders.Enable = 1; //允许有边框,默认没有边框(为0时报错,1为实线边框,2、3为虚线边框,以后的数字没试过) // newTable.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth050pt;//边框宽度 // if (width != 0) // { // newTable.PreferredWidth = width;//表格宽度 // } // newTable.AllowPageBreaks = false; // return newTable; // } // //合并单元格 表名,开始行号,开始列号,结束行号,结束列号 // public void MergeCell(Microsoft.Office.Interop.Word.Table table, int row1, int column1, int row2, int column2) // { // table.Cell(row1, column1).Merge(table.Cell(row2, column2)); // } // //设置表格内容对齐方式Align水平方向,Vertical垂直方向(左对齐,居中对齐,右对齐分别对应Align和Vertical的值为-1,0,1) // public void SetParagraph_Table(Microsoft.Office.Interop.Word.Table table, int Align, int Vertical) // { // switch (Align) // { // case -1: // table.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft; break;//左对齐 // case0: table.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; break;//水平居中 // case1: table.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; break;//右对齐 // } // switch (Vertical) // { // case -1: // table.Range.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalTop; break;//顶端对齐 // case0: table.Range.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter; break;//垂直居中 // case1: table.Range.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalBottom; break;//底端对齐 // } // } // //设置表格字体 // public void SetFont_Table(Microsoft.Office.Interop.Word.Table table, string fontName, double size) // { // if (size != 0) // { // table.Range.Font.Size = Convert.ToSingle(size); // } // if (fontName != "") // { // table.Range.Font.Name = fontName; // } // } // //是否使用边框,n表格的序号,use是或否 // public void UseBorder(int n, bool use) // { // if (use) // { // wordDoc.Content.Tables[n].Borders.Enable = 1; //允许有边框,默认没有边框(为0时无边框,1为实线边框,2、3为虚线边框,以后的数字没试过) // } // else // { // wordDoc.Content.Tables[n].Borders.Enable = 2; //允许有边框,默认没有边框(为0时无边框,1为实线边框,2、3为虚线边框,以后的数字没试过) // } // } // //设置表格边框 // public void UseBorder(int n, int type) // { // wordDoc.Content.Tables[n].Borders.Enable = type; //允许有边框,默认没有边框(为0时无边框,1为实线边框,2、3为虚线边框,以后的数字没试过) // } // //给表格插入一行,n表格的序号从1开始记 // public void AddRow(int n) // { // object miss = System.Reflection.Missing.Value; // wordDoc.Content.Tables[n].Rows.Add(ref miss); // } // //给表格添加一行 // public void AddRow(Microsoft.Office.Interop.Word.Table table) // { // object miss = System.Reflection.Missing.Value; // table.Rows.Add(ref miss); // } // //给表格插入rows行,n为表格的序号 // public void AddRow(int n, int rows) // { // object miss = System.Reflection.Missing.Value; // Microsoft.Office.Interop.Word.Table table = wordDoc.Content.Tables[n]; // for (int i = 0; i < rows; i++) // { // table.Rows.Add(ref miss); // } // } // //给表格中单元格插入元素,table所在表格,row行号,column列号,value插入的元素 // public void InsertCell(Microsoft.Office.Interop.Word.Table table, int row, int column, string value) // { // table.Cell(row, column).Range.Text = value; // } // //给表格中单元格插入元素,n表格的序号从1开始记,row行号,column列号,value插入的元素 // public void InsertCell(int n, int row, int column, string value) // { // wordDoc.Content.Tables[n].Cell(row, column).Range.Text = value; // } // //给表格插入一行数据,n为表格的序号,row行号,columns列数,values插入的值 // public void InsertCell(int n, int row, int columns, string[] values) // { // Microsoft.Office.Interop.Word.Table table = wordDoc.Content.Tables[n]; // for (int i = 0; i < columns; i++) // { // table.Cell(row, i + 1).Range.Text = values[i]; // } // } // //插入图片 // public void InsertPicture(string bookmark, string picturePath, float width, float hight) // { // object miss = System.Reflection.Missing.Value; // object oStart = bookmark; // Object linkToFile = false; //图片是否为外部链接 // Object saveWithDocument = true; //图片是否随文档一起保存 // object range = wordDoc.Bookmarks.get_Item(ref oStart).Range;//图片插入位置 // wordDoc.InlineShapes.AddPicture(picturePath, ref linkToFile, ref saveWithDocument, ref range); // wordDoc.Application.ActiveDocument.InlineShapes[1].Width = width; //设置图片宽度 // wordDoc.Application.ActiveDocument.InlineShapes[1].Height = hight; //设置图片高度 // } // //在表格中插入图片-Y // public void InsertCell(Microsoft.Office.Interop.Word.Table table, int row, int column, string picturePath, float width, float hight, int idx) // { // Object linkToFile = false; //图片是否为外部链接 // Object saveWithDocument = true; //图片是否随文档一起保存 // object range = table.Cell(row, column).Range;//图片插入位置 // wordDoc.InlineShapes.AddPicture(picturePath, ref linkToFile, ref saveWithDocument, ref range); // wordDoc.Application.ActiveDocument.InlineShapes[idx].Width = width; //设置图片宽度 // wordDoc.Application.ActiveDocument.InlineShapes[idx].Height = hight; //设置图片高度 // } // //插入一段文字,text为文字内容 // public void InsertText(string bookmark, string text) // { // object oStart = bookmark; // object range = wordDoc.Bookmarks.get_Item(ref oStart).Range; // Paragraph wp = wordDoc.Content.Paragraphs.Add(ref range); // wp.Format.SpaceBefore = 6; // wp.Range.Text = text; // wp.Format.SpaceAfter = 24; // wp.Range.InsertParagraphAfter(); // wordDoc.Paragraphs.Last.Range.Text = "\n"; // } // //杀掉winword.exe进程 // public void killWinWordProcess() // { // System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD"); // foreach (System.Diagnostics.Process process in processes) // { // bool b = process.MainWindowTitle == ""; // if (process.MainWindowTitle == "") // { // process.Kill(); // } // } // } // } //}