>> public static void Test_Word() >> { >> Test_ComputeTotalDifference(); >> using (var w = new WordWrapper()) >> { >> w.App.Visible = true; >> w.Doc = w.Docs.Add(); >> w.Sel = w.App.Selection; >> w.SetNarrowMargins(); >> w.Title("Inventory Monitor (PIMON)"); >> w.Heading2("1. Overall Discrepancies"); >> >> w.AddClipboard(); >> w.Heading2("2. Carat Discrepancies"); >> w.Doc.SaveAs(@"C:\docs\WordTest.docx"); >> } >> } >>>>The code breaks here (a method of WordWrapper, see below
>> public void AddClipboard() >> { >> App.Activate(); >> System.Threading.Thread.Sleep(5000); >> Sel.PasteExcelTable(false,false, false); >> var t = Sel.Tables[Sel.Tables.Count]; >> t.Range.Select(); >> Sel.set_Style(App.ActiveDocument.Styles["No Spacing"]); >> t.AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitContent); >> Doc.Paragraphs.Add().Range.Select(); >> Sel.set_Style(App.ActiveDocument.Styles["No Spacing"]); >> Sel.TypeText("\n"); >> } >>>>Here's the method that creates the excel sheet and copies it to the clipboard
>> public static void Test_ComputeTotalDifference() >> { >> Serialization.Deserialize(); >> using (var xl = new ExcelWrapper()) >> { >> xl.wb = xl.wbs.Add(); >> xl.ws = xl.wb.ActiveSheet; >> >>... snip ... >> xl.ws.UsedRange.CopyPicture(); >> >> } >> } >>>>
>> public class ExcelWrapper : IDisposable >> { >> public enum Formats {decimal2,decimal0,date,text} >> public Excel.Application app; >> public Excel.Workbooks wbs; >> public Excel.Workbook wb; >> public Excel.Worksheets wss; >> public Excel.Worksheet ws; >> public Excel.Range rng; >> public bool mustQuit = true; >> CultureInfo originalCulture; >> Thread thread; >> >> bool disposed = false; >> #region "Dispose" >> public ExcelWrapper() >> { >> thread = Thread.CurrentThread; >> originalCulture = thread.CurrentCulture; >> app = new Excel.Application(); >> app.DisplayAlerts = false; >> wbs = app.Workbooks; >> } >> void releaseObject(object o) >> { >> if (o == null) >> { >> return; >> } >> System.Runtime.InteropServices.Marshal.FinalReleaseComObject(o); >> } >> public void Dispose() { >> if (disposed){ >> return; >> } >> // try { wb.Close(); } finally { } >> if (mustQuit) { >> app.Quit(); >> } >> releaseObject(rng); >> releaseObject(ws); >> releaseObject(wss); >> releaseObject(wb); >> releaseObject(wbs); >> thread.CurrentCulture = originalCulture; >> disposed = true; >> } >> ~ExcelWrapper() >> { >> Dispose(); >> } >>>>Similarly here is the Wordwrapper.
>> public WordWrapper() >> { >> thread = Thread.CurrentThread; >> App = new Word.Application(); >> App.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone; >> Docs = App.Documents; >> } >> void releaseObject(object o) >> { >> if (o == null) >> { >> return; >> } >> System.Runtime.InteropServices.Marshal.FinalReleaseComObject(o); >> } >> public void Dispose() >> { >> if (disposed) >> { >> return; >> } >> // try { wb.Close(); } finally { } >> if (MustQuit) >> { >> App.Quit(); >> } >> releaseObject(Doc); >> releaseObject(Docs); >> disposed = true; >> } >> ~WordWrapper() >> { >> Dispose(); >> } >>