public void WordList() { HashSet <string> wordlist = new HashSet <string>(); wordlist = GetWordList(); //Create new document Word.Document newdoc = Globals.ThisAddIn.Application.Documents.Add(); Word.Paragraph pgraph; //Intro text pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Heading 1"]); pgraph.Range.Text = "Word List\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = "This is a proofreading tool. It takes every word in the document, strips the punctuation, removes words that consist only of numbers, and then presents them all in alphabetical order. This is a great way to find typos and inconsistencies.\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.Text = "Capitalization is retained as is. That means that words that appear at the beginning of a sentence will appear capitalized.\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); Word.Section sec = newdoc.Sections[2]; sec.PageSetup.TextColumns.SetCount(3); string[] words = wordlist.ToArray(); Array.Sort(words); pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.Text = string.Join("\n", words) + "\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); newdoc.GrammarChecked = true; }
/// <summary> /// Moves the focus to the appropriate header/footer. /// </summary> /// <param name="SelectionRange">The range containing the target header/footer.</param> /// <param name="sectionIdFinal">The section to be selected.</param> /// <param name="headerFooterId">The header/footer type to be selected.</param> internal static void MoveHeaderFooterFocus(Word.Range SelectionRange, int?sectionIdFinal, Word.WdHeaderFooterIndex?headerFooterId) { if (sectionIdFinal != null && headerFooterId != null) { Word.Window CurrentWindow = SelectionRange.Application.ActiveWindow; try { Word.Section CurrentSection = SelectionRange.Document.Sections[(int)sectionIdFinal]; if (!RedactCommon.GetHeaderFooterVisibility(CurrentSection, (Word.WdHeaderFooterIndex)headerFooterId) || CurrentWindow.View.Type != Word.WdViewType.wdPrintView) { //if that header/footer isn't being shown, we need to fall back into normal view CurrentWindow.View.Type = Word.WdViewType.wdNormalView; CurrentSection.Range.Select(); CurrentWindow.View.SplitSpecial = RedactCommon.GetSplitTypeForStory(SelectionRange.StoryType); } else { //select the appropriate section SelectionRange.Document.Sections[(int)sectionIdFinal].Range.Select(); //jump to the header/footer CurrentWindow.View.SeekView = RedactCommon.GetSeekViewForStory(SelectionRange.StoryType); Thread tTabSwitch = new Thread(StayOnReviewTab); tTabSwitch.Start(Redaction.Properties.Resources.ReviewTab); } } catch (COMException) { System.Diagnostics.Debug.Fail("incorrect header/footer view movement detected"); } } }
private void cmboAllignSlot_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { var app = new Microsoft.Office.Interop.Word.Application(); var doc = new Microsoft.Office.Interop.Word.Document(); doc = app.Documents.Add(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName + "/Template1Bewerkt.docx"); //Hard gecodeerd vanuit template Section s = doc.Sections[6]; //Switch case om de uitlijning correct uit te voeren , Links staat er niet bij omdat dit "default" zo staat. switch (cmboAllignSlot.SelectedItem) { case "Rechts": s.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; break; case "Centreren": s.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; break; default: s.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft; break; } doc.SaveAs2(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName + "/Template1Bewerkt.docx"); doc.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(app); }
private void WelcomeText_Click(object sender, RoutedEventArgs e) { //Word app + document aanmaken + instellen in welk document gewerkt word. var app = new Microsoft.Office.Interop.Word.Application(); var doc = new Microsoft.Office.Interop.Word.Document(); doc = app.Documents.Add(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName + "/Template1Bewerkt.docx"); //Hard gecodeerde Sectie van template aanspreken. Section s = doc.Sections[4]; //Volledige "Afstand" van sectie bepalen. Range r = doc.Sections[4].Range; //Controleren of gebruiker zelf iets ingevuld heeft als text if (!TxtbxWelkomText.Text.Equals("")) { r.Text = TxtbxWelkomText.Text.Trim() + "\n\r"; } else { //Voor geprogrammeerde text voor alle sportclubs. r.Text = "Welkom beste leden bij het begin van het nieuwe jaar, we zijn blij om u nog steeds als lid te zien." + " We hebben natuurlijk nieuwe spullen nodig om het nieuw sportjaar goed in te zetten, dit vind u terug in de tabel hieronder.\n\r"; } //Maken dat de range van de ingetypte woorden niet afkapt. dus zelfs groote instellen r.SetRange(0, r.Text.Length); //toevoegen als paragraaf s.Range.Paragraphs.Add(r); //opslaan &sluiten doc.SaveAs2(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName + "/Template1Bewerkt.docx"); doc.Close(); //Dit om bepaalde achtergrond taken te stoppen. System.Runtime.InteropServices.Marshal.ReleaseComObject(app); }
private void CreateDocument() { Application = new Word.Application { Visible = true }; Document = Application.Documents. Add(ref objMissing, ref objMissing, ref objMissing, ref objMissing); Word.Section section = Document.Sections.First; section.PageSetup.PageHeight = Constants.CreatorConstants.PageSize; section.PageSetup.PageWidth = Constants.CreatorConstants.PageSize; }
private void btn_WordList_Click(object sender, RibbonControlEventArgs e) { Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument; HashSet <string> wordlist = new HashSet <string>(); foreach (Word.Range rng in TextHelpers.GetText(doc)) { string txt = rng.Text; //strip punctuation txt = TextHelpers.StripPunctuation(txt); //get word list HashSet <string> newwords = TextHelpers.ToWords(txt); wordlist.UnionWith(newwords); } //strip words that are all numbers wordlist = TextHelpers.RemoveNumbers(wordlist); //Create new document Word.Document newdoc = Globals.ThisAddIn.Application.Documents.Add(); Word.Paragraph pgraph; //Intro text pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Heading 1"]); pgraph.Range.Text = "Word List\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = "This is a proofreading tool. It takes every word in the document, strips the punctuation, removes words that consist only of numbers, and then presents them all in alphabetical order. This is a great way to find typos and inconsistencies.\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.Text = "Capitalization is retained as is. That means that words that appear at the beginning of a sentence will appear capitalized.\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); Word.Section sec = newdoc.Sections[2]; sec.PageSetup.TextColumns.SetCount(3); string[] words = wordlist.ToArray(); Array.Sort(words); pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.Text = string.Join("\n", words) + "\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); newdoc.GrammarChecked = true; }
public void InsertShape(Word.Document doc) { try { Word.Section sec = doc.Sections[1]; Word.HeaderFooter foo = sec.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary]; Word.Range rng = foo.Range; float leftPos = doc.PageSetup.PageWidth - doc.PageSetup.RightMargin; float topPos = doc.PageSetup.PageHeight - doc.PageSetup.BottomMargin; Word.Shape shp = doc.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, leftPos, topPos, 50, 20, rng); shp.TextFrame.TextRange.Text = "Text"; shp.RelativeVerticalPosition = Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionBottomMarginArea; } catch (Exception) { throw; } }
/// <summary> /// Creates a header graphic /// </summary> public override void CreateHeaderGraphic(string path = null) { try { // add header graphics // save the graphic before its path can be referenced if (!File.Exists(Global.appDataPath + "ACAS.jpg")) { Image i = Resources.Resources.ACAS; // recommended before save Thread.Sleep(30); i.Save(Global.appDataPath + "ACAS.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); } // get the word document range of the header Word.Section firstSection = document.Sections.First; Word.Range headerSectionRange = firstSection.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; // get the shape back, put in the header and resize Word.InlineShape ACASLogo = headerSectionRange.InlineShapes.AddPicture(Global.appDataPath + "ACAS.jpg", false, true); // thread sleep to allow COM interop to catch up Thread.Sleep(100); // scale height and width ACASLogo.ScaleHeight = 55.0F; ACASLogo.ScaleWidth = 55.0F; } catch (ExternalException e) { (new Logger()) .SetLoggingType(Logger.Type.Warning) .SetMessage(e.Message + "Image could not be saved server side") .Display(); } }
/// <summary> /// Gets whether or not a specific header/footer type is visible in a given section. /// </summary> /// <param name="Section">The section to check.</param> /// <param name="HeaderFooterIndex">The header/footer to check for.</param> /// <returns>True if visible, otherwise False.</returns> internal static bool GetHeaderFooterVisibility(Word.Section Section, Word.WdHeaderFooterIndex HeaderFooterIndex) { Word.Range StartOfSection = Section.Range.Duplicate; Word.Range EndOfSection = Section.Range.Duplicate; //set ranges StartOfSection.End = StartOfSection.Start; //get start/end page int StartingPageNumber = (int)StartOfSection.get_Information(Word.WdInformation.wdActiveEndAdjustedPageNumber); int EndingPageNumber = (int)EndOfSection.get_Information(Word.WdInformation.wdActiveEndAdjustedPageNumber); //first page header in use? bool FirstPageVisible = (Section.PageSetup.DifferentFirstPageHeaderFooter == -1); if (FirstPageVisible && HeaderFooterIndex == Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage) { return(true); } //even page header in use? bool EvenPagesInUse = (Section.PageSetup.OddAndEvenPagesHeaderFooter == -1); if (!EvenPagesInUse && HeaderFooterIndex == Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages) { return(false); } if (EndingPageNumber - StartingPageNumber >= 2) { //if there are more than three pages, then the type is definitely showing return(true); } else if (EndingPageNumber - StartingPageNumber == 1) { //if there are two pages, need to check switch (HeaderFooterIndex) { case Word.WdHeaderFooterIndex.wdHeaderFooterPrimary: if (!EvenPagesInUse || !FirstPageVisible) { return(true); } else { return((StartingPageNumber + 1) % 2 != 0); // is next page odd } case Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages: if (!FirstPageVisible) { return(true); } else { return((StartingPageNumber + 1) % 2 == 0); // is next page even } } } // == 1 switch (HeaderFooterIndex) { case Word.WdHeaderFooterIndex.wdHeaderFooterPrimary: if (FirstPageVisible) // first page is showing { return(false); } else if (EvenPagesInUse) // first page not showing and even showing { return(StartingPageNumber % 2 != 0); } else //first page not showing, even not showing { return(true); // is page odd } case Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages: if (FirstPageVisible) // first page is showing { return(false); } else if (EvenPagesInUse) // first page not showing and even showing { return(StartingPageNumber % 2 == 0); } else //first page not showing, even not showing { return(false); // is page odd } } Debug.Fail("should never fall through on visibility"); return(false); }
private void InsertTitleBK(MSWord.Document doc, MSWord.Application app) { int bknum = 6; string bknum_string; mydoc.Bookmarks.DefaultSorting = 0; mydoc.Bookmarks.ShowHidden = false; MSWord.Section mysec = mydoc.Sections.Add(); object unit = MSWord.WdUnits.wdLine; object count = 1; object extend = MSWord.WdMovementType.wdMove; MSWord.Range r = mysec.Range; object rng = (object)r; SqlConnection conn = new SqlConnection(); SqlCommand com = DatabaseClass.ConnectionToCommad(conn, conStr); com.CommandText = "select TitleNum from TitleTable where DocID=@DocID order by TitleNum"; com.Parameters.Clear(); com.Parameters.AddWithValue("DocID", IsEditing.DOCID); SqlDataReader dr = com.ExecuteReader(); while (dr.Read()) { //word书签不支持符合“|”,因此在这里需要转换,使用字符“l” bknum_string = bknum.ToString(); if (bknum_string.Length == 1) { bknum_string = "00" + bknum_string; } else if (bknum_string.Length == 2) { bknum_string = "0" + bknum_string; } string titlenum = dr[0].ToString(); string[] title = titlenum.Split('|'); titlenum = String.Join("l", title); string bkmark = "bk" + bknum_string + "_" + titlenum; mydoc.Bookmarks.Add(bkmark, ref rng); r = GetBKRange(mydoc, bkmark); r.Select(); r.InsertAfter("\n"); msapp.Selection.MoveDown(ref unit, ref count, ref extend); r = msapp.Selection.Range; rng = (object)r; bknum += 1; } DisposeClose.Disposeclose(dr); DisposeClose.Disposeclose(com); DisposeClose.Disposeclose(conn); //最后插入参考文献 bknum_string = bknum.ToString(); if (bknum_string.Length == 1) { bknum_string = "00" + bknum_string; } else if (bknum_string.Length == 2) { bknum_string = "0" + bknum_string; } string bk_bibliography = "bk" + bknum_string + "_bibliography"; mydoc.Bookmarks.Add(bk_bibliography, ref rng); r = GetBKRange(mydoc, bk_bibliography); r.Select(); r.InsertAfter("\n"); msapp.Selection.MoveDown(ref unit, ref count, ref extend); r = msapp.Selection.Range; rng = (object)r; bknum += 1; bknum_string = bknum.ToString(); if (bknum_string.Length == 1) { bknum_string = "00" + bknum_string; } else if (bknum_string.Length == 2) { bknum_string = "0" + bknum_string; } string bk_bcontent = "bk" + bknum_string + "_bcontent"; mydoc.Bookmarks.Add(bk_bcontent, ref rng); }
private void btn_PhraseFrequency_Click(object sender, RibbonControlEventArgs e) { Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument; uint newminlen; uint newmaxlen; UInt32.TryParse(edit_MinPhraseLen.Text, out newminlen); UInt32.TryParse(edit_MaxPhraseLen.Text, out newmaxlen); if ((newminlen != 0) && (newmaxlen != 0) && (newminlen <= newmaxlen)) { Properties.Settings.Default.minphraselen = newminlen; Properties.Settings.Default.maxphraselen = newmaxlen; Properties.Settings.Default.Save(); Dictionary <string, uint> phrases = new Dictionary <string, uint>(); //Iterate through all text foreach (Word.Range rng in TextHelpers.GetText(doc)) { //Break into sentences foreach (Word.Range sentence in rng.Sentences) { //Strip punctuation string nopunc = TextHelpers.StripPunctuation(sentence.Text); nopunc = nopunc.Replace(" ", " "); //Break into words string[] words = nopunc.Split(' '); //Extract phrases for (uint i = newminlen; i <= newmaxlen; i++) { for (int start = 0; start < words.Length - i; start++) { List <string> phraselst = new List <string>(); for (int idx = 0; idx < i; idx++) { phraselst.Add(words[start + idx]); } string phrase = string.Join(" ", phraselst).ToLower(); //Add to data structre if (phrases.ContainsKey(phrase)) { phrases[phrase]++; } else { phrases[phrase] = 1; } } } } } //Display results //Create new document Word.Document newdoc = Globals.ThisAddIn.Application.Documents.Add(); Word.Paragraph pgraph; //Intro text pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Heading 1"]); pgraph.Range.Text = "Phrase Frequency List\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = "Punctuation (other than apostrophes) has been removed. All words have been lowercased for comparison.\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); Word.Section sec = newdoc.Sections[2]; sec.PageSetup.TextColumns.SetCount(2); var phraselist = phrases.Where(x => x.Value > 1).ToList(); phraselist.Sort((pair1, pair2) => pair2.Value.CompareTo(pair1.Value)); foreach (var pair in phraselist) { pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = pair.Key + "\t" + pair.Value.ToString() + "\n"; } pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); newdoc.GrammarChecked = true; } else { MessageBox.Show("The phrase length fields must contain numbers greater than zero, and the minimum length must be less than or equal to the maximum length."); } }
private void btn_WordFreq_Click(object sender, RibbonControlEventArgs e) { ProgressDialog d = new ProgressDialog(); d.Show(); Stopwatch watch = new Stopwatch(); watch.Start(); Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument; Dictionary <string, uint> wordlist = new Dictionary <string, uint>(); Regex re_allnums = new Regex(@"^\d+$"); IEnumerable <Word.Range> textranges = TextHelpers.GetText(doc); d.pbMax = textranges.Count(); d.pbVal = 0; foreach (Word.Range rng in textranges) { d.pbVal++; string txt = rng.Text; //strip punctuation txt = TextHelpers.StripPunctuation(txt); string[] substrs = Regex.Split(txt, @"\s+"); foreach (string word in substrs) { Match m = re_allnums.Match(word); if (!m.Success) { if (word.Trim() != "") { if (wordlist.ContainsKey(word)) { wordlist[word]++; } else { wordlist.Add(word, 1); } } } } } Debug.WriteLine("Counts tabulated. Time elapsed: " + watch.Elapsed.ToString()); watch.Restart(); //Create new document Word.Document newdoc = Globals.ThisAddIn.Application.Documents.Add(); Word.Paragraph pgraph; //Intro text pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Heading 1"]); pgraph.Range.Text = "Word Frequency List\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = "Capitalization is retained as is. That means that words that appear at the beginning of a sentence will appear capitalized. Don't forget that you can sort the table!\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = "Total words found (case sensitive): " + wordlist.Count.ToString() + "\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); Word.Section sec = newdoc.Sections[2]; sec.PageSetup.TextColumns.SetCount(3); var words = wordlist.ToList(); words.Sort((pair1, pair2) => pair2.Value.CompareTo(pair1.Value)); newdoc.Tables.Add(pgraph.Range, words.Count, 2); //newdoc.Tables.Add(pgraph.Range, 1, 2); newdoc.Tables[1].AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitContent); newdoc.Tables[1].AllowAutoFit = true; d.pbMax = words.Count; d.pbVal = 0; int row = 1; foreach (var pair in words) { d.pbVal++; //newdoc.Tables[1].Rows.Add(); Word.Cell cell = newdoc.Tables[1].Cell(row, 1); cell.Range.Text = pair.Key; cell = newdoc.Tables[1].Cell(row, 2); cell.Range.Text = pair.Value.ToString(); row++; } pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); newdoc.GrammarChecked = true; Debug.WriteLine("All done. Time elapsed: " + watch.Elapsed.ToString()); watch.Stop(); d.Hide(); }
private void btn_ProperNouns_Click(object sender, RibbonControlEventArgs e) { Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument; HashSet <string> wordlist = new HashSet <string>(); foreach (Word.Range rng in TextHelpers.GetText(doc)) { string txt = rng.Text; Word.Style style = rng.get_Style(); if (style != null) { Regex re_heading = new Regex(@"(?i)(heading|title|date|toc)"); Match m = re_heading.Match(style.NameLocal); if (m.Success) { continue; } } HashSet <string> propers = new HashSet <string>(); propers = TextHelpers.ProperNouns(txt); wordlist.UnionWith(propers); } //Produce the groupings HashSet <string> capped = TextHelpers.KeepCaps(wordlist); //DoubleMetaphone Dictionary <ushort, List <string> > mpgroups = new Dictionary <ushort, List <string> >(); //Dictionary<string, List<string>> mpgroups = new Dictionary<string, List<string>>(); ShortDoubleMetaphone sdm = new ShortDoubleMetaphone(); //HashSet<string> tested = new HashSet<string>(); foreach (string word in capped) { /* * if (tested.Contains(word)) * { * continue; * } * else * { * tested.Add(word); * } */ sdm.computeKeys(word); ushort pri = sdm.PrimaryShortKey; ushort alt = sdm.AlternateShortKey; if (mpgroups.ContainsKey(pri)) { mpgroups[pri].Add(word); } else { List <string> node = new List <string>(); node.Add(word); mpgroups[pri] = node; } if (mpgroups.ContainsKey(alt)) { mpgroups[alt].Add(word); } else { List <string> node = new List <string>(); node.Add(word); mpgroups[alt] = node; } } //Edit Distance List <string> dtested = new List <string>(); int mindist; int.TryParse(Properties.Settings.Default.mindist, out mindist); if (mindist == 0) { mindist = 2; } Dictionary <string, List <string> > distgroups = new Dictionary <string, List <string> >(); foreach (string word1 in capped) { if (dtested.Contains(word1)) { continue; } else { dtested.Add(word1); } if (word1.Length <= mindist) { continue; } foreach (string word2 in capped) { if (word2.Length <= mindist) { continue; } int dist = TextHelpers.EditDistance(word1, word2); //int percent = (int)Math.Round((dist / word1.Length) * 100.0); if ((dist > 0) && (dist <= mindist)) //if ((dist > 0) && (percent <= distpercent)) { dtested.Add(word2); if (distgroups.ContainsKey(word1)) { distgroups[word1].Add(word2); } else { List <string> node = new List <string>(); node.Add(word2); distgroups[word1] = node; } } } } //Create new document Word.Document newdoc = Globals.ThisAddIn.Application.Documents.Add(); Word.View view = Globals.ThisAddIn.Application.ActiveWindow.View; view.DisplayPageBoundaries = false; Word.Paragraph pgraph; //Intro text pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Heading 1"]); pgraph.Range.Text = "Proper Noun Checker\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = "This tool only looks at words that start with a capital letter. It then uses phonetic comparison and edit distance to find other proper nouns that are similar. Words in all caps (acronyms) are not included.\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.Text = "The system tries to ignore words at the beginning of sentences and in headers. This means some errors may go unseen, so use multiple tools!\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.Text = "Most of what you see here are false positives! That's unavoidable. But it still catches certain otherwise-hard-to-find misspellings.\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); Word.Section sec = newdoc.Sections[2]; sec.PageSetup.TextColumns.SetCount(2); sec.PageSetup.TextColumns.LineBetween = -1; //Distance pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Heading 2"]); //pgraph.KeepWithNext = 0; pgraph.Range.Text = "Edit Distance (" + mindist + ")\n"; foreach (string key in distgroups.Keys) { List <string> group = distgroups[key]; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = key + ", " + string.Join(", ", group) + "\n"; } pgraph.Range.InsertBreak(Word.WdBreakType.wdPageBreak); //pgraph = newdoc.Content.Paragraphs.Add(); //pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); //Word.InlineShape line = pgraph.Range.InlineShapes.AddHorizontalLineStandard(); //line.Height = 2; //line.Fill.Solid(); //line.HorizontalLineFormat.NoShade = true; //line.Fill.ForeColor.RGB = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black); //line.HorizontalLineFormat.PercentWidth = 90; //line.HorizontalLineFormat.Alignment = WdHorizontalLineAlignment.wdHorizontalLineAlignCenter; //sec = newdoc.Sections[3]; //sec.PageSetup.TextColumns.SetCount(2); //sec.PageSetup.TextColumns.LineBetween = -1; //Metaphone pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Heading 2"]); //pgraph.KeepWithNext = 0; pgraph.Range.Text = "Phonetic Comparisons\n"; foreach (ushort key in mpgroups.Keys) { if (key == 65535) { continue; } List <string> group = mpgroups[key]; if (group.Count > 1) { pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = string.Join(", ", group) + "\n"; } } //pgraph = newdoc.Content.Paragraphs.Add(); //pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); newdoc.GrammarChecked = true; }
private void btnKreiraj_Click(object sender, EventArgs e) { Object oMissing = System.Reflection.Missing.Value; Object oTemplatePath;// = "D:\\MyTemplate.dotx"; string oTempName; try { var templejt = context.tblTemplejts.Single <tblTemplejt>(ee => ee.ImeTemp == cmbTemp.Text); indexTemp = templejt.IDTemplejt; var klient = context.tblKlientis.Single <tblKlienti>(ee => ee.ImeFirma == cmbKlient.Text); indexKlient = klient.IDFirma; oTempName = templejt.ImeTemp; oTemplatePath = templejt.LokacijaTemplejt + '/' + oTempName + ".dotx"; } catch (Exception) { MessageBox.Show("Нема доволно аргументи за креирање на понуда!", "Недоволно аргументи", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var Vraboten = context.Vrabotens.Single <Vraboten>(ee => ee.VrabotenID == vrabotenID); var Klient = context.tblKlientis.Single <tblKlienti>(ee => ee.ImeFirma == cmbKlient.Text); wordApp = new Microsoft.Office.Interop.Word.Application(); wordDoc = wordApp.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing); // context ******** foreach (Field myMergeField in wordDoc.Fields) { Range rngFieldCode = myMergeField.Code; String fieldText = rngFieldCode.Text; // ONLY GETTING THE MAILMERGE FIELDS if (fieldText.StartsWith(" MERGEFIELD")) { // THE TEXT COMES IN THE FORMAT OF // MERGEFIELD MyFieldName \\* MERGEFORMAT // THIS HAS TO BE EDITED TO GET ONLY THE FIELDNAME "MyFieldName" int endMerge = fieldText.IndexOf("\\"); int fieldNameLength = fieldText.Length - endMerge; String fieldName = fieldText.Substring(11, endMerge - 11); // GIVES THE FIELDNAMES AS THE USER HAD ENTERED IN .dot FILE fieldName = fieldName.Trim(); // **** FIELD REPLACEMENT IMPLEMENTATION GOES HERE ****// // THE PROGRAMMER CAN HAVE HIS OWN IMPLEMENTATIONS HERE switch (fieldName) { case "korisnik": { myMergeField.Select(); wordApp.Selection.TypeText(Klient.ImeFirma); break; } case "mesto": { myMergeField.Select(); wordApp.Selection.TypeText(Klient.Grad); break; } case "adresa": { myMergeField.Select(); wordApp.Selection.TypeText(Klient.Adresa); break; } case "vaznost": { int mesec = int.Parse(dtVaznost.Value.Month.ToString()); myMergeField.Select(); wordApp.Selection.TypeText(dtVaznost.Value.Day.ToString() + " " + najdiMesec(mesec) + " " + dtVaznost.Value.Year.ToString()); break; } case "izdadenoNa": { int mesec = int.Parse(DateTime.Now.Month.ToString()); myMergeField.Select(); wordApp.Selection.TypeText(DateTime.Now.Day.ToString() + " " + najdiMesec(mesec) + " " + DateTime.Now.Year.ToString()); break; } case "vrabIme": { myMergeField.Select(); wordApp.Selection.TypeText(Vraboten.ImeV); break; } case "vrabPrezime": { myMergeField.Select(); wordApp.Selection.TypeText(Vraboten.PrezimeV); break; } case "stavka": { myMergeField.Select(); // wordApp.Selection.TypeText(""); Microsoft.Office.Interop.Word.Selection wrdSelect = wordApp.Selection; Microsoft.Office.Interop.Word.Table wrdTable = wordDoc.Tables.Add(wrdSelect.Range, 1, 6, ref oMissing, ref oMissing); wrdTable.Range.ParagraphFormat.RightIndent = wordDoc.Paragraphs.RightIndent; wrdTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle; wrdTable.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth075pt; wrdTable.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle; wrdTable.Borders.InsideLineWidth = WdLineWidth.wdLineWidth075pt; wrdTable.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; wrdTable.Columns[1].SetWidth(50, WdRulerStyle.wdAdjustNone); wrdTable.Columns[2].SetWidth(150, WdRulerStyle.wdAdjustNone); wrdTable.Columns[3].SetWidth(60, WdRulerStyle.wdAdjustNone); wrdTable.Columns[4].SetWidth(50, WdRulerStyle.wdAdjustNone); wrdTable.Columns[5].SetWidth(50, WdRulerStyle.wdAdjustNone); wrdTable.Columns[6].SetWidth(50, WdRulerStyle.wdAdjustNone); wrdTable.Cell(1, 1).Range.Text = "Шифра"; wrdTable.Cell(1, 2).Range.Text = "Назив"; wrdTable.Cell(1, 3).Range.Text = "Количина"; wrdTable.Cell(1, 4).Range.Text = "Ед. Мерка"; wrdTable.Cell(1, 5).Range.Text = "Цена"; wrdTable.Cell(1, 6).Range.Text = "Износ"; // wrdTable.Cell(0, 0).Range.SetRange(0,50); for (int i = 0; i < grdStavka.RowCount; i++) { wordDoc.Tables[1].Rows.Add(ref oMissing); wrdTable.Cell(i + 2, 1).Range.Text = grdStavka[0, i].Value.ToString(); wrdTable.Cell(i + 2, 2).Range.Text = grdStavka[1, i].Value.ToString(); wrdTable.Cell(i + 2, 3).Range.Text = grdStavka[2, i].Value.ToString(); wrdTable.Cell(i + 2, 4).Range.Text = grdStavka[3, i].Value.ToString(); wrdTable.Cell(i + 2, 5).Range.Text = grdStavka[4, i].Value.ToString(); wrdTable.Cell(i + 2, 6).Range.Text = grdStavka[5, i].Value.ToString(); } wordDoc.Tables[1].Rows.Add(ref oMissing); wrdTable.Cell(wrdTable.Rows.Count, 1).Merge(wrdTable.Cell(wrdTable.Rows.Count, 5)); wrdTable.Cell(wrdTable.Rows.Count, 1).Range.Text = "Износ"; wrdTable.Cell(wrdTable.Rows.Count, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; wrdTable.Cell(wrdTable.Rows.Count, 2).Range.Text = txtVkupno.Text.ToString(); wordDoc.Tables[1].Rows.Add(ref oMissing); // wrdTable.Cell(wrdTable.Rows.Count, 1).Merge(wrdTable.Cell(wrdTable.Rows.Count, 4)); wrdTable.Cell(wrdTable.Rows.Count, 1).Range.Text = "ДДВ 18%"; wrdTable.Cell(wrdTable.Rows.Count, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; wrdTable.Cell(wrdTable.Rows.Count, 2).Range.Text = txtDDV.Text.ToString(); wordDoc.Tables[1].Rows.Add(ref oMissing); // wrdTable.Cell(wrdTable.Rows.Count, 1).Merge(wrdTable.Cell(wrdTable.Rows.Count, 4)); wrdTable.Cell(wrdTable.Rows.Count, 1).Range.Text = "Вкупно за плаќање"; wrdTable.Cell(wrdTable.Rows.Count, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; wrdTable.Cell(wrdTable.Rows.Count, 2).Range.Text = txtIznos_DDV.Text.ToString(); break; } default: { break; } } } } var addArhivski = new tblArhiva(); context.tblArhivas.InsertOnSubmit(addArhivski); context.SubmitChanges(); // context = new BrziPonudiDataContext(); var posledenArhivski = addArhivski.IDArhivskiBroj; // int idArhivski = addArhivski.IDArhivskiBroj; //imame indextemp od prethodno; int godina = DateTime.Now.Year; string arhivskiBR = posledenArhivski.ToString() + "-" + indexTemp + "-" + godina.ToString(); addArhivski.Arhivskibroj = arhivskiBR; var dokument = new tblDokumenti() { Arhivskibroj = arhivskiBR, IDFirma = indexKlient, IDVraboteni = vrabotenID, DataZaOdgovor = dtVaznost.Value.Date, KalendarskaGodina = godina.ToString(), IzdadenoNa = DateTime.Now, IDTemp = indexTemp, }; context.tblDokumentis.InsertOnSubmit(dokument); context.SubmitChanges(); // context = new BrziPonudiDataContext(); // dokument = context.tblDokumentis.LastOrDefault(); var posledenDokument = dokument.IDDokument; for (int stavkaProizvodi = 0; stavkaProizvodi < grdStavka.RowCount; stavkaProizvodi++) { var stavka = new tblStavka() { IDProizvodPonuda = int.Parse(grdStavka[0, stavkaProizvodi].Value.ToString()), Kolicina = grdStavka[2, stavkaProizvodi].Value.ToString(), Cena = grdStavka[4, stavkaProizvodi].Value.ToString(), IDPonuda = posledenDokument, }; context.tblStavkas.InsertOnSubmit(stavka); } context.SubmitChanges(); // header and footer ********** bool header = true; label1: Microsoft.Office.Interop.Word.Section sec = wordDoc.Sections[1]; Microsoft.Office.Interop.Word.Range rng = sec.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; if (!header) { rng = sec.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; } foreach (Microsoft.Office.Interop.Word.Field fld in rng.Fields) { Range rngFieldCode = fld.Code; String fieldText = rngFieldCode.Text; // if (fld.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldMergeField) if (fieldText.StartsWith(" MERGEFIELD")) { int endMerge = fieldText.IndexOf("\\"); int fieldNameLength = fieldText.Length - endMerge; String fieldName = fieldText.Substring(11, endMerge - 11); // GIVES THE FIELDNAMES AS THE USER HAD ENTERED IN .dot FILE fieldName = fieldName.Trim(); // String dataFieldName = fld.Code.Text.Trim(); if (fieldName == "IDTemp") { fld.Select(); wordApp.Selection.TypeText(indexTemp.ToString()); } if (fieldName == "arhiva") { fld.Select(); wordApp.Selection.TypeText(arhivskiBR); } } } if (!header) { goto label2; } else { header = false; goto label1; } label2: wordDoc.SaveAs(@oTemplatePath + ".docx"); wordApp.Documents.Open(@oTemplatePath + ".docx"); wordDoc.PrintPreview(); }
void prigotviZaPecatenje(int key) { var dok = context.tblDokumentis.Single <tblDokumenti>(ee => ee.IDDokument == key); var Klient = context.tblKlientis.Single <tblKlienti>(ee => ee.IDFirma == dok.IDFirma); var Vraboten = context.Vrabotens.Single <Vraboten>(ee => ee.VrabotenID == dok.IDVraboteni); var templejt = context.tblTemplejts.Single <tblTemplejt>(ee => ee.IDTemplejt == dok.IDTemp); Microsoft.Office.Interop.Word.Application wordApp; Document wordDoc = new Document(); Object oMissing = System.Reflection.Missing.Value; Object oTemplatePath;// = "D:\\MyTemplate.dotx"; string oTempName; oTempName = templejt.ImeTemp; oTemplatePath = templejt.LokacijaTemplejt + '/' + oTempName + ".dotx"; wordApp = new Microsoft.Office.Interop.Word.Application(); wordDoc = wordApp.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing); // context ******** foreach (Field myMergeField in wordDoc.Fields) { Range rngFieldCode = myMergeField.Code; String fieldText = rngFieldCode.Text; // ONLY GETTING THE MAILMERGE FIELDS if (fieldText.StartsWith(" MERGEFIELD")) { // THE TEXT COMES IN THE FORMAT OF // MERGEFIELD MyFieldName \\* MERGEFORMAT // THIS HAS TO BE EDITED TO GET ONLY THE FIELDNAME "MyFieldName" int endMerge = fieldText.IndexOf("\\"); int fieldNameLength = fieldText.Length - endMerge; String fieldName = fieldText.Substring(11, endMerge - 11); // GIVES THE FIELDNAMES AS THE USER HAD ENTERED IN .dot FILE fieldName = fieldName.Trim(); // **** FIELD REPLACEMENT IMPLEMENTATION GOES HERE ****// // THE PROGRAMMER CAN HAVE HIS OWN IMPLEMENTATIONS HERE switch (fieldName) { case "korisnik": { myMergeField.Select(); wordApp.Selection.TypeText(Klient.ImeFirma); break; } case "mesto": { myMergeField.Select(); wordApp.Selection.TypeText(Klient.Grad); break; } case "adresa": { myMergeField.Select(); wordApp.Selection.TypeText(Klient.Adresa); break; } case "vaznost": { myMergeField.Select(); wordApp.Selection.TypeText(dok.DataZaOdgovor.ToString()); break; } case "izdadenoNa": { myMergeField.Select(); wordApp.Selection.TypeText(dok.IzdadenoNa.ToString()); break; } case "vrabIme": { myMergeField.Select(); wordApp.Selection.TypeText(Vraboten.ImeV); break; } case "vrabPrezime": { myMergeField.Select(); wordApp.Selection.TypeText(Vraboten.PrezimeV); break; } case "stavka": { myMergeField.Select(); // wordApp.Selection.TypeText(""); Microsoft.Office.Interop.Word.Selection wrdSelect = wordApp.Selection; Microsoft.Office.Interop.Word.Table wrdTable = wordDoc.Tables.Add(wrdSelect.Range, 1, 6, ref oMissing, ref oMissing); wrdTable.Range.ParagraphFormat.RightIndent = wordDoc.Paragraphs.RightIndent; wrdTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle; wrdTable.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth075pt; wrdTable.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle; wrdTable.Borders.InsideLineWidth = WdLineWidth.wdLineWidth075pt; wrdTable.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; wrdTable.Columns[1].SetWidth(50, WdRulerStyle.wdAdjustNone); wrdTable.Columns[2].SetWidth(150, WdRulerStyle.wdAdjustNone); wrdTable.Columns[3].SetWidth(60, WdRulerStyle.wdAdjustNone); wrdTable.Columns[4].SetWidth(50, WdRulerStyle.wdAdjustNone); wrdTable.Columns[5].SetWidth(50, WdRulerStyle.wdAdjustNone); wrdTable.Columns[6].SetWidth(50, WdRulerStyle.wdAdjustNone); wrdTable.Cell(1, 1).Range.Text = "Шифра"; wrdTable.Cell(1, 2).Range.Text = "Назив"; wrdTable.Cell(1, 3).Range.Text = "Количина"; wrdTable.Cell(1, 4).Range.Text = "Ед. Мерка"; wrdTable.Cell(1, 5).Range.Text = "Цена"; wrdTable.Cell(1, 6).Range.Text = "Износ"; // wrdTable.Cell(0, 0).Range.SetRange(0,50); for (int i = 0; i < grdStavka.RowCount - 1; i++) { wordDoc.Tables[1].Rows.Add(ref oMissing); wrdTable.Cell(i + 2, 1).Range.Text = grdStavka[0, i].Value.ToString(); wrdTable.Cell(i + 2, 2).Range.Text = grdStavka[1, i].Value.ToString(); wrdTable.Cell(i + 2, 3).Range.Text = grdStavka[2, i].Value.ToString(); wrdTable.Cell(i + 2, 4).Range.Text = grdStavka[3, i].Value.ToString(); wrdTable.Cell(i + 2, 5).Range.Text = grdStavka[4, i].Value.ToString(); wrdTable.Cell(i + 2, 6).Range.Text = grdStavka[5, i].Value.ToString(); } wordDoc.Tables[1].Rows.Add(ref oMissing); wrdTable.Cell(wrdTable.Rows.Count, 1).Merge(wrdTable.Cell(wrdTable.Rows.Count, 5)); wrdTable.Cell(wrdTable.Rows.Count, 1).Range.Text = "Износ"; wrdTable.Cell(wrdTable.Rows.Count, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; wrdTable.Cell(wrdTable.Rows.Count, 2).Range.Text = txtVkupno.Text.ToString(); wordDoc.Tables[1].Rows.Add(ref oMissing); // wrdTable.Cell(wrdTable.Rows.Count, 1).Merge(wrdTable.Cell(wrdTable.Rows.Count, 4)); wrdTable.Cell(wrdTable.Rows.Count, 1).Range.Text = "ДДВ 18%"; wrdTable.Cell(wrdTable.Rows.Count, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; wrdTable.Cell(wrdTable.Rows.Count, 2).Range.Text = txtDDV.Text.ToString(); wordDoc.Tables[1].Rows.Add(ref oMissing); // wrdTable.Cell(wrdTable.Rows.Count, 1).Merge(wrdTable.Cell(wrdTable.Rows.Count, 4)); wrdTable.Cell(wrdTable.Rows.Count, 1).Range.Text = "Вкупно за плаќање"; wrdTable.Cell(wrdTable.Rows.Count, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; wrdTable.Cell(wrdTable.Rows.Count, 2).Range.Text = txtIznos_DDV.Text.ToString(); break; } default: { break; } } // header and footer ********** bool header = true; label1: Microsoft.Office.Interop.Word.Section sec = wordDoc.Sections[1]; Microsoft.Office.Interop.Word.Range rng = sec.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; if (!header) { rng = sec.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; } foreach (Microsoft.Office.Interop.Word.Field fld in rng.Fields) { rngFieldCode = fld.Code; fieldText = rngFieldCode.Text; // if (fld.Type == Microsoft.Office.Interop.Word.WdFieldType.wdFieldMergeField) if (fieldText.StartsWith(" MERGEFIELD")) { endMerge = fieldText.IndexOf("\\"); fieldNameLength = fieldText.Length - endMerge; fieldName = fieldText.Substring(11, endMerge - 11); // GIVES THE FIELDNAMES AS THE USER HAD ENTERED IN .dot FILE fieldName = fieldName.Trim(); // String dataFieldName = fld.Code.Text.Trim(); if (fieldName == "IDTemp") { fld.Select(); wordApp.Selection.TypeText(dok.IDTemp.ToString()); } if (fieldName == "arhiva") { fld.Select(); wordApp.Selection.TypeText(dok.Arhivskibroj.ToString()); } } } if (!header) { goto label2; } else { header = false; goto label1; } label2: wordDoc.SaveAs(@oTemplatePath + ".docx"); wordApp.Documents.Open(@oTemplatePath + ".docx"); wordDoc.PrintPreview(); } } }
public void WordFrequencyList() { //ProgressDialog d = new ProgressDialog(); //d.Show(); Stopwatch watch = new Stopwatch(); watch.Start(); Dictionary <string, uint> wordlist = new Dictionary <string, uint>(); wordlist = GetWordFrequencyList(); //Debug.WriteLine("Counts tabulated. Time elapsed: " + watch.Elapsed.ToString()); watch.Restart(); //Create new document Word.Document newdoc = Globals.ThisAddIn.Application.Documents.Add(); Word.Paragraph pgraph; //Intro text pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Heading 1"]); pgraph.Range.Text = "Word Frequency List\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = "Capitalization is retained as is. That means that words that appear at the beginning of a sentence will appear capitalized. Don't forget that you can sort the table!\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.set_Style(newdoc.Styles["Normal"]); pgraph.Range.Text = "Total words found (case sensitive): " + wordlist.Count.ToString() + "\n"; pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); Word.Section sec = newdoc.Sections[2]; sec.PageSetup.TextColumns.SetCount(3); var words = wordlist.ToList(); words.Sort((pair1, pair2) => pair2.Value.CompareTo(pair1.Value)); newdoc.Tables.Add(pgraph.Range, words.Count, 2); //newdoc.Tables.Add(pgraph.Range, 1, 2); newdoc.Tables[1].AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitContent); newdoc.Tables[1].AllowAutoFit = true; //d.pbMax = words.Count; //d.pbVal = 0; int row = 1; foreach (var pair in words) { //d.pbVal++; //newdoc.Tables[1].Rows.Add(); Word.Cell cell = newdoc.Tables[1].Cell(row, 1); cell.Range.Text = pair.Key; cell = newdoc.Tables[1].Cell(row, 2); cell.Range.Text = pair.Value.ToString(); row++; } pgraph = newdoc.Content.Paragraphs.Add(); pgraph.Range.InsertBreak(Word.WdBreakType.wdSectionBreakContinuous); newdoc.GrammarChecked = true; //Debug.WriteLine("All done. Time elapsed: " + watch.Elapsed.ToString()); watch.Stop(); //d.Hide(); }