138 lines
2.7 KiB
C#
138 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using LBWordLibrary;
|
|
|
|
namespace Volian.MSWord
|
|
{
|
|
public class WordDoc
|
|
{
|
|
private static LBApplicationClass _MyWordApp;
|
|
public static LBApplicationClass MyWordApp
|
|
{
|
|
get
|
|
{
|
|
if (_MyWordApp == null)
|
|
_MyWordApp = new LBApplicationClass();
|
|
return WordDoc._MyWordApp;
|
|
}
|
|
}
|
|
private LBDocumentClass _MyWordDoc;
|
|
public LBDocumentClass MyWordDoc
|
|
{
|
|
get
|
|
{ return _MyWordDoc; }
|
|
}
|
|
private string _DocName;
|
|
public string DocName
|
|
{
|
|
get { return _DocName; }
|
|
set { _DocName = value; }
|
|
}
|
|
public WordDoc(string docName)
|
|
{
|
|
DocName = docName;
|
|
_MyWordDoc = MyWordApp.Documents.Open(_DocName, false);
|
|
}
|
|
public string Save()
|
|
{
|
|
try
|
|
{
|
|
MyWordDoc.SaveAs(DocName, LBWdSaveFormat.wdFormatDocument);
|
|
return "Successful Save";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return string.Format("Error during Doc save - {0}", ex.Message);
|
|
}
|
|
}
|
|
public string Save(string docName)
|
|
{
|
|
DocName = docName;
|
|
return Save();
|
|
}
|
|
public void Close()
|
|
{
|
|
MyWordDoc.Close(false);
|
|
}
|
|
public float SetLineSpacing(float linesPerInch) // if need landscape set too: , bool landscape)
|
|
{
|
|
float retval = 0;
|
|
LBSelection selection = MyWordApp.Selection;
|
|
selection.WholeStory();
|
|
retval = selection.ParagraphFormat.LineSpacing;
|
|
selection.ParagraphFormat.SpaceBefore = 0;
|
|
selection.ParagraphFormat.SpaceAfter = 0;
|
|
selection.ParagraphFormat.LineSpacingRule = LBWdLineSpacing.wdLineSpaceExactly;
|
|
selection.ParagraphFormat.LineSpacing = 72 / linesPerInch;
|
|
return retval;
|
|
}
|
|
public float Length
|
|
{
|
|
get
|
|
{
|
|
try
|
|
{
|
|
return MyWordDoc.Length;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine("Error Getting Length, {0}", ex.Message);
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
public static void CloseApp()
|
|
{
|
|
if(_MyWordApp != null)
|
|
{
|
|
TryToQuit();
|
|
KillWordApps();
|
|
}
|
|
}
|
|
|
|
private static void TryToQuit()
|
|
{
|
|
try
|
|
{
|
|
_MyWordApp.Quit(false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message);
|
|
}
|
|
_MyWordApp=null;
|
|
}
|
|
public static void KillWordApps()
|
|
{
|
|
try
|
|
{
|
|
TerminateProcesses(WordProcesses);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message);
|
|
}
|
|
}
|
|
public static void TerminateProcesses(System.Diagnostics.Process[] wordProcesses)
|
|
{
|
|
foreach (System.Diagnostics.Process proc in wordProcesses)
|
|
{
|
|
// TODO: Determine if Word is Visible
|
|
// If it is let it run
|
|
// otherwise Kill it.
|
|
proc.Kill();
|
|
}
|
|
_MyWordApp = null;
|
|
}
|
|
public static System.Diagnostics.Process[] WordProcesses
|
|
{
|
|
get
|
|
{
|
|
return System.Diagnostics.Process.GetProcessesByName("WINWORD");
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|