Класс позволяющий довольно удобно использывать MS Word (позднее связывание):
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Reflection;
namespace MyOffice
{
public class MyWord
{
private object internalWord;
private object objCurDoc=null;
private bool FAutoClose = false;
private bool IsSuccesLast = false;
public bool IsSucces
{
get { bool old = IsSuccesLast; IsSuccesLast = false; return old; }
}
public MyWord (bool AutoClose)
{
FAutoClose = AutoClose;
try
{
Type objClassType;
objClassType = Type.GetTypeFromProgID("Word.Application");
internalWord = Activator.CreateInstance(objClassType);
IsSuccesLast = true;
}
catch
{
IsSuccesLast = false;
}
}
~MyWord()
{
if ((FAutoClose) && (objCurDoc!=null))
{
this.CloseDoc();
}
}
public bool CloseDoc()
{
try
{
//Close Active Document
objCurDoc.GetType().InvokeMember("Close", BindingFlags.InvokeMethod,
null, objCurDoc, null);
objCurDoc = null;
return true;
}
catch
{
return false;
}
}
public bool Quit()
{
try
{
object[] Parameters;
Parameters = new Object[3];
Parameters[0] = 0;
Parameters[1] = 0;
Parameters[2] = false;
internalWord.GetType().InvokeMember("Quit", BindingFlags.SetProperty,
null, internalWord, Parameters);
return true;
}
catch
{
return false;
}
}
public bool ShowWord(bool is_visible)
{
try
{
object[] Parameters;
Parameters = new Object[1];
Parameters[0] = is_visible;
internalWord.GetType().InvokeMember("Visible", BindingFlags.SetProperty,
null, internalWord, Parameters);
return true;
}
catch
{
return false;
}
}
public bool OpenFile(string FileName)
{
try
{
object objDocs_Late = internalWord.GetType().InvokeMember(
"Documents", BindingFlags.GetProperty, null, internalWord, null);
object[] Parameters;
Parameters = new Object[1];
Parameters[0] = FileName;
objCurDoc = objDocs_Late.GetType().InvokeMember("Open",
BindingFlags.InvokeMethod, null, objDocs_Late, Parameters);
return true;
}
catch
{
return false;
}
}
public bool SaveDocument()
{
if (objCurDoc == null) return false;
try
{
objCurDoc.GetType().InvokeMember("Save",
BindingFlags.InvokeMethod, null, objCurDoc, null);
return true;
}
catch
{
return false;
}
}
public bool FindReplace(string findtext, string replacetext)
{
try
{
object[] Parameters;
object objSelection = internalWord.GetType().InvokeMember(
"Selection", BindingFlags.GetProperty, null, internalWord, null);
Parameters = new Object[2];
Parameters[0] = 0;
Parameters[1] = 0;
objSelection.GetType().InvokeMember(
"SetRange", BindingFlags.InvokeMethod, null, objSelection, Parameters);
object objFind = objSelection.GetType().InvokeMember(
"Find", BindingFlags.GetProperty, null, objSelection, null);
Parameters = new Object[11];
Parameters[0] = findtext; //find text
Parameters[1] = false; //match case
Parameters[2] = true; //match whole word
Parameters[3] = false; //match wild card
Parameters[4] = false; //match sounds like
Parameters[5] = false; //match all word forms
Parameters[6] = true; //forward
Parameters[7] = false; //wrap
Parameters[8] = false; //format
Parameters[9] = replacetext; //replace text
Parameters[10] = 2; //replace?
objFind.GetType().InvokeMember("Execute",
BindingFlags.InvokeMethod, null, objFind, Parameters);
return true;
}
catch
{
return false;
}
}
public bool SaveAs(string filename)
{
if (objCurDoc == null) return false;
object[] Parameters = new Object[1];
Parameters[0] = filename; //find text
try
{
objCurDoc.GetType().InvokeMember("SaveAs",
BindingFlags.InvokeMethod, null, objCurDoc, Parameters);
return true;
}
catch
{
return false;
}
}
public bool PrintPreview()
{
if (objCurDoc == null) return false;
try
{
objCurDoc.GetType().InvokeMember("PrintPreview",
BindingFlags.InvokeMethod, null, objCurDoc, null);
return true;
}
catch
{
return false;
}
}
public bool Print()
{
if (objCurDoc == null) return false;
try
{
object[] Parameters = new Object[14];
Parameters[0] = false; //in bacground?
Parameters[0] = Missing.Value; //append
Parameters[0] = 0; //all document wdPrintAllDocument
Parameters[0] = Missing.Value; //Output file name
Parameters[0] = Missing.Value; //From
Parameters[0] = Missing.Value; //To page
Parameters[0] = Missing.Value; //Item?
Parameters[0] = 1; //Copies
Parameters[0] = Missing.Value; //Pages
Parameters[0] = Missing.Value; //Page type?
Parameters[0] = false; //print to file
Parameters[0] = false; //collate
Parameters[0] = Missing.Value; //only for MAC
Parameters[0] = Missing.Value; //Manual duplex
Parameters[0] = Missing.Value; //collate
objCurDoc.GetType().InvokeMember("PrintOut",
BindingFlags.InvokeMethod, null, objCurDoc, null);
return true;
}
catch
{
return false;
}
}
}
}
Автор:
Vadim
на
02:53
Подписаться на:
Комментарии к сообщению (Atom)
0 коммент.:
Отправить комментарий