private void FormatHeaders(string DocToFormat) { var application = new Word.Application(); Word.Document document = application.Documents.Open(DocToFormat); string imgHeader1 = @"C:\hmz\Stanlib_Logo_Board_Reports.png"; string HeaderLine = @"C:\hmz\Stanlib_HeaderLine.png"; foreach (Word.Section section in document.Sections) { section.PageSetup.DifferentFirstPageHeaderFooter = -1; Word.HeaderFooter header = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary]; lblProcessing.Text = "Processing Headers..."; //wdHeaderFooterFirstPage would be for first page.. header.Shapes.AddPicture(imgHeader1, 0, 1, -15, -15, 137, 51); header.Shapes.AddPicture(HeaderLine, 0, 1, -15, 50, 520, 1); //header.Shapes.AddLine(28, 90, 558, 90); } document.Save(); document.Close(); application.Quit(); }
public static void setPageNum(Word.Application wordApp) { Word.Document myDoc = ActiveDocumentManager.getDefaultAD(); int iPageCount = getTotalPage(myDoc); int iSections = ActiveDocumentManager.getDefaultAD().Range().Sections.Count; for (int i = 1; i <= iSections; i++) { Range rg = ActiveDocumentManager.getDefaultAD().Range().Sections[i].Range; Word.HeaderFooter hf = rg.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary]; hf.Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; hf.Range.Text = "第 页"; hf.PageNumbers.NumberStyle = Word.WdPageNumberStyle.wdPageNumberStyleArabic; hf.PageNumbers.RestartNumberingAtSection = false; //hf.PageNumbers.StartingNumber = 1; //hf.LinkToPrevious = true; //hf.PageNumbers. object alignment = Word.WdPageNumberAlignment.wdAlignPageNumberCenter; object oFirstPage = true; rg.Sections[1].Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.Add(ref alignment, ref oFirstPage); } //throw new Exception(); }
public void ProcHeadersFooters(WORD.HeaderFooter header, WORD.HeaderFooter footer) { header.Range.LanguageID = LocalLang.wdID; footer.Range.LanguageID = LocalLang.wdID; var targetFontHeader = LocalLang.GetLocFont(header.Range.Font.Name); //_SetFontProperty(targetFontHeader, header.Range.Font.Name, header.Range.Font.NameAscii, // header.Range.Font.NameOther); header.Range.Font.Name = targetFontHeader; header.Range.Font.NameAscii = targetFontHeader; header.Range.Font.NameOther = targetFontHeader; var targetFontFooter = LocalLang.GetLocFont(footer.Range.Font.Name); //_SetFontProperty(targetFontFooter, footer.Range.Font.Name, footer.Range.Font.NameAscii, // footer.Range.Font.NameOther); footer.Range.Font.Name = targetFontFooter; footer.Range.Font.NameAscii = targetFontFooter; footer.Range.Font.NameOther = targetFontFooter; if (LocalLang.IsFarEast) { header.Range.LanguageIDFarEast = LocalLang.wdID; header.Range.Font.NameFarEast = targetFontHeader; footer.Range.LanguageIDFarEast = LocalLang.wdID; footer.Range.Font.NameFarEast = targetFontFooter; } if (LocalLang.IsRightToLeft) { header.Range.LanguageIDOther = LocalLang.wdID; header.Range.Font.NameBi = targetFontHeader; footer.Range.LanguageIDOther = LocalLang.wdID; footer.Range.Font.NameBi = targetFontFooter; } }
private void FormatFooters(string DocToFormat) { var application = new Word.Application(); Word.Document document = application.Documents.Open(DocToFormat); string FooterLine = @"C:\hmz\Stanlib_FooterLine.png"; try { foreach (Word.Section section in document.Sections) { section.PageSetup.DifferentFirstPageHeaderFooter = -1; Word.HeaderFooter footer = section.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary]; lblProcessing.Text = "Processing Footers..."; footer.Shapes.AddPicture(FooterLine, 0, 1, -10, -20, 520, 1); footer.PageNumbers.Add(Word.WdPageNumberAlignment.wdAlignPageNumberRight, false); footer.PageNumbers.StartingNumber = 0; footer.Range.InsertBefore("Page "); footer.Range.Font.Size = 8; footer.Range.Font.Name = "Arial"; footer.Range.Font.Bold = 1; } document.Save(); document.Close(); application.Quit(); } catch (Exception el) { MessageBox.Show(el.Message.ToString()); document.Close(); application.Quit(); } /// fix footers }
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; } }
public void GetNewReport(DataTable dt) { object oMissing = System.Reflection.Missing.Value; object unknow = Type.Missing; object start = 0; object end = 0; Microsoft.Office.Interop.Word.Range tableLocation = ActiveDocumentManager.getDefaultAD().Range(ref start, ref end); // 添加页眉 emrTaskPane.wordApp.ActiveWindow.View.Type = Word.WdViewType.wdOutlineView; emrTaskPane.wordApp.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekPrimaryHeader; emrTaskPane.wordApp.ActiveWindow.ActivePane.Selection.InsertAfter(""); emrTaskPane.wordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight; //设置右对齐 emrTaskPane.wordApp.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekMainDocument; //跳出页眉设置 emrTaskPane.wordApp.Selection.ParagraphFormat.LineSpacing = 15f; //设置文档的行间距 //2012-07-29 LiuQi 删除页眉 int c = ActiveDocumentManager.getDefaultAD().Paragraphs[1].Borders.Count; emrTaskPane.wordApp.ActiveWindow.View.SeekView = Microsoft.Office.Interop.Word.WdSeekView.wdSeekCurrentPageHeader; Microsoft.Office.Interop.Word.Application WordApp; Microsoft.Office.Interop.Word.Document WordDoc; WordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); if (c != 0) { Word.HeaderFooter hf = ActiveDocumentManager.getDefaultAD().Sections[1].Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary]; Word.Range r = hf.Range; //r.Start = r.End; r.Select(); Word.Border border = r.Borders[Word.WdBorderType.wdBorderBottom]; border.Visible = false; } //移动焦点并换行 object count = 14; object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine; //换一行; emrTaskPane.wordApp.Selection.MoveDown(ref WdLine, ref count, ref unknow); //移动焦点 emrTaskPane.wordApp.Selection.MoveDown(ref WdLine, ref count, ref unknow); //移动焦点 emrTaskPane.wordApp.Selection.TypeParagraph(); //插入段落 Word.Range range = ActiveDocumentManager.getDefaultAD().Paragraphs.Last.Range; range.Start = ActiveDocumentManager.getDefaultAD().Paragraphs.Last.Range.End; range.Select(); //// range.Text = "病历质量月度评分表" + "(" + comboBox2.Text + "年" + comboBox1.Text + "月)"; if (hz) { range.Text = "各科室现岗病历质检情况一览表"; } else { range.Text = "现岗病历质量评分科室汇总表"; } range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; range.Font.Name = "黑体"; range.Font.Size = 15.5f; range.Start = range.End; range.Select(); range.Text = dateTimePickerStart.Value.ToString() + "至" + dateTimePickerEnd.Value.ToString(); range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; range.Font.Name = "黑体"; range.Font.Size = 10f; range.Start = range.End; range.Select(); ActiveDocumentManager.getDefaultAD().PageSetup.Orientation = Word.WdOrientation.wdOrientPortrait; ActiveDocumentManager.getDefaultAD().PageSetup.PageWidth = emrTaskPane.wordApp.CentimetersToPoints(29.7F); ActiveDocumentManager.getDefaultAD().PageSetup.PageHeight = emrTaskPane.wordApp.CentimetersToPoints(21F); int rows = 0; if (ks || qy) { rows = 9; } else { rows = 8; } Microsoft.Office.Interop.Word.Table newTable = ActiveDocumentManager.getDefaultAD().Tables.Add(emrTaskPane.wordApp.Selection.Range, dt.Rows.Count + 1, rows, ref unknow, ref unknow); //设置表格样式 newTable.Range.Font.Size = 11.0f; newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle; newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle; emrTaskPane.wordApp.Selection.ParagraphFormat.LineSpacing = 15f;//设置文档的行间距 if (ks || qy) { newTable.Cell(1, 1).Range.Text = "科室"; newTable.Cell(1, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 2).Range.Text = "主治医师"; newTable.Cell(1, 2).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 3).Range.Text = "病案号"; newTable.Cell(1, 3).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 4).Range.Text = "住院日期"; newTable.Cell(1, 4).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 5).Range.Text = "住院号"; newTable.Cell(1, 5).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 6).Range.Text = "扣分项目"; newTable.Cell(1, 6).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 7).Range.Text = "扣分原因"; newTable.Cell(1, 7).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 8).Range.Text = "总得分"; newTable.Cell(1, 8).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 9).Range.Text = "等级"; newTable.Cell(1, 9).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Columns[1].Width = 60f; newTable.Columns[2].Width = 60f; newTable.Columns[3].Width = 70f;//能显示三个字 newTable.Columns[4].Width = 65f; newTable.Columns[5].Width = 60f; newTable.Columns[6].Width = 70f; newTable.Columns[7].Width = 220f; newTable.Columns[8].Width = 50f; newTable.Columns[9].Width = 40f; //if (dt.Rows.Count > 0) //{ // try // { // for (int i = 0; i < dt.Rows.Count; i++) // { // newTable.Cell(i + 2, 4).Range.Text = dt.Rows[i]["zyrq"].ToString(); // newTable.Cell(i + 2, 4).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // newTable.Cell(i + 2, 1).Range.Text = dt.Rows[i]["ksmc"].ToString(); // newTable.Cell(i + 2, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // newTable.Cell(i + 2, 2).Range.Text = dt.Rows[i]["ysm"].ToString(); // newTable.Cell(i + 2, 2).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // newTable.Cell(i + 2, 3).Range.Text = dt.Rows[i]["bah"].ToString(); // newTable.Cell(i + 2, 3).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // newTable.Cell(i + 2, 5).Range.Text = dt.Rows[i]["zyh"].ToString(); // newTable.Cell(i + 2, 5).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // newTable.Cell(i + 2, 6).Range.Text = dt.Rows[i]["kfxm"].ToString(); // newTable.Cell(i + 2, 6).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft; // newTable.Cell(i + 2, 7).Range.Text = dt.Rows[i]["kfyy"].ToString(); // newTable.Cell(i + 2, 7).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // newTable.Cell(i + 2, 8).Range.Text = dt.Rows[i]["sdf"].ToString(); // newTable.Cell(i + 2, 8).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // newTable.Cell(i + 2, 9).Range.Text = dt.Rows[i]["pj"].ToString(); // newTable.Cell(i + 2, 9).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; // } // verticalCellMerge(newTable, 2, 1); // verticalCellMerge(newTable, 2, 2); // verticalCellMerge(newTable, 2, 3); // verticalCellMerge(newTable, 2, 4); // verticalCellMerge(newTable, 2, 8); // verticalCellMerge(newTable, 2, 9); // verticalCellMerge(newTable, 2, 5); // // verticalCellMerge(newTable,2,5); // } // catch (Exception ex) // { // MessageBox.Show(ex.ToString()); // } //} if (dt.Rows.Count > 0) { try { for (int i = 0; i < dt.Rows.Count; i++) { newTable.Cell(i + 2, 4).Range.Text = dt.Rows[i]["住院日期"].ToString(); newTable.Cell(i + 2, 4).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 1).Range.Text = dt.Rows[i]["科室"].ToString(); newTable.Cell(i + 2, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 2).Range.Text = dt.Rows[i]["质检医师"].ToString(); newTable.Cell(i + 2, 2).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 3).Range.Text = dt.Rows[i]["病案号"].ToString(); newTable.Cell(i + 2, 3).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 5).Range.Text = dt.Rows[i]["住院号"].ToString(); newTable.Cell(i + 2, 5).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 6).Range.Text = dt.Rows[i]["扣分项目"].ToString(); newTable.Cell(i + 2, 6).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft; newTable.Cell(i + 2, 7).Range.Text = dt.Rows[i]["扣分原因"].ToString(); newTable.Cell(i + 2, 7).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 8).Range.Text = dt.Rows[i]["总得分"].ToString(); newTable.Cell(i + 2, 8).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 9).Range.Text = dt.Rows[i]["评审结果"].ToString(); newTable.Cell(i + 2, 9).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } verticalCellMerge(newTable, 2, 1); verticalCellMerge(newTable, 2, 2); verticalCellMerge(newTable, 2, 3); verticalCellMerge(newTable, 2, 4); verticalCellMerge(newTable, 2, 8); verticalCellMerge(newTable, 2, 9); verticalCellMerge(newTable, 2, 5); // verticalCellMerge(newTable,2,5); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } else { newTable.Cell(1, 1).Range.Text = "科室"; newTable.Cell(1, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 2).Range.Text = "病历质检数"; newTable.Cell(1, 2).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 3).Range.Text = "甲级"; newTable.Cell(1, 3).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 4).Range.Text = "甲级病历率"; newTable.Cell(1, 4).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 5).Range.Text = "乙级"; newTable.Cell(1, 5).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 6).Range.Text = "乙级病历率"; newTable.Cell(1, 6).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 7).Range.Text = "丙级"; newTable.Cell(1, 7).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(1, 8).Range.Text = "丙级病历率"; newTable.Cell(1, 8).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Columns[1].Width = 70f; newTable.Columns[2].Width = 70f; newTable.Columns[3].Width = 70f;//能显示三个字 newTable.Columns[4].Width = 70f; newTable.Columns[5].Width = 70f; newTable.Columns[6].Width = 70f; if (dt.Rows.Count > 0) { int k = 2; for (int i = 0; i < dt.Rows.Count; i++) { decimal bl = Convert.ToDecimal(dt.Rows[i]["病历率"].ToString()); string strbl = (Convert.ToDecimal(bl.ToString("0.00")) * 100).ToString() + "%"; if (i > 0) { if (dt.Rows[i]["科室"].ToString() == dt.Rows[i - 1]["科室"].ToString()) { newTable.Cell(k, 1).Range.Text = dt.Rows[i]["科室"].ToString(); newTable.Cell(k, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(k, 2).Range.Text = dt.Rows[i]["科室质检数"].ToString(); newTable.Cell(k, 2).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; if (dt.Rows[i]["评级"].ToString() == "甲") { newTable.Cell(k, 3).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(k, 3).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(k, 4).Range.Text = strbl; newTable.Cell(k, 4).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } else if (dt.Rows[i]["评级"].ToString() == "乙") { newTable.Cell(k, 5).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(k, 5).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(k, 6).Range.Text = strbl; newTable.Cell(k, 6).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } else if (dt.Rows[i]["评级"].ToString() == "丙") { newTable.Cell(k, 7).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(k, 7).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(k, 8).Range.Text = strbl; newTable.Cell(k, 8).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } } else { k++; newTable.Cell(k, 1).Range.Text = dt.Rows[i]["科室"].ToString(); newTable.Cell(k, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(k, 2).Range.Text = dt.Rows[i]["科室质检数"].ToString();; newTable.Cell(k, 2).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; if (dt.Rows[i]["评级"].ToString() == "甲") { newTable.Cell(k, 3).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(k, 3).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(k, 4).Range.Text = strbl; newTable.Cell(k, 4).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } else if (dt.Rows[i]["评级"].ToString() == "乙") { newTable.Cell(k, 5).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(k, 5).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(k, 6).Range.Text = strbl; newTable.Cell(k, 6).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } else if (dt.Rows[i]["评级"].ToString() == "丙") { newTable.Cell(k, 7).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(k, 7).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(k, 8).Range.Text = strbl; newTable.Cell(k, 8).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } } } else { newTable.Cell(i + 2, 1).Range.Text = dt.Rows[i]["科室"].ToString(); newTable.Cell(i + 2, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 2).Range.Text = dt.Rows[i]["科室质检数"].ToString(); newTable.Cell(i + 2, 2).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; if (dt.Rows[i]["评级"].ToString() == "甲") { newTable.Cell(i + 2, 3).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(i + 2, 3).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 4).Range.Text = strbl; newTable.Cell(i + 2, 4).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } else if (dt.Rows[i]["评级"].ToString() == "乙") { newTable.Cell(i + 2, 5).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(i + 2, 5).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 6).Range.Text = strbl; newTable.Cell(i + 2, 6).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } else if (dt.Rows[i]["评级"].ToString() == "丙") { newTable.Cell(i + 2, 7).Range.Text = dt.Rows[i]["病历数"].ToString(); newTable.Cell(i + 2, 7).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; newTable.Cell(i + 2, 8).Range.Text = strbl; newTable.Cell(i + 2, 8).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } } } //删除多余的行 for (int i = 2; i <= newTable.Rows.Count; i++) { if (newTable.Cell(i, 1).Range.Text == "\r\a") { newTable.Rows[i].Delete(); i = i - 2; } } } } object Line1 = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行; //object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行; emrTaskPane.wordApp.Selection.MoveDown(ref Line1, ref count, ref unknow); //移动焦点 emrTaskPane.wordApp.Selection.MoveDown(ref Line1, ref count, ref unknow); //移动焦点 emrTaskPane.wordApp.Selection.TypeParagraph(); //插入段落 Word.Range range1 = ActiveDocumentManager.getDefaultAD().Paragraphs.Last.Range; range1.Start = ActiveDocumentManager.getDefaultAD().Paragraphs.Last.Range.End; int count2 = newTable.Rows.Count - 1; range1.Select(); range1.Text = "记录数共计" + count2 + "条"; range1.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight; range1.Font.Name = "黑体"; range1.Font.Size = 10f; range1.Start = range.End; //Globals.ThisAddIn.ShowNoteMenu(); //OperationEnableForStat(true); Cursor.Current = Cursors.Default; }
/// <summary> /// Метод, который создает документ Word, в котором содержится информация о текущих пользователях. /// </summary> /// <param name="path">Абсолютный путь к создаваемому файлу.</param> /// <param name="wordDocumentName">Название создаваемого файла.</param> /// <param name="openFileAfterCreate">Необязательный параметр. Отвечает за открытие файла после его создания.</param> public async static void CreateWordUserList(String path, String wordDocumentName, Bool openFileAfterCreate = false) { String fullPath; if (!wordDocumentName.EndsWith(".docx")) { wordDocumentName += ".docx"; } //Проверка на окончание пути. _ = path.EndsWith("\\") ? fullPath = path + wordDocumentName : fullPath = path + "\\" + wordDocumentName; //Так как создание документа затрачивает много времени, этот алгоритм вынесен в отдельный поток. await Task.Run(() => { //Создаем процесс Word. Word.Application appToDo = new Word.Application(); //Создаем документ. Связываем его с созданным ранее процессом. appToDo.Documents.Add(); Word.Document mainDocument = appToDo.Documents[1]; //Производим запись в файл. for (int i = 0; i < ActualProfiles.Count; i++) { /* * <——————————————————————————————————————————————————————————————————————————————————————————————————> * | !Запись в Файл! | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | В данном регионе кода происходит наполнение Word-файла. Разберем этот алгоритм по пунктам: | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | I. Создание Колонтитулов. | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | 1. Создаем экземпляр интерфейса "HeaderFooter". Связываем его с текущей секцией документа. | * | 2. При инициализации указываем, что это Верхний Колонтитул. | * | 3. Настраиваем его свойства: шрифт, стиль, выравнивание. Задаем текст с именем пользователя. | * | 4. Аналогично создаем еще один экземпляр интерфейса, но теперь прописываем номер страницы. | * | 5. У второго колонтитула также изменяем стиль чисел, отвечающих за нумерацию страниц. | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | II. Создание Параграфов. | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | 1. Создаем экземпляр класса Word.Paragraph, связываем его с документом и добавляем сам параграф. | * | 2. Далее используя "Range" мы задаем текст и его свойства. | * | 3. Далее используем функцию ".InsertParagraphAfter()", чтобы завершить параграф. | * | 4. Если следующий параграф не последний, то используем метод "InsertParagraphBefore()", чтобы -> | * | -> красиво расположить текст, создав пробел между строками. | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | III. Завершение. | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | 1. Выполняем проверку на длину файла, чтобы не создавать лишние страницы. | * | 2. Если проверка пройдена, используем метод "Sections.Add()", чтобы создать новую страницу. | * <——————————————————————————————————————————————————————————————————————————————————————————————————> */ #region Область Кода: Заполнение Файла. //Добавляем и настраиваем Верхний Колонтитул с именем текущего пользователя. Word.HeaderFooter currentHeader = appToDo.ActiveDocument.Sections[i + 1].Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary]; currentHeader.Range.Font.Bold = 0; currentHeader.LinkToPrevious = false; currentHeader.Range.Font.Name = "Georgia"; currentHeader.Range.Text = ActualProfiles[i].Name; currentHeader.Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; //Добавляем и настраиваем Нижний Колонтитул с номером текущей страницы. Word.HeaderFooter currentFooter = appToDo.ActiveDocument.Sections[i + 1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary]; currentFooter.Range.Font.Bold = 0; currentFooter.LinkToPrevious = false; currentFooter.Range.Font.Name = "Georgia"; currentFooter.Range.Text = (i + 1).ToString(); currentFooter.PageNumbers.NumberStyle = Word.WdPageNumberStyle.wdPageNumberStyleHanjaRead; currentFooter.Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; //Запись свойства: "Имя Пользователя.". Word.Paragraph userName = mainDocument.Content.Paragraphs.Add(); userName.Range.InsertParagraphBefore(); userName.Range.Text = "Имя Пользователя: " + ActualProfiles[i].Name + ';'; userName.Range.Font.Name = "Georgia"; userName.Range.Font.Bold = 0; userName.Range.InsertParagraphAfter(); //Запись свойства: "Количество побед.". Word.Paragraph userWins = mainDocument.Content.Paragraphs.Add(); userWins.Range.InsertParagraphBefore(); userWins.Range.Text = "Количество побед: " + ActualProfiles[i].Wins + ';'; userWins.Range.Font.Name = "Georgia"; userName.Range.Font.Bold = 0; userWins.Range.InsertParagraphAfter(); //Запись свойства: "Количество игр.". Word.Paragraph userGames = mainDocument.Content.Paragraphs.Add(); userGames.Range.InsertParagraphBefore(); userGames.Range.Text = "Количество игр: " + ActualProfiles[i].AllGames + ';'; userGames.Range.Font.Name = "Georgia"; userName.Range.Font.Bold = 0; userGames.Range.InsertParagraphAfter(); //Заголовок — "Количество побегов.". Word.Paragraph userLeaves = mainDocument.Content.Paragraphs.Add(); userLeaves.Range.InsertParagraphBefore(); userLeaves.Range.Text = "Количество побегов: " + ActualProfiles[i].Leaves + ';'; userLeaves.Range.Font.Name = "Georgia"; userName.Range.Font.Bold = 0; userLeaves.Range.InsertParagraphAfter(); //Заголовок — "Пол пользователя.". Word.Paragraph userGender = mainDocument.Content.Paragraphs.Add(); userGender.Range.InsertParagraphBefore(); userGender.Range.Text = "Пол пользователя: " + ActualProfiles[i].GetStringGender() + ';'; userGender.Range.Font.Name = "Georgia"; userName.Range.Font.Bold = 0; userGender.Range.InsertParagraphAfter(); //Заголовок — "Дата рождения.". Word.Paragraph userBirthTime = mainDocument.Content.Paragraphs.Add(); userBirthTime.Range.InsertParagraphBefore(); userBirthTime.Range.Text = "Дата рождения: " + ActualProfiles[i].BirthTime.ToString("dd.MM.yyyy!"); userBirthTime.Range.Font.Name = "Georgia"; userName.Range.Font.Bold = 0; //Проверка на длину файла. Создана для того, чтобы не создавать лишние страницы. if ((i + 1) < ActualProfiles.Count) { appToDo.ActiveDocument.Sections.Add(); } #endregion } //Защищаем документ от изменений: mainDocument.Protect(Word.WdProtectionType.wdAllowOnlyReading, true, "Checkers!"); //Сохраняем созданный файл по указанному адресу. mainDocument.SaveAs(fullPath); //Описание завершения работы: if (!openFileAfterCreate) { /* * <——————————————————————————————————————————————————————————————————————————————————————————————————> * | !ОЧЕНЬ ВАЖНЫЙ МОМЕНТ! | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | Здесь происходит завершение процесса "WORD.exe": | * | 1. Сначала мы закрываем сам "Документ" (файл); | * | 2. Затем, через метод Quit() мы завершаем работу процесса. | * |——————————————————————————————————————————————————————————————————————————————————————————————————| * | Если работу процесса не завершить, он останется работать на фоне, даже после закрытия программы. | * <——————————————————————————————————————————————————————————————————————————————————————————————————> */ mainDocument.Close(); appToDo.Quit(); } //Однако если пользователь решил развернуть программу, то завершать процесс принудительно не нужно. else { appToDo.Visible = true; } }); }