08
2019
01

c# word 操作系列之word实现代码

bool saveChange = false;  
 //C#操作Word表格操作
object missing = System.Reflection.Missing.Value;  
object template = (object)templateFilePath;  
object filename = (object)saveFilePath;    
object isVisible = missing;  
object readOnly = missing;  
object breakType = Word.WdBreakType.wdSectionBreakNextPage;  
object isSaveChange = (object)saveChange;  
Word.Document doc = null;  
//定义一个Word.Application 对象  
Word.Application WordApp = new Word.ApplicationClass();  
//C#操作Word表格操作之打开文档  
doc = WordApp.Documents.Open(ref template,   
ref missing,ref readOnly,ref missing,   
ref missing, ref missing, ref missing,   
ref missing, ref missing,ref missing,   
ref missing, ref isVisible, ref missing,   
ref missing, ref missing, ref missing);  
 
//C#操作Word表格操作之设置页眉文本  
 
WordApp.ActiveWindow.ActivePane.View.SeekView =  
 Word.WdSeekView.wdSeekCurrentPageHeader;  
WordApp.Selection.WholeStory();  
WordApp.Selection.TypeText( this.m_titleText );  
WordApp.ActiveWindow.ActivePane.View.SeekView =   
Word.WdSeekView.wdSeekMainDocument;  
 
//页面设置,设置页面为纵向布局,设置纸张类型为A4纸  
 
doc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape;  
doc.PageSetup.PageWidth = WordApp.CentimetersToPoints(29.7F);  
doc.PageSetup.PageHeight = WordApp.CentimetersToPoints(21F);  
 
//C#操作Word表格操作之创建表格及设置表格和单元格属性  
 
object autoFitBehavior = Word.WdAutoFitBehavior.wdAutoFitWindow;  
doc.Content.Tables.Add(  
WordApp.Selection.Range, totalCount + 1,   
totalField - keyCount_1, ref missing,   
ref autoFitBehavior);  
 
//C#操作Word表格操作之合并单元隔  
 
doc.Content.Tables[1].Cell(i+1,j).Select();  
object moveUnit = Word.WdUnits.wdLine;  
object moveCount = 1;  
object moveExtend = Word.WdMovementType.wdExtend;  
WordApp.Selection.MoveUp(ref moveUnit,  
 ref moveCount, ref moveExtend);  
WordApp.Selection.Cells.Merge();  
WordApp.Selection.Cells.VerticalAlignment =   
Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;  
 
doc.Content.Tables[1].Cell(i+1,1).Range.Text = “单元格内容填充”  
 
//添加表格行  
 
doc.Content.Tables[0].Rows.Add(ref beforeRow);  
 
//C#操作Word表格操作之添加表格列  
 
doc.Content.Tables[0].Columns.Add(ref beforeColumn);  
 
//文本居中  
WordApp.Selection.ParagraphFormat.Alignment =  
Word.WdParagraphAlignment.wdAlignParagraphCenter;  
WordApp.Selection.Cells.VerticalAlignment =   
Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;  
 
//C#操作Word表格操作之选中单元格文字垂直居中  
 
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);  
 
Word.Table newTable = oDoc.Tables[1];  
object beforeRow = newTable.Rows[1];  
newTable.Rows.Add(ref beforeRow);  
 
Word.Cell cell = newTable.Cell(1, 1);  
cell.Merge(newTable.Cell(1, 2));

人生就是由欲望不满足而痛苦和满足之后无趣这两者所构成。生命没有终极意义。

我们需要在最沉痛的生命观里重新审视当下总让我们痛苦的欲望。

我们诞生在这个世界是被迫的,这是最可怕的事实。

一种理想主义的人生观是:生命的长度无需受制于肉体自然的衰败,它应该是受你的心灵、你的快乐的需要而去自主选择。

public  class  WordAPI
{
    private object _template;
    private object _newWord;
    private Microsoft.Office.Interop.Word.Application wordApp;
    private Microsoft.Office.Interop.Word.Document _wordDocument;
    private object defaultV = System.Reflection.Missing.Value;
    private object documentType;
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="template">模板文件位置</param>
    /// <param name="newWord">保存位置</param>
    public WordAPI(string template,string newWord)
    {
        this._template = template;
        this._newWord = newWord;
        wordApp = new Application();
        documentType = Microsoft.Office.Interop.Word.WdDocumentType.wdTypeDocument;
        _wordDocument = wordApp.Documents.Add(ref _template, ref defaultV, ref documentType, ref defaultV);
    }
    /// <summary>
    /// 设置默认一页行数
    /// </summary>
    /// <param name="size"></param>
    public void SetLinesPage(int size)
    {
        wordApp.ActiveDocument.PageSetup.LinesPage = 40;
    }
    /// <summary>
    /// 设置书签的值
    /// </summary>
    /// <param name="markName">书签名</param>
    /// <param name="markValue">书签值</param>
    public void SetBookMark(string markName, string markValue)
    {
        object _markName =markName;
        try
        {
            _wordDocument.Bookmarks.get_Item(ref _markName).Range.Text = markValue;
        }
        catch
        {
            throw new Exception(markName + "未找到!!");
        }
    }
    /// <summary>
    /// 设置添加页眉
    /// </summary>
    /// <param name="context">内容</param>
    public void SetPageHeader(string context)
    {
        wordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
        wordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
        wordApp.ActiveWindow.ActivePane.Selection.InsertAfter(context);
        wordApp.Selection.ParagraphFormat.Alignment =WdParagraphAlignment.wdAlignParagraphCenter;
        //跳出页眉设置    
        wordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;   
    }
    /// <summary>
    /// 当前位置处插入文字
    /// </summary>
    /// <param name="context">文字内容</param>
    /// <param name="fontSize">字体大小</param>
    /// <param name="fontColor">字体颜色</param>
    /// <param name="fontBold">粗体</param>
    /// <param name="familyName">字体</param>
    /// <param name="align">对齐方向</param>
    public void InsertText(string context, int fontSize, WdColor fontColor, int fontBold,string familyName, WdParagraphAlignment align)
    {
        //设置字体样式以及方向    
        wordApp.Application.Selection.Font.Size = fontSize;
        wordApp.Application.Selection.Font.Bold = fontBold;
        wordApp.Application.Selection.Font.Color = fontColor;
        wordApp.Selection.Font.Name = familyName;
        wordApp.Application.Selection.ParagraphFormat.Alignment = align;
        wordApp.Application.Selection.TypeText(context);   

    }
    /// <summary>
    /// 翻页
    /// </summary>
    public void ToNextPage()
    {
        object breakPage = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
        wordApp.Selection.InsertBreak(ref breakPage);   
    }
    /// <summary>
    /// 焦点移动count段落
    /// </summary>
    /// <param name="count"></param>
    public void MoveParagraph(int count)
    {
        object _count = count;
        object wdP= WdUnits.wdParagraph;//换一段落
        wordApp.Selection.Move(ref wdP, ref _count);
    }
    /// <summary>
    /// 焦点移动count行
    /// </summary>
    /// <param name="count"></param>
    public void MoveRow(int count)
    {
        object _count = count;
        object WdLine =WdUnits.wdLine;//换一行
        wordApp.Selection.Move(ref WdLine, ref _count);
    }
    /// <summary>
    /// 焦点移动字符数
    /// </summary>
    /// <param name="count"></param>
    public void MoveCharacter(int count)
    {
        object _count = count;
        object wdCharacter = WdUnits.wdCharacter;
        wordApp.Selection.Move(ref wdCharacter, ref _count);
    }
    /// <summary>
    /// 插入段落
    /// </summary>
    public void ToNextParagraph()
    {
        wordApp.Selection.TypeParagraph();//插入段落
    }

    /// <summary>
    /// 回车换行
    /// </summary>
    public void ToNextLine()
    {
        wordApp.Selection.TypeParagraph();         
    }
    /// <summary>
    /// 当前位置插入图片
    /// </summary>
    /// <param name="picture"></param>
    public void InsertPicture(string picture)
    {         
        //图片居中显示    
        wordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
        wordApp.Application.Selection.InlineShapes.AddPicture(picture, ref defaultV, ref defaultV, ref defaultV);
    }
    /// <summary>
    /// 添加表格
    /// </summary>
    /// <param name="rowNum"></param>
    /// <param name="cellNum"></param>
    /// <returns></returns>
    public Table CreatTable(int rowNum,int cellNum)
    {
      return  this._wordDocument.Tables.Add(wordApp.Selection.Range, rowNum, cellNum, ref defaultV, ref defaultV);
    }
    /// <summary>
    /// 设置列宽
    /// </summary>
    /// <param name="widths"></param>
    public void SetColumnWidth(float [] widths,Table tb)
    {
        if (widths.Length > 0)
        {
            int len =widths.Length;
            for (int i = 0; i < len; i++)
            {
                tb.Columns[i].Width = widths[i];
            }
        }
    }
    /// <summary>
    /// 合并单元格
    /// </summary>
    /// <param name="tb"></param>
    /// <param name="cells"></param>
    public void MergeColumn(Table tb, Cell[] cells)
    {
        if (cells.Length > 1)
        {
            Cell c = cells[0];
            int len = cells.Length;
            for (int i = 1; i < len; i++)
            {
               c.Merge(cells[i]);
            }
        }
        wordApp.Selection.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;

    }
    /// <summary>
    /// 设置单元格内容
    /// </summary>
    /// <param name="_c"></param>
    /// <param name="v"></param>
    /// <param name="align">对齐方式</param>
    public void SetCellValue(Cell _c, string v, WdParagraphAlignment align)
    {
        wordApp.Selection.ParagraphFormat.Alignment = align;
        _c.Range.Text = v;
    }

    /// <summary>
    /// 保存新文件
    /// </summary>
    public void SaveAsWord()
    {
        object doNotSaveChanges =Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
        try
        {
            object fileFormat = WdSaveFormat.wdFormatRTF;
            _wordDocument.SaveAs(ref _newWord, ref fileFormat, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV,
                ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV, ref defaultV);            
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
           
        }
        finally
        {
            disponse();
        }
    }
    /// <summary>
    /// 释放资源
    /// </summary>
    private void disponse()
    {
        object missingValue = Type.Missing;
        object doNotSaveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
        _wordDocument.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
        wordApp.Application.Quit(ref defaultV, ref defaultV, ref defaultV);
        _wordDocument = null;
        wordApp = null;
    }


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。