C# Word操作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;
posted @ 2009-07-13 09:21  老大卫  阅读(954)  评论(1编辑  收藏  举报