public void WriteToRange(Word.Range fullRange) { Word.Range rangeCursor = fullRange; rangeCursor.Collapse(Word.WdCollapseDirection.wdCollapseStart); foreach (ContentItem item in Contents) { switch (item.Type) { case ContentType.Field: Word.Field field = fullRange.Fields.Add(rangeCursor); field.Code.Text = item.Text; field.Code.Font = item.Font; rangeCursor = field.Result; rangeCursor.Collapse(Word.WdCollapseDirection.wdCollapseEnd); break; case ContentType.RangeText: rangeCursor.Text = item.Text; rangeCursor.Font = item.Font; rangeCursor.Collapse(Word.WdCollapseDirection.wdCollapseEnd); break; case ContentType.LineBreak: rangeCursor.InsertBreak(Word.WdBreakType.wdLineBreak); rangeCursor.Collapse(Word.WdCollapseDirection.wdCollapseEnd); break; } } }
public static void PageBreak(ref Microsoft.Office.Interop.Word.Range range) { RangeMoveEnd(ref range); object pagebreak = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak; range.InsertBreak(ref pagebreak); }
public static bool replacSectionBreak(Word.Document Doc) { object findText = "^b"; Word.Range rng = Doc.Range(); while (rng.Find.Execute(findText)) { Object beginPageNext = rng.Start; Object endPageNext = rng.End; Word.Range rangeForBreak = Doc.Range(ref beginPageNext, ref endPageNext); rangeForBreak.Select(); rangeForBreak.InsertBreak(Word.WdBreakType.wdPageBreak); rng = Doc.Range(); } if (Doc.Sections.Count > 1) { return(false); } return(true); }
public void ConvertToWord(Term term1, Term term2, Teacher teacher) { TitlePage(Convert.ToString(term1.beginDate.Year), Convert.ToString(term2.beginDate.Year), teacher); InsertText("Розклад занять і графік роботи в приміщеннях вищого навчального закладу на " + Convert.ToString(term1.beginDate.Year) + "-" + Convert.ToString(term2.beginDate.Year) + " навчальний рік", 1, 14, Word.WdUnderline.wdUnderlineSingle, Word.WdParagraphAlignment.wdAlignParagraphCenter, true); InsertText(term1.name, 1, 12, 0, Word.WdParagraphAlignment.wdAlignParagraphLeft, false); CreateScheduleTable(term1, false); rangeEndOfFile = adoc.Bookmarks.get_Item(ref oEndOfDoc).Range; rangeEndOfFile.InsertBreak(Word.WdBreakType.wdSectionBreakNextPage); InsertText(term2.name, 1, 12, 0, Word.WdParagraphAlignment.wdAlignParagraphLeft, false); CreateScheduleTable(term2, true); InsertText("1. Облік виконання навчальної роботи викладача", 1, Convert.ToInt32(14.5), 0, Word.WdParagraphAlignment.wdAlignParagraphLeft, false); CreateLessonsTable(term1); CreateLessonsTable(term2); InsertFieldWithInitials(teacher.headFullName, teacher.fullName, "Book"); rangeEndOfFile = adoc.Bookmarks.get_Item(ref oEndOfDoc).Range; rangeEndOfFile.InsertBreak(Word.WdBreakType.wdSectionBreakNextPage); CreateReportTable(term1, term2); InsertFieldWithInitials(teacher.headFullName, teacher.fullName, "Album"); //Сохранение документа // object filename = @"TeacherJournal.doc"; // Здесь указать путь до рабочего стола adoc.SaveAs(ref _filename); WordApp.Visible = true; }
private void bgWorker1_DoWork(object sender, DoWorkEventArgs e) { //for (int i = 1; i <= 100; i++) //{ // if (bgWorker1.CancellationPending) // { // e.Cancel = true; // } // else // { // async(); // bgWorker1.ReportProgress(i); // } //} //CreateWordDocument1(txtDeThiMau.Text, sfdTaoDeThi.FileName); //tEnabled(false); try { //List<int> processesbeforegen = getRunningProcesses(); object filename = txtDeThiMau.Text; object saveAs = sfdTaoDeThi.FileName; // int iTenDe = 0; wordApp = new Word.Application(); aDoc_mau = null; wordApp.Visible = false; if (File.Exists((string)filename)) { aDoc_mau = wordApp.Documents.Open(ref filename, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); object _fileDeNhom1 = fileDeNhom1; object _fileDeNhom2 = fileDeNhom2; object _fileDeNhom3 = fileDeNhom3; emptyDoc = wordApp.Documents.Add(); int _numDe = Convert.ToInt32(txtSoDe.Text); int _soLuot = 0;//lưu lại % của tiến trình trước for (int i = 0; i < _numDe; i++) { aDoc_mau.Activate(); //aDoc_mau = wordApp.ActiveDocument; //Copy nội dung file mẫu aDoc_mau.Sections.First.Range.Copy(); emptyDoc.Activate(); oRng = emptyDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara2 = emptyDoc.Content.Paragraphs.Add(ref oRng); oPara2.Range.PasteAndFormat(WdRecoveryType.wdFormatOriginalFormatting);//paste tiêu đề và giữa nguyên định dạng //Find and replace: iTenDe++; this.FindAndReplace(wordApp, "$KYTHI$", txtHocKy.Text); this.FindAndReplace(wordApp, "$MONTHI$", txtHocPhan.Text); this.FindAndReplace(wordApp, "$DOITUONG$", txtDoiTuong.Text); this.FindAndReplace(wordApp, "$HINHTHUCTHI$", txtHinhThucThi.Text); this.FindAndReplace(wordApp, "$THOIGIAN$", txtThoiGian.Text); this.FindAndReplace(wordApp, "$NGAYTHI$", dtpNgayThi.Value.ToShortDateString()); this.FindAndReplace(wordApp, "$NGAYTHI$", iTenDe.ToString()); //Mở file nhóm đề 1 để copy vào file mẫu aDoc_Nhom1 = wordApp.Documents.Open(ref _fileDeNhom1, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); aDoc_Nhom1.Activate(); // var copyFrom = aDoc_Nhom1.Tables[dsNhom1[i]].Rows[1].Cells[1].Range; int start = emptyDoc.Content.End - 1; int end = emptyDoc.Content.End; var copyTo = emptyDoc.Range(start, end); copyFrom.MoveEnd(WdUnits.wdCharacter, -1); copyTo.FormattedText = copyFrom.FormattedText; //Thay thế chữ "Câu hỏi" bằng "Câu 1 (2 điểm)" //copyTo.SetRange(start + 7, start + 7); this.FindAndReplace(wordApp, "Câu hỏi", "Câu 1 (2 điểm)"); //Thêm 1 mark dòng copyTo.InsertParagraphAfter(); copyTo.SetRange(end, end); //Close Document: aDoc_Nhom1.Close(ref missing, ref missing, ref missing); //Kết thúc đọc file nhóm 1 //Mở file nhóm đề 2 để copy vào file mẫu aDoc_Nhom2 = wordApp.Documents.Open(ref _fileDeNhom2, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); aDoc_Nhom2.Activate(); // var copyFrom2 = aDoc_Nhom2.Tables[dsNhom2[i]].Rows[1].Cells[1].Range; var start2 = emptyDoc.Content.End - 1; var end2 = emptyDoc.Content.End; var copyTo2 = emptyDoc.Range(start2, end2); copyFrom2.MoveEnd(WdUnits.wdCharacter, -1); copyTo2.FormattedText = copyFrom2.FormattedText; this.FindAndReplace(wordApp, "Câu hỏi", "Câu 2 (4 điểm)"); //Thêm 1 mark dòng copyTo2.InsertParagraphAfter(); //copyTo2.InsertParagraphAfter(); copyTo2.SetRange(end2, end2); //Close Document: aDoc_Nhom2.Close(ref missing, ref missing, ref missing); //Kết thúc đọc file nhóm 2 aDoc_Nhom3 = wordApp.Documents.Open(ref _fileDeNhom3, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); aDoc_Nhom3.Activate(); // var copyFrom3 = aDoc_Nhom3.Tables[dsNhom3[i]].Rows[1].Cells[1].Range; var start3 = emptyDoc.Content.End - 1; var end3 = emptyDoc.Content.End; var copyTo3 = emptyDoc.Range(start3, end3); copyFrom3.MoveEnd(WdUnits.wdCharacter, -1); copyTo3.FormattedText = copyFrom3.FormattedText; this.FindAndReplace(wordApp, "Câu hỏi", "Câu 3 (4 điểm)"); //Thêm 1 mark dòng copyTo3.InsertParagraphAfter(); copyTo3.SetRange(end3, end3); //Close Document: aDoc_Nhom3.Close(ref missing, ref missing, ref missing); //Kết thúc đọc file nhóm 3 //Thêm text ghi chú sử dụng tài liệu //var start4 = emptyDoc.Content.End - 1; //var end4 = emptyDoc.Content.End; //var copyTo4 = emptyDoc.Range(start4, end4); //copyTo4.SetRange(end4, end4); oRng = emptyDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara = emptyDoc.Content.Paragraphs.Add(ref oRng); //add paragraph at end of document oPara.Range.Text = "Không được sử dụng tài liệu"; //add some text in paragraph oPara.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; oPara.Range.Font.Bold = 1; oPara.Format.SpaceAfter = 10; //define some style oPara.Range.InsertParagraphAfter(); wrdRng = emptyDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; wrdRng.InsertBreak(ref oPageBreak); // if (bgWorker1.CancellationPending) { e.Cancel = true; } else { async(); int j; for (j = _soLuot; j < (i + 1) * 100 / _numDe; j++) { bgWorker1.ReportProgress(j); } _soLuot = j + 1; //bgWorker1.ReportProgress((i + 1) * 100 / _numDe); } } //Save as: filename emptyDoc.SaveAs2(ref saveAs, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); emptyDoc.Close(ref missing, ref missing, ref missing); } else { MessageBox.Show("file dose not exist."); return; } //Close Document: aDoc_mau.Close(ref missing, ref missing, ref missing); //MessageBox.Show("File created."); processesaftergen = getRunningProcesses(); killProcesses(processesbeforegen, processesaftergen); } catch (Exception ex) { MessageBox.Show("Lỗi"); emptyDoc.Close(ref missing, ref missing, ref missing); aDoc_mau.Close(ref missing, ref missing, ref missing); aDoc_Nhom1.Close(ref missing, ref missing, ref missing); aDoc_Nhom2.Close(ref missing, ref missing, ref missing); aDoc_Nhom3.Close(ref missing, ref missing, ref missing); wordApp.Quit(); processesaftergen = getRunningProcesses(); killProcesses(processesbeforegen, processesaftergen); } }
public static string TestWord() { string report = "Chưa kiểm tra Word."; //kt word object oMissing = System.Reflection.Missing.Value; object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ Word._Application oWord; Word._Document oDoc; oWord = new Word.Application(); oWord.Visible = true; oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing); //Insert a paragraph at the beginning of the document. Word.Paragraph oPara1; oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing); oPara1.Range.Text = "hello word "; oPara1.Range.Font.Bold = 1; oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph. oPara1.Range.InsertParagraphAfter(); //Insert a paragraph at the end of the document. Word.Paragraph oPara2; object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara2 = oDoc.Content.Paragraphs.Add(ref oRng); oPara2.Range.Text = "xin chao"; oPara2.Format.SpaceAfter = 6; oPara2.Range.InsertParagraphAfter(); //Insert another paragraph. Word.Paragraph oPara3; oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara3 = oDoc.Content.Paragraphs.Add(ref oRng); oPara3.Range.Text = "Bây giờ đây là một bảng:"; oPara3.Range.Font.Bold = 0; oPara3.Format.SpaceAfter = 24; oPara3.Range.InsertParagraphAfter(); //Insert a 3 x 5 table, fill it with data, and make the first row //bold and italic. Word.Table oTable; Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing); oTable.Range.ParagraphFormat.SpaceAfter = 6; int r, c; string strText; for (r = 1; r <= 3; r++) { for (c = 1; c <= 5; c++) { strText = "r" + r + "c" + c; oTable.Cell(r, c).Range.Text = strText; } } oTable.Rows[1].Range.Font.Bold = 1; oTable.Rows[1].Range.Font.Italic = 1; //Add some text after the table. Word.Paragraph oPara4; oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara4 = oDoc.Content.Paragraphs.Add(ref oRng); oPara4.Range.InsertParagraphBefore(); oPara4.Range.Text = "bang khac:"; oPara4.Format.SpaceAfter = 24; oPara4.Range.InsertParagraphAfter(); //Insert a 5 x 2 table, fill it with data, and change the column widths. wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing); oTable.Range.ParagraphFormat.SpaceAfter = 6; for (r = 1; r <= 5; r++) { for (c = 1; c <= 2; c++) { strText = "r" + r + "c" + c; oTable.Cell(r, c).Range.Text = strText; } } oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2 oTable.Columns[2].Width = oWord.InchesToPoints(3); //Keep inserting text. When you get to 7 inches from top of the //document, insert a hard page break. object oPos; double dPos = oWord.InchesToPoints(7); oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter(); do { wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; wrdRng.ParagraphFormat.SpaceAfter = 6; wrdRng.InsertAfter("A line of text"); wrdRng.InsertParagraphAfter(); oPos = wrdRng.get_Information (Word.WdInformation.wdVerticalPositionRelativeToPage); }while (dPos >= Convert.ToDouble(oPos)); object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd; object oPageBreak = Word.WdBreakType.wdPageBreak; wrdRng.Collapse(ref oCollapseEnd); wrdRng.InsertBreak(ref oPageBreak); wrdRng.Collapse(ref oCollapseEnd); wrdRng.InsertAfter("bieu do:"); wrdRng.InsertParagraphAfter(); //Insert a chart. Word.InlineShape oShape; object oClassType = "MSGraph.Chart.8"; wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); //Demonstrate use of late bound oChart and oChartApp objects to //manipulate the chart object with MSGraph. object oChart; object oChartApp; oChart = oShape.OLEFormat.Object; oChartApp = oChart.GetType().InvokeMember("Application", BindingFlags.GetProperty, null, oChart, null); //Change the chart type to Line. object[] Parameters = new Object[1]; Parameters[0] = 4; //xlLine = 4 oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty, null, oChart, Parameters); //Update the chart image and quit MSGraph. oChartApp.GetType().InvokeMember("Update", BindingFlags.InvokeMethod, null, oChartApp, null); oChartApp.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, oChartApp, null); //... If desired, you can proceed from here using the Microsoft Graph //Object model on the oChart and oChartApp objects to make additional //changes to the chart. //Set the width of the chart. oShape.Width = oWord.InchesToPoints(6.25f); oShape.Height = oWord.InchesToPoints(3.57f); //Add text after the chart. wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; wrdRng.InsertParagraphAfter(); wrdRng.InsertAfter("THE END."); oDoc.SaveAs("MyFile.doc", ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); oWord.Quit(); report += "\nĐÃ KIỂM TRA Word"; return(report); }
public void WordIntro(string nameReport, string author, string dateTime) { wordapp = new Word.Application(); wordapp.Visible = true; worddoc = wordapp.Documents.Add(); worddoc.SaveAs(tmpFolder + reportName); engine.Initialize(); engine.Evaluate("library(readxl)"); engine.Evaluate("library(Hmisc)"); DataFrame dataset = engine.Evaluate("dataset").AsDataFrame(); for (iter = 1; iter++ <= 10; worddoc.Paragraphs.Add()) { ; } worddoc.Paragraphs.Add(); wrange = worddoc.Paragraphs[iter++].Range; wrange.Font.Size = 36; wrange.Font.Bold = 1; if (nameReport == "") { wrange.Text = "Тема отчета не задана!"; } else { wrange.Text = nameReport; } string title = wrange.Text; wrange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; for (iter = 11; iter++ <= 12; worddoc.Paragraphs.Add()) { ; } worddoc.Paragraphs.Add(); wrange = worddoc.Paragraphs[iter++].Range; wrange.Font.Size = 24; wrange.Font.Bold = 0; if (author == "") { wrange.Text = "Автор не задан!"; } else { wrange.Text = author; } wrange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; worddoc.Paragraphs.Add(); wrange = worddoc.Paragraphs[iter++].Range; wrange.Font.Size = 20; wrange.Font.Bold = 0; wrange.Text = dateTime; wrange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; worddoc.Paragraphs.Add(); wrange = worddoc.Paragraphs[iter++].Range; wrange.InsertBreak(); worddoc.Paragraphs.Add(); wrange = worddoc.Paragraphs[iter++].Range; wrange.Font.Size = 24; wrange.Font.Bold = 1; wrange.Text = "Описание данных:"; wrange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; worddoc.Paragraphs.Add(); wrange = worddoc.Paragraphs[iter++].Range; wrange.Font.Size = 14; wrange.Font.Bold = 0; wrange.Text = "Для анализа были взяты данные из открытых источников. " + "Данные содержат " + numRecords.ToString() + " записей и " + numVars.ToString() + " переменных."; }
private void bgWorker1_DoWork(object sender, DoWorkEventArgs e) { try { if (bgWorker1.CancellationPending) { e.Cancel = true; } else { //Lấy thông tin từ class static if (InfoTest.DanhSachNhomCauHoi.Count == 0) { //MessageBox.Show("dto moi them = " + InfoTest.DanhSachNhomCauHoi[0].DuongDan + "; điểm = " + InfoTest.DanhSachNhomCauHoi[0].Diem.ToString()); MessageBox.Show("Không có dữ liệu", "Thông tin", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // string sKyThi = InfoTest.sKyThi; string sMonThi = InfoTest.sMonThi; string sDoiTuong = InfoTest.sDoiTuong; string sHinhThucThi = InfoTest.sHinhThucThi; string sThoiGian = InfoTest.sThoiGian; string sNgayThangNamThi = InfoTest.sNgayThi + "/" + InfoTest.sThangThi + "/" + InfoTest.sNamThi; int iSoDe = InfoTest.iSoDe;//_soDe là số đề cần tạo ra Được tính từ MaDeTu và MaDeDen // ArrayList dsCauHoiBoDe = new ArrayList(); int iSoCauMax; //n là số câu max trong danh sách câu nhóm 1 int k = 0; int iPhanTramCongViec = 0; //j là số % công việc đang thực hiện //TẠO DANH SACH CÂU HỎI CHO BỘ ĐỀ ĐẢM BẢO YÊU CẦU for (int iNhom = 0; iNhom < InfoTest.DanhSachNhomCauHoi.Count; iNhom++) //Làm từng đề lần lượt { iSoCauMax = InfoTest.DanhSachNhomCauHoi[iNhom].SoCau; List <int> tmp = CreateListTest(iSoCauMax, iSoDe, k); //string ds1 = ""; //foreach (int m in tmp) //{ // ds1 = ds1 + m.ToString() + " "; //} //MessageBox.Show("DS câu nhóm " + iNhom.ToString() +": " + ds1); dsCauHoiBoDe.Add(tmp); k++; } //% mở đề thi mẫu bgWorker1.ReportProgress(5); //Mở MS Word rồi tạo file đề thi để chuẩn bị copy nội dung Word.Application wordApp = new Word.Application(); wordApp.Visible = false; object filename = InfoTest.sThuMucDeMau + "\\DeThiMau3.docx"; List <int> processesbeforegen = getRunningProcesses(); Word.Document docDeThiMau = wordApp.Documents.Open(ref filename, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);; Word.Document emptyDoc = null; //Tạo tệp tin đề thi emptyDoc = wordApp.Documents.Add(); Word.Document emptyDoc1 = null; //Tạo tệp tin đáp án đề thi emptyDoc1 = wordApp.Documents.Add(); string sTenDe = ""; for (int _iSoDe = 0; _iSoDe < iSoDe; _iSoDe++) //Xét từng đề { //% Tạo đề thi thứ nhất bgWorker1.ReportProgress((_iSoDe + 1) * 100 / iSoDe); iPhanTramCongViec = iPhanTramCongViec + 100 / iSoDe;//Cập nhật % hiện đã hoàn thành InfoTest.iDeThiDangTao = _iSoDe + 1; // docDeThiMau.Activate(); //Copy nội dung file mẫu docDeThiMau.Sections.First.Range.Copy(); //Paste vào tệp tin ĐỀ THI emptyDoc.Activate(); oRng = emptyDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara2 = emptyDoc.Content.Paragraphs.Add(ref oRng); oPara2.Range.PasteAndFormat(Microsoft.Office.Interop.Word.WdRecoveryType.wdFormatOriginalFormatting); //paste tiêu đề và giữa nguyên định dạng //Find and replace: sTenDe = InfoTest.DanhSachTenDeThi[_iSoDe]; //Lấy tên đề trong danh sách tên đề // while (sTenDe.Length < 2) { sTenDe = '0' + sTenDe; } this.FindAndReplace(wordApp, "$KYTHI$", sKyThi); this.FindAndReplace(wordApp, "$MONTHI$", sMonThi); this.FindAndReplace(wordApp, "$DOITUONG$", sDoiTuong); this.FindAndReplace(wordApp, "$HINHTHUCTHI$", sHinhThucThi); this.FindAndReplace(wordApp, "$THOIGIAN$", sThoiGian); this.FindAndReplace(wordApp, "$NGAYTHI$", sNgayThangNamThi); this.FindAndReplace(wordApp, "$MADE$", sTenDe.ToString()); //Paste vào tệp tin ĐÁP ÁN ĐỀ THI emptyDoc1.Activate(); oRng = emptyDoc1.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara2 = emptyDoc1.Content.Paragraphs.Add(ref oRng); oPara2.Range.PasteAndFormat(Microsoft.Office.Interop.Word.WdRecoveryType.wdFormatOriginalFormatting); //paste tiêu đề và giữa nguyên định dạng //Find and replace: sTenDe = InfoTest.DanhSachTenDeThi[_iSoDe]; //Lấy tên đề trong danh sách tên đề // while (sTenDe.Length < 3) { sTenDe = '0' + sTenDe; } this.FindAndReplace(wordApp, "$KYTHI$", sKyThi); this.FindAndReplace(wordApp, "$MONTHI$", sMonThi); this.FindAndReplace(wordApp, "$DOITUONG$", sDoiTuong); this.FindAndReplace(wordApp, "$HINHTHUCTHI$", sHinhThucThi); this.FindAndReplace(wordApp, "$THOIGIAN$", sThoiGian); this.FindAndReplace(wordApp, "$NGAYTHI$", sNgayThangNamThi); this.FindAndReplace(wordApp, "$MADE$", sTenDe.ToString()); //Paste nội dung chi tiết for (int i = 0; i < InfoTest.DanhSachNhomCauHoi.Count; i++) //Mở từng nhóm file { object _fileNhom = InfoTest.DanhSachNhomCauHoi[i].DuongDan; //Lấy đường dẫn nhóm file Word.Document docNhom = null; docNhom = wordApp.Documents.Open(ref _fileNhom, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); docNhom.Activate(); //---------------Paste ĐỀ THI List <int> tt = (List <int>)dsCauHoiBoDe[i]; docNhom.Tables[tt[_iSoDe]].Rows[1].Cells[1].Range.Copy();//Lấy cùng vị trí câu trong từng nhóm câu hỏi // Select the last table. // For this demo, the table has size of 3*4 (row * column). int totalTables = emptyDoc.Tables.Count; Microsoft.Office.Interop.Word.Table tab = emptyDoc.Tables[totalTables]; Microsoft.Office.Interop.Word.Range range = tab.Range; // Moves the cursor to the first cell of target row. range.Start = tab.Rows[tab.Rows.Count].Cells[1].Range.Start; range.End = range.Start; // Paste values to target row. range.Paste(); // Insert a new row after the last row. if (i != InfoTest.DanhSachNhomCauHoi.Count - 1) { tab.Rows.Add(ref missing); } //-------------Kết thúc Paste ĐỀ THI //------------------------------------------------- //---------------Paste ĐÁP ÁN ĐỀ THI List <int> tt1 = (List <int>)dsCauHoiBoDe[i]; docNhom.Tables[tt1[_iSoDe]].Range.Copy();//Lấy cùng vị trí câu trong từng nhóm câu hỏi // Select the last table. // For this demo, the table has size of 3*4 (row * column). int totalTables1 = emptyDoc1.Tables.Count; Microsoft.Office.Interop.Word.Table tab1 = emptyDoc1.Tables[totalTables]; Microsoft.Office.Interop.Word.Range range1 = tab1.Range; // Moves the cursor to the first cell of target row. range1.Start = tab1.Rows[tab1.Rows.Count].Cells[1].Range.Start; range1.End = range1.Start; // Paste values to target row. range1.Paste(); //-------------Kết thúc Paste ĐÁP ÁN ĐỀ THI // #region "Sao chép chỉ nội dung của cell" //List<int> tt = (List<int>)dsCauHoiBoDe[i]; //var copyFrom = docNhom.Tables[tt[_iSoDe]].Rows[1].Cells[1].Range;//Lấy cùng vị trí câu trong từng nhóm câu hỏi //int start = emptyDoc.Content.End - 1; //int end = emptyDoc.Content.End; //var copyTo = emptyDoc.Range(start, end); //copyFrom.MoveEnd(Microsoft.Office.Interop.Word.WdUnits.wdCharacter, -1); //copyTo.FormattedText = copyFrom.FormattedText; #endregion //----------------ĐỀ THI_Thay thế chữ "Câu hỏi" bằng "Câu 1 (2 điểm)" string tenCauHoi = ""; int tenCau; tenCau = i + 1; tenCauHoi = InfoTest.sTenCau + " " + tenCau.ToString() + " (" + InfoTest.DanhSachNhomCauHoi[i].Diem + " điểm)"; emptyDoc.Activate(); this.FindAndReplace(wordApp, "Câu hỏi", tenCauHoi); //-------------------ĐỀ THI-kết thúc //----------------ĐÁP ÁN ĐỀ THI_Thay thế chữ "Câu hỏi" bằng "Câu 1 (2 điểm)" emptyDoc1.Activate(); this.FindAndReplace(wordApp, "Câu hỏi", tenCauHoi); //-------------------ĐÁP ÁN ĐỀ THI-kết thúc ////Thêm 1 mark dòng //copyTo.InsertParagraphAfter(); //copyTo.SetRange(end, end); //Close Document: docNhom.Close(ref missing, ref missing, ref missing); //Kết thúc đọc file nhóm } //-----------ĐỀ THI - Thêm giải thích oRng = emptyDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; if (InfoTest.sGiaiThich != "") //Nếu có thêm giải thích { oPara = emptyDoc.Content.Paragraphs.Add(ref oRng); //add paragraph at end of document //oPara.Range.Font.Name = "Arial"; oPara.Range.Text = InfoTest.sGiaiThich; //"Không được sử dụng tài liệu"; //add some text in paragraph oPara.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; oPara.Range.Font.Bold = 1; oPara.Format.SpaceAfter = 10; //define some style oPara.Range.InsertParagraphAfter(); } if (_iSoDe != iSoDe - 1) { ////Thêm 1 ngắt trang, chuyển sang đề tiếp theo wrdRng = emptyDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; wrdRng.InsertBreak(ref oPageBreak); } //-------------kết thúc ĐỀ THI - Thêm giải thích //-----------ĐÁP ÁN ĐỀ THI - Thêm giải thích oRng = emptyDoc1.Bookmarks.get_Item(ref oEndOfDoc).Range; if (InfoTest.sGiaiThich != "") //Nếu có thêm giải thích { oPara = emptyDoc1.Content.Paragraphs.Add(ref oRng); //add paragraph at end of document //oPara.Range.Font.Name = "Arial"; oPara.Range.Text = InfoTest.sGiaiThich; //"Không được sử dụng tài liệu"; //add some text in paragraph oPara.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; oPara.Range.Font.Bold = 1; oPara.Format.SpaceAfter = 10; //define some style oPara.Range.InsertParagraphAfter(); } if (_iSoDe != iSoDe - 1) { ////Thêm 1 ngắt trang, chuyển sang đề tiếp theo wrdRng = emptyDoc1.Bookmarks.get_Item(ref oEndOfDoc).Range; wrdRng.InsertBreak(ref oPageBreak); } //-------------kết thúc ĐÁP ÁN ĐỀ THI - Thêm giải thích } //Save as: filename ĐỀ THI if (!System.IO.Directory.Exists(InfoTest.sViTriLuuDeThi)) { InfoTest.sViTriLuuDeThi = InfoTest.sThuMucGoc; } string name = sMonThi + string.Format("{0: ddMMyyyyhhmmss}", DateTime.Now); object saveAs = InfoTest.sViTriLuuDeThi + "\\" + name + ".docx"; emptyDoc.SaveAs2(ref saveAs, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); emptyDoc.Close(ref missing, ref missing, ref missing); //Save as: filename ĐÁP ÁN ĐỀ THI object saveAs1 = InfoTest.sViTriLuuDeThi + "\\" + name + "_dap_an" + ".docx"; emptyDoc1.SaveAs2(ref saveAs1, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); emptyDoc1.Close(ref missing, ref missing, ref missing); // docDeThiMau.Close(); //Đóng đề thi mẫu wordApp.Quit(); //Thoát MS Word } } catch (Exception ex) { MessageBox.Show("Lỗi 1: " + ex.Message + " source:" + ex.Source); } finally { processesaftergen = getRunningProcesses(); killProcesses(processesbeforegen, processesaftergen); } }
public int MyWord(string MessageSaveFile, bool SaveWordPage, bool WordVisible) { object oMissing = System.Reflection.Missing.Value; object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ //Start Word and create a new document Word._Application oWord; Word._Document oDoc; oWord = new Word.Application(); if (WordVisible) { oWord.Visible = true; } else { oWord.Visible = false; } oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing); //Insert a paragraph at the beginning of the document Word.Paragraph oPara1; oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing); oPara1.Range.Text = "Heading 1"; oPara1.Range.Font.Bold = 1; oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph. oPara1.Range.InsertParagraphAfter(); //Insert a paragraph at the end of the document. Word.Paragraph oPara2; object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara2 = oDoc.Content.Paragraphs.Add(ref oRng); oPara2.Range.Text = "Heading 2"; oPara2.Format.SpaceAfter = 6; oPara2.Range.InsertParagraphAfter(); //Insert another paragraph. Word.Paragraph oPara3; oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara3 = oDoc.Content.Paragraphs.Add(ref oRng); oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:"; oPara3.Range.Font.Bold = 0; oPara3.Format.SpaceAfter = 24; oPara3.Range.InsertParagraphAfter(); //Insert a 3 x 5 table, fill it with data, and make the first row //bold and italic. Word.Table oTable; Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing); oTable.Range.ParagraphFormat.SpaceAfter = 6; int r, c; string strText; for (r = 1; r <= 3; r++) { for (c = 1; c <= 5; c++) { strText = "r" + r + "c" + c; oTable.Cell(r, c).Range.Text = strText; } } oTable.Rows[1].Range.Font.Bold = 1; oTable.Rows[1].Range.Font.Italic = 1; //Add some text after the table. Word.Paragraph oPara4; oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara4 = oDoc.Content.Paragraphs.Add(ref oRng); oPara4.Range.InsertParagraphBefore(); oPara4.Range.Text = "And here's another table:"; oPara4.Format.SpaceAfter = 24; oPara4.Range.InsertParagraphAfter(); //Insert a 5 x 2 table, fill it with data, and change the column widths. wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing); oTable.Range.ParagraphFormat.SpaceAfter = 6; for (r = 1; r <= 5; r++) { for (c = 1; c <= 2; c++) { strText = "r" + r + "c" + c; oTable.Cell(r, c).Range.Text = strText; } } oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2 oTable.Columns[2].Width = oWord.InchesToPoints(3); //Keep inserting text. When you get to 7 inches from top of the //document, insert a hard page break. object oPos; double dPos = oWord.InchesToPoints(7); oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter(); do { wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; wrdRng.ParagraphFormat.SpaceAfter = 6; wrdRng.InsertAfter("A line of text"); wrdRng.InsertParagraphAfter(); oPos = wrdRng.get_Information (Word.WdInformation.wdVerticalPositionRelativeToPage); }while (dPos >= Convert.ToDouble(oPos)); object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd; object oPageBreak = Word.WdBreakType.wdPageBreak; wrdRng.Collapse(ref oCollapseEnd); wrdRng.InsertBreak(ref oPageBreak); wrdRng.Collapse(ref oCollapseEnd); wrdRng.InsertAfter("We're now on page 2. Here's my chart:"); wrdRng.InsertParagraphAfter(); //Insert a chart. Word.InlineShape oShape; object oClassType = "MSGraph.Chart.8"; wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); //Demonstrate use of late bound oChart and oChartApp objects to //manipulate the chart object with MSGraph. object oChart; object oChartApp; oChart = oShape.OLEFormat.Object; oChartApp = oChart.GetType().InvokeMember("Application", BindingFlags.GetProperty, null, oChart, null); //Change the chart type to Line. object[] Parameters = new Object[1]; Parameters[0] = 4; //xlLine = 4 oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty, null, oChart, Parameters); //Update the chart image and quit MSGraph. oChartApp.GetType().InvokeMember("Update", BindingFlags.InvokeMethod, null, oChartApp, null); oChartApp.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, oChartApp, null); //... If desired, you can proceed from here using the Microsoft Graph //Object model on the oChart and oChartApp objects to make additional //changes to the chart. //Set the width of the chart. oShape.Width = oWord.InchesToPoints(6.25f); oShape.Height = oWord.InchesToPoints(3.57f); //Add text after the chart. wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; wrdRng.InsertParagraphAfter(); wrdRng.InsertAfter("THE END."); //Закрываем документ object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges; if (SaveWordPage) { saveChanges = Word.WdSaveOptions.wdSaveChanges; } object originalFormat = Word.WdOriginalFormat.wdWordDocument; object routeDocument = Type.Missing; oWord.Quit(ref saveChanges, ref originalFormat, ref routeDocument); oWord = null; return(0); }
private void ExportaDOC(CompanyInfo empresa) { object oMissing = System.Reflection.Missing.Value; object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ try { WordExporter.InitWordExporter(); } catch (Exception ex) { MessageBox.Show(ex.Message, moleQule.Face.Resources.Labels.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Word.Document oDoc = WordExporter.NewDocument(); //Start Word and create a new document. /*Word._Application oWord; * Word._Document oDoc; * oWord = new Word.Application(); * oWord.Visible = true; * oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, * ref oMissing, ref oMissing);*/ foreach (Word.Section wordSection in oDoc.Sections) { wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Text = empresa.Name; wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.ShowFirstPageNumber = true; wordSection.Range.ParagraphFormat.SpaceAfter = 0; wordSection.Range.ParagraphFormat.SpaceBefore = 0; } //Márgenes (1cm aprox.) oDoc.PageSetup.TopMargin = 15; oDoc.PageSetup.BottomMargin = 0; oDoc.PageSetup.LeftMargin = 30; oDoc.PageSetup.RightMargin = 30; //Tabla de encabezado Word.Table oTable; Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oTable = oDoc.Tables.Add(wrdRng, 5, 4, ref oMissing, ref oMissing); oTable.Range.ParagraphFormat.SpaceAfter = 6; oTable.Range.ParagraphFormat.SpaceBefore = 6; oTable.Columns[1].Cells.Merge(); oTable.Borders.Enable = 1; oTable.Borders.InsideLineWidth = Word.WdLineWidth.wdLineWidth150pt; oTable.Borders.OutsideLineWidth = Word.WdLineWidth.wdLineWidth150pt; oTable.Columns[2].Cells[1].Merge(oTable.Columns[2].Cells[2]); oTable.Columns[1].Width = 108.44F; oTable.Columns[3].Width = 81.33F; oTable.Columns[4].Width = 81.33F; oTable.Columns[2].Width = 271.1F; oTable.Rows.Alignment = Word.WdRowAlignment.wdAlignRowCenter; string logo = CompanyInfo.GetLogoPath(empresa.Oid); if (!File.Exists(logo)) { MessageBox.Show("No se ha encontrado la imagen: " + logo); } else { oTable.Cell(1, 1).Range.InlineShapes.AddPicture(logo, ref oMissing, ref oMissing, ref oMissing); } oTable.Cell(1, 1).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; ExamenPrint examen = Entity.GetPrintObject(empresa, string.Empty); oTable.Cell(1, 2).Range.Text = "HOJA DE PREGUNTAS"; oTable.Cell(1, 2).Range.Font.Bold = 1; oTable.Cell(1, 2).Range.Font.Size = 16; oTable.Cell(1, 2).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Cell(1, 2).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[2].Cells[1].Range.Font.Name = "Arial"; oTable.Columns[2].Cells[2].Range.Text = examen.Modulo; oTable.Columns[2].Cells[2].Range.Font.Bold = 1; oTable.Columns[2].Cells[2].Range.Font.Size = 11; oTable.Columns[2].Cells[2].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[2].Cells[2].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[2].Cells[2].Range.Font.Name = "Arial"; oTable.Columns[2].Cells[3].Range.Text = "CURSO : " + examen.Promocion; oTable.Columns[2].Cells[3].Range.Font.Bold = 1; oTable.Columns[2].Cells[3].Range.Font.Size = 11; oTable.Columns[2].Cells[3].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[2].Cells[3].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[2].Cells[3].Range.Font.Name = "Arial"; oTable.Columns[2].Cells[4].Range.Text = "Deberá responder a las preguntas del examen a continuación de las mismas."; oTable.Columns[2].Cells[4].Range.Font.Size = 11; oTable.Columns[2].Cells[4].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[2].Cells[4].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[2].Cells[4].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[1].Range.Text = "Nº EXAMEN"; oTable.Columns[3].Cells[1].Range.Font.Bold = 1; oTable.Columns[3].Cells[1].Range.Font.Size = 11; oTable.Columns[3].Cells[1].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[1].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[1].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[2].Range.Text = "FECHA"; oTable.Columns[3].Cells[2].Range.Font.Bold = 1; oTable.Columns[3].Cells[2].Range.Font.Size = 11; oTable.Columns[3].Cells[2].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[2].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[2].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[3].Range.Text = "TIPO EXAMEN"; oTable.Columns[3].Cells[3].Range.Font.Bold = 1; oTable.Columns[3].Cells[3].Range.Font.Size = 11; oTable.Columns[3].Cells[3].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[3].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[3].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[4].Range.Text = "Nº PREGUNTAS"; oTable.Columns[3].Cells[4].Range.Font.Bold = 1; oTable.Columns[3].Cells[4].Range.Font.Size = 11; oTable.Columns[3].Cells[4].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[4].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[4].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[5].Range.Text = "TIEMPO"; oTable.Columns[3].Cells[5].Range.Font.Bold = 1; oTable.Columns[3].Cells[5].Range.Font.Size = 11; oTable.Columns[3].Cells[5].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[5].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[5].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[1].Range.Text = examen.Numero.ToString().Trim(); oTable.Columns[4].Cells[1].Range.Font.Size = 11; oTable.Columns[4].Cells[1].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[1].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[1].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[2].Range.Text = examen.FechaExamen.ToShortDateString().Trim(); oTable.Columns[4].Cells[2].Range.Font.Size = 11; oTable.Columns[4].Cells[2].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[2].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[2].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[3].Range.Text = examen.Tipo.Trim(); oTable.Columns[4].Cells[3].Range.Font.Size = 11; oTable.Columns[4].Cells[3].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[3].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[3].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[4].Range.Text = examen.NPreguntas.ToString().Trim(); oTable.Columns[4].Cells[4].Range.Font.Size = 11; oTable.Columns[4].Cells[4].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[4].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[4].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[5].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[5].Range.Font.Size = 11; oTable.Columns[4].Cells[5].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[5].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[5].Range.Text = examen.Duracion.ToShortTimeString().Trim(); ////Add some text after the table. Word.Paragraph oParaAux; object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oParaAux = oDoc.Content.Paragraphs.Add(ref oRng); oParaAux.Range.Text = string.Empty; oParaAux.Range.InsertParagraph(); //Nombre y apellidos Word.Paragraph oPara1; oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing); oPara1.Range.Text = "NOMBRE Y APELLIDOS:"; oPara1.Range.Font.Size = 12; oPara1.Range.Font.Name = "Arial"; oPara1.Range.InsertParagraphAfter(); oPara1.Range.InsertParagraphBefore(); //DNI/NIE, FIRMA Word.Paragraph oPara2; oPara2 = oDoc.Content.Paragraphs.Add(ref oMissing); oPara2.Range.Text = "DNI/NIE: FIRMA:"; oPara2.Range.Font.Size = 12; oPara2.Range.Font.Name = "Arial"; oPara2.Range.InsertParagraphAfter(); oPara2.Range.InsertParagraphBefore(); PreguntaList lista_preguntas = null; //Origen de las preguntas en función de si el examen está emitido o no if (_entity.Emitido) { lista_preguntas = PreguntaList.GetList(_entity.PreguntaExamenes); } else { lista_preguntas = _preguntas; } if (lista_preguntas != null) { int i = 1; PreguntaInfo item; foreach (PreguntaExamenInfo pex in _entity.PreguntaExamenes) { item = lista_preguntas.GetItem(pex.OidPregunta); /*if (_preguntas_examen != null) * { * int i = 1; * * foreach (Pregunta_Examen preg in _preguntas_examen) * { * Pregunta item = _preguntas.GetItem(preg.OidPregunta);*/ //Para cada pregunta se inserta una tabla wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; Word.Range newRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; int paginas_antes = (int)(oTable.Range.get_Information(Word.WdInformation.wdNumberOfPagesInDocument)); oTable = oDoc.Tables.Add(wrdRng, 2, 3, ref oMissing, ref oMissing); oTable.Rows.HeightRule = Word.WdRowHeightRule.wdRowHeightAuto; oTable.Columns[1].Width = 30; oTable.Cell(1, 1).Range.Text = i.ToString(); oTable.Cell(1, 1).Range.Font.Size = 10; oTable.Cell(1, 1).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Cell(1, 1).Range.Font.Bold = 1; oTable.Cell(1, 1).Range.Font.Name = "Arial"; oTable.Cell(1, 2).Merge(oTable.Columns[3].Cells[1]); oTable.Cell(1, 2).Width = 510; oTable.Cell(1, 2).Range.Text = item.Texto; oTable.Cell(1, 2).Range.Font.Size = 10; oTable.Cell(1, 2).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify; oTable.Cell(1, 2).Range.Font.Bold = 1; oTable.Cell(1, 2).Range.Font.Name = "Arial"; oTable.Cell(2, 2).Merge(oTable.Cell(2, 3)); oTable.Cell(2, 1).Merge(oTable.Cell(2, 2)); oTable.Cell(2, 1).Width = 540; if (item.Imagen != string.Empty) { string path = item.ImagenWithPath; if (File.Exists(path)) { oTable.Cell(2, 1).Range.InlineShapes.AddPictureBullet(path, ref oMissing); oTable.Cell(2, 1).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Cell(2, 1).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; } else { oTable.Rows[2].Delete(); } } else { oTable.Rows[2].Delete(); } ////Add some text after the table. oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oParaAux = oDoc.Content.Paragraphs.Add(ref oRng); oParaAux.Range.Text = string.Empty; oParaAux.Range.InsertParagraph(); int paginas_despues = (int)(oParaAux.Range.get_Information(Word.WdInformation.wdNumberOfPagesInDocument)); if (paginas_antes < paginas_despues) { newRng.InsertBreak(ref oMissing); } i++; } } else { foreach (PreguntaExamenInfo item in Entity.PreguntaExamenes) { //Para cada pregunta se inserta una tabla wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; Word.Range newRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; int paginas_antes = (int)(oTable.Range.get_Information(Word.WdInformation.wdNumberOfPagesInDocument)); oTable = oDoc.Tables.Add(wrdRng, 2, 3, ref oMissing, ref oMissing); oTable.Rows.HeightRule = Word.WdRowHeightRule.wdRowHeightAuto; oTable.Columns[1].Width = 30; oTable.Cell(1, 1).Range.Text = item.Orden.ToString(); oTable.Cell(1, 1).Range.Font.Size = 10; oTable.Cell(1, 1).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Cell(1, 1).Range.Font.Bold = 1; oTable.Cell(1, 1).Range.Font.Name = "Arial"; oTable.Cell(1, 2).Merge(oTable.Columns[3].Cells[1]); oTable.Cell(1, 2).Width = 510; oTable.Cell(1, 2).Range.Text = item.Texto; oTable.Cell(1, 2).Range.Font.Size = 10; oTable.Cell(1, 2).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify; oTable.Cell(1, 2).Range.Font.Bold = 1; oTable.Cell(1, 2).Range.Font.Name = "Arial"; oTable.Cell(2, 2).Merge(oTable.Cell(2, 3)); oTable.Cell(2, 1).Merge(oTable.Cell(2, 2)); oTable.Cell(2, 1).Width = 540; if (item.Imagen != string.Empty) { /*string path = Images.GetRootPath() + PreguntaExamenInfo.GetImagenesPath() + * item.OidExamen.ToString("00000") + "\\" + item.Imagen;*/ string path = item.ImagenWithPath; if (File.Exists(path)) { oTable.Cell(2, 1).Range.InlineShapes.AddPictureBullet(path, ref oMissing); oTable.Cell(2, 1).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Cell(2, 1).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; } else { oTable.Rows[2].Delete(); } } else { oTable.Rows[2].Delete(); } ////Add some text after the table. oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oParaAux = oDoc.Content.Paragraphs.Add(ref oRng); oParaAux.Range.Text = string.Empty; oParaAux.Range.InsertParagraph(); int paginas_despues = (int)(oParaAux.Range.get_Information(Word.WdInformation.wdNumberOfPagesInDocument)); if (paginas_antes < paginas_despues) { newRng.InsertBreak(ref oMissing); } } } WordExporter.Close(); }
private void SetupPageBreak(Word.Range range) { range.Collapse(Word.WdCollapseDirection.wdCollapseEnd); range.InsertBreak(Word.WdBreakType.wdLineBreak); }
private void addTable(Word._Application oWord, Word._Document oDoc) { log("Inserting Table..."); object oMissing = System.Reflection.Missing.Value; object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ //Insert a 3 x 5 table, fill it with data, and make the first row //bold and italic. Word.Table oTable; Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing); oTable.Range.ParagraphFormat.SpaceAfter = 6; int r, c; string strText; for (r = 1; r <= 3; r++) { for (c = 1; c <= 5; c++) { strText = "r" + r + "c" + c; oTable.Cell(r, c).Range.Text = strText; } } oTable.Rows[1].Range.Font.Bold = 1; oTable.Rows[1].Range.Font.Italic = 1; //Add some text after the table. Word.Paragraph oPara4; object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oPara4 = oDoc.Content.Paragraphs.Add(ref oRng); oPara4.Range.InsertParagraphBefore(); oPara4.Range.Text = "And here's another table:"; oPara4.Format.SpaceAfter = 24; oPara4.Range.InsertParagraphAfter(); //Insert a 5 x 2 table, fill it with data, and change the column widths. wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing); oTable.Range.ParagraphFormat.SpaceAfter = 6; for (r = 1; r <= 5; r++) { for (c = 1; c <= 2; c++) { strText = "r" + r + "c" + c; oTable.Cell(r, c).Range.Text = strText; } } oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2 oTable.Columns[2].Width = oWord.InchesToPoints(3); //Keep inserting text. When you get to 7 inches from top of the //document, insert a hard page break. object oPos; double dPos = oWord.InchesToPoints(7); oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter(); do { wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; wrdRng.ParagraphFormat.SpaceAfter = 6; wrdRng.InsertAfter("A line of text"); wrdRng.InsertParagraphAfter(); oPos = wrdRng.get_Information (Word.WdInformation.wdVerticalPositionRelativeToPage); }while (dPos >= Convert.ToDouble(oPos)); object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd; object oPageBreak = Word.WdBreakType.wdPageBreak; wrdRng.Collapse(ref oCollapseEnd); wrdRng.InsertBreak(ref oPageBreak); wrdRng.Collapse(ref oCollapseEnd); wrdRng.InsertAfter("We're now on page 2. Here's my chart:"); wrdRng.InsertParagraphAfter(); }
private void TitlePage(String beginDate, String endDate, Teacher teacher) { Word.Paragraphs wordparagraphs = adoc.Paragraphs; adoc.Paragraphs.Add(); wordparagraphs[1].Range.Text = "Форма № 12"; wordparagraphs[1].Range.Bold = 0; wordparagraphs[1].Range.Font.Size = 8; wordparagraphs[1].Range.Font.Name = "Times New Roman"; wordparagraphs[1].Range.Font.Underline = 0; wordparagraphs[1].Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight; adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); wordparagraphs[2].Range.Text = "ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ"; wordparagraphs[2].Range.Bold = 1; wordparagraphs[2].Range.Font.Size = 14; wordparagraphs[2].Range.Font.Name = "Times New Roman"; wordparagraphs[2].Range.Font.Underline = 0; wordparagraphs[2].Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; adoc.Paragraphs.Add(); wordparagraphs[3].Range.Text = "Інститут, факультет: " + teacher.institute + ", " + teacher.faculty; wordparagraphs[3].Range.Bold = 1; wordparagraphs[3].Range.Font.Size = (float)12.5; wordparagraphs[3].Range.Font.Name = "Times New Roman"; wordparagraphs[3].Range.Font.Underline = 0; wordparagraphs[3].Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); wordparagraphs[9].Range.Text = "ЖУРНАЛ ОБЛІКУ РОБОТИ ВИКЛАДАЧА"; wordparagraphs[9].Range.Bold = 0; wordparagraphs[9].Range.Font.Name = "Times New Roman"; wordparagraphs[9].Range.Font.Size = 34; wordparagraphs[9].Range.Font.Underline = 0; wordparagraphs[9].Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; adoc.Paragraphs.Add(); wordparagraphs[10].Range.Text = "на " + beginDate + " - " + endDate + " навчальний рік"; wordparagraphs[10].Range.Bold = 0; wordparagraphs[10].Range.Font.Name = "Times New Roman"; wordparagraphs[10].Range.Font.Size = (float)24.5; wordparagraphs[10].Range.Font.Underline = 0; wordparagraphs[10].Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); adoc.Paragraphs.Add(); wordparagraphs[16].Range.Text = "1. Кафедра__________________________" + teacher.department + ""; wordparagraphs[16].Range.Bold = 0; wordparagraphs[16].Range.Font.Name = "Times New Roman"; wordparagraphs[16].Range.Font.Size = 18; wordparagraphs[16].Range.Font.Underline = 0; wordparagraphs[16].Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; adoc.Paragraphs.Add(); wordparagraphs[17].Range.Text = "2. Прізвище, ім'я, по батькові__________" + teacher.fullName; wordparagraphs[17].Range.Bold = 0; wordparagraphs[17].Range.Font.Name = "Times New Roman"; wordparagraphs[17].Range.Font.Size = 18; wordparagraphs[17].Range.Font.Underline = 0; wordparagraphs[17].Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; adoc.Paragraphs.Add(); wordparagraphs[18].Range.Text = "3. Вчене звання, науковий ступінь______" + teacher.academicRank; wordparagraphs[18].Range.Bold = 0; wordparagraphs[18].Range.Font.Name = "Times New Roman"; wordparagraphs[18].Range.Font.Size = 18; wordparagraphs[18].Range.Font.Underline = 0; wordparagraphs[18].Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; adoc.Paragraphs.Add(); wordparagraphs[19].Range.Text = "4. Посада___________________________" + teacher.post; wordparagraphs[19].Range.Bold = 0; wordparagraphs[19].Range.Font.Name = "Times New Roman"; wordparagraphs[19].Range.Font.Size = 18; wordparagraphs[19].Range.Font.Underline = 0; wordparagraphs[19].Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; rangeEndOfFile = adoc.Bookmarks.get_Item(ref oEndOfDoc).Range; rangeEndOfFile.InsertBreak(Word.WdBreakType.wdSectionBreakNextPage); }
private void CreateScheduleTable(Term term, bool Break) { List <Schedule> schedules = DBHelper.selectSchedules(term); List <model.DayOfWeek> dayOfWeek = DBHelper.selectDaysOfWeek(); DaysOfWeek = dayOfWeek.Count; DaysOfWeek = 5; foreach (Schedule obj in schedules) { if (obj.dayOfWeek.name == ColumnsNameOfSchedule[7]) { DaysOfWeek += 1; break; } if (obj.dayOfWeek.name == ColumnsNameOfSchedule[8]) { DaysOfWeek += 2; break; } } tableColumns = 2 + DaysOfWeek; //Количество недель в семестре int numOfWeeks = (DBHelper.calculateDays(term.endDate) - DBHelper.calculateDays(term.beginDate)) / 7; //Счетчик который показывает в какие дние есть занятия а в какие нет True = есть False = нет while (numOfWeeks % 2 != 0) { numOfWeeks += 1; } ; bool[] DaysIsntNull = new bool[maxLessons]; foreach (Schedule schedule in schedules) { for (int i = 0; i < maxLessons; i++) { for (int k = 1; k < (maxLessons + 1); k++) { if (schedule.numOfLesson == i + k) { DaysIsntNull[i + k - 1] = true; } } } } Schedule[,,] scheduleMatrix = new Schedule[maxLessons, DaysOfWeek, 3]; foreach (Schedule obj in schedules) { for (int i = 0; i < maxLessons; i++) { for (int k = 0; k < DaysOfWeek; k++) { if (obj.numOfLesson == i + 1 && obj.dayOfWeek.id == k + 1) { if (obj.typeOfWeek.name == "Чисельник") { scheduleMatrix[i, k, 0] = obj; } else if (obj.typeOfWeek.name == "Знаменник") { scheduleMatrix[i, k, 1] = obj; } else if (obj.typeOfWeek.name == "Щотижня") { scheduleMatrix[i, k, 2] = obj; } } } } } int maxRows = 0;//Количество строк генерируемой части таблицы for (int i = 0; i < maxLessons; i++) { if (DaysIsntNull[i] == true) { maxRows += numOfWeeks; } else { maxRows += 2; } } tableRows = maxRows + 1; //Создание таблицы rangeEndOfFile = adoc.Bookmarks.get_Item(ref oEndOfDoc).Range; Word.Table tableSchedule = adoc.Tables.Add(rangeEndOfFile, tableRows, tableColumns); tableSchedule.Columns.AutoFit(); rangeEndOfFile = adoc.Bookmarks.get_Item(ref oEndOfDoc).Range; if (Break) { Word.Paragraph Para4; objRangePara = adoc.Bookmarks.get_Item(ref oEndOfDoc).Range; Para4 = adoc.Content.Paragraphs.Add(ref objRangePara); Para4.Range.Text = "Примітка. У кожний рядок заноситься вид занять або роботи, шифр потоку або групи, номер аудиторії."; Para4.Range.Font.Size = 12; Para4.Range.Font.Name = "Times New Roman"; rangeEndOfFile = adoc.Bookmarks.get_Item(ref oEndOfDoc).Range; rangeEndOfFile.InsertBreak(Word.WdBreakType.wdSectionBreakNextPage); } else { objRangePara = adoc.Bookmarks.get_Item(ref oEndOfDoc).Range; objParagraph = adoc.Content.Paragraphs.Add(ref objRangePara); objParagraph.Range.Text = Environment.NewLine; } SetStyleOfDoc(tableSchedule); //Слияние клеток for (int i = 0; i < maxLessons; i++) { if (DaysIsntNull[i]) { tableSchedule.Columns[1].Cells[i + 2].Merge(tableSchedule.Columns[1].Cells[i + (numOfWeeks + 1)]); } else { tableSchedule.Columns[1].Cells[i + 2].Merge(tableSchedule.Columns[1].Cells[i + 3]); } } //Основная часть заполнение таблицы. 1770мс for (int i = 0, posDays = 3; i < DaysOfWeek; i++, posDays++) { int begin = 2; for (int k = 0; k < maxLessons; k++) { if (DaysIsntNull[k]) { if (scheduleMatrix[k, i, 0] != null && scheduleMatrix[k, i, 0].dayOfWeek.id == i + 1 || scheduleMatrix[k, i, 1] != null && scheduleMatrix[k, i, 1].dayOfWeek.id == i + 1 || scheduleMatrix[k, i, 2] != null && scheduleMatrix[k, i, 2].dayOfWeek.id == i + 1) { for (int n = 0; n < 3; n++) { if (scheduleMatrix[k, i, n] != null) { if (scheduleMatrix[k, i, n].typeOfWeek.name == "Чисельник") { tableSchedule.Columns[posDays].Cells[begin].Merge(tableSchedule.Columns[posDays].Cells[begin + numOfWeeks - 1]); tableSchedule.Columns[posDays].Cells[begin].Split(2, 1); tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].subject.name + ", "); tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].typeOfLesson.name + ", "); for (int m = 0; m < scheduleMatrix[k, i, n].groups.Count; m++) { tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].groups[m].name + ", "); } tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter("ауд. " + scheduleMatrix[k, i, n].classroom.name + ", "); tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].typeOfWeek.name); tableSchedule.Columns[posDays].Cells[begin].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; tableSchedule.Columns[posDays].Cells[begin].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; tableSchedule.Columns[posDays].Cells[begin].Range.Font.Size = 11; if (scheduleMatrix[k, i, n + 1] != null) { begin += 1; } else { begin += 2; } } else if (scheduleMatrix[k, i, n].typeOfWeek.name == "Знаменник") { if (scheduleMatrix[k, i, n - 1] == null) { tableSchedule.Columns[posDays].Cells[begin].Merge(tableSchedule.Columns[posDays].Cells[begin + numOfWeeks - 1]); tableSchedule.Columns[posDays].Cells[begin].Split(2, 1); begin += 1; } tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].subject.name + ", "); tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].typeOfLesson.name + ", "); for (int m = 0; m < scheduleMatrix[k, i, n].groups.Count; m++) { tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].groups[m].name + ", "); } tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter("ауд. " + scheduleMatrix[k, i, n].classroom.name + ", "); tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].typeOfWeek.name); tableSchedule.Columns[posDays].Cells[begin].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; tableSchedule.Columns[posDays].Cells[begin].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; tableSchedule.Columns[posDays].Cells[begin].Range.Font.Size = 11; begin += 1; } else if (scheduleMatrix[k, i, n].typeOfWeek.name == "Щотижня") { tableSchedule.Columns[posDays].Cells[begin].Merge(tableSchedule.Columns[posDays].Cells[begin + numOfWeeks - 1]); tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].subject.name + ", "); tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].typeOfLesson.name + ", "); for (int m = 0; m < scheduleMatrix[k, i, n].groups.Count; m++) { tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].groups[m].name + ", "); } tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter("ауд. " + scheduleMatrix[k, i, n].classroom.name + ","); tableSchedule.Columns[posDays].Cells[begin].Range.InsertAfter(scheduleMatrix[k, i, n].typeOfWeek.name); tableSchedule.Columns[posDays].Cells[begin].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; tableSchedule.Columns[posDays].Cells[begin].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; tableSchedule.Columns[posDays].Cells[begin].Range.Font.Size = 11; begin += 1; } } } } else { begin += numOfWeeks; } } else { begin += 2; } } } //Шапка таблицы. 320мс for (int i = 0; i < tableColumns; i++) { tableSchedule.Cell(1, 1 + i).Range.InsertAfter(ColumnsNameOfSchedule[i]); tableSchedule.Columns[1 + i].Cells[1].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; tableSchedule.Columns[1 + i].Cells[1].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; tableSchedule.Columns[1 + i].Cells[1].Range.Font.Bold = 1; } //Заполнение клеток. 553мс for (int i = 0; i < tableSchedule.Columns[1].Cells.Count - 1; i++) { tableSchedule.Columns[1].Cells[2 + i].Range.InsertAfter(RowsNumberOfSchedule[i]); tableSchedule.Columns[1].Cells[2 + i].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; tableSchedule.Columns[1].Cells[2 + i].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; tableSchedule.Columns[1].Cells[2 + i].Range.Font.Bold = 1; tableSchedule.Columns[1].Cells[2 + i].Range.Font.Size = 14; //tableSchedule.Rows[i + 1].Cells[1].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; } //Нумеруем 2 колонку. 3729мс for (int i = 0, position = 1; i < maxLessons; i++) { if (DaysIsntNull[i] == true) { for (int k = 0; k < numOfWeeks; k++, position++) { if (position <= maxRows) { tableSchedule.Columns[2].Cells[position + 1].Range.InsertAfter(Convert.ToString(k + 1)); // 17мс tableSchedule.Columns[2].Cells[position + 1].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; // 18мс tableSchedule.Columns[2].Cells[position + 1].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; // 55мс tableSchedule.Columns[2].Cells[position + 1].Range.Font.Size = 10; // 17мс } } } else { for (int k = 0; k < 2; k++, position++) { if (position <= maxRows) { tableSchedule.Columns[2].Cells[position + 1].Range.InsertAfter(Convert.ToString(k + 1)); tableSchedule.Columns[2].Cells[position + 1].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; tableSchedule.Columns[2].Cells[position + 1].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; tableSchedule.Columns[2].Cells[position + 1].Range.Font.Size = 10; } } } } }
private void ExportaDOC(CompanyInfo empresa) { object oMissing = System.Reflection.Missing.Value; object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ ExamenPrint examen = null; try { WordExporter.InitWordExporter(); examen = Entity.GetPrintObject(empresa, string.Empty); } catch (Exception ex) { MessageBox.Show(ex.Message, moleQule.Face.Resources.Labels.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } PgMng.Reset(_entity.PreguntaExamenes.Count + 7, 1, Resources.Messages.LOADING_DATA, this); try { Word.Document oDoc = WordExporter.NewDocument(); PgMng.Grow(); foreach (Word.Section wordSection in oDoc.Sections) { wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary] .Range.Text = empresa.Name; wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary] .Range.Borders.DistanceFromTop = 10; wordSection.Footers[ Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.ShowFirstPageNumber = true; wordSection.Range.ParagraphFormat.SpaceAfter = 0; wordSection.Range.ParagraphFormat.SpaceBefore = 0; } PgMng.Grow(); //Márgenes (1cm aprox.) oDoc.PageSetup.TopMargin = 15; oDoc.PageSetup.BottomMargin = 0; oDoc.PageSetup.LeftMargin = 30; oDoc.PageSetup.RightMargin = 30; //Tabla de encabezado Word.Table oTable; Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oTable = oDoc.Tables.Add(wrdRng, 5, 4, ref oMissing, ref oMissing); oTable.Range.ParagraphFormat.SpaceAfter = 6; oTable.Range.ParagraphFormat.SpaceBefore = 6; oTable.Columns[1].Cells.Merge(); oTable.Borders.Enable = 1; oTable.Borders.InsideLineWidth = Word.WdLineWidth.wdLineWidth150pt; oTable.Borders.OutsideLineWidth = Word.WdLineWidth.wdLineWidth150pt; oTable.Columns[2].Cells[1].Merge(oTable.Columns[2].Cells[2]); oTable.Columns[1].Width = 108.44F; oTable.Columns[3].Width = 81.33F; oTable.Columns[4].Width = 81.33F; oTable.Columns[2].Width = 271.1F; oTable.Rows.Alignment = Word.WdRowAlignment.wdAlignRowCenter; PgMng.Grow(); string logo = CompanyInfo.GetLogoPath(empresa.Oid); if (!File.Exists(logo)) { MessageBox.Show("No se ha encontrado la imagen: " + logo); } else { oTable.Cell(1, 1).Range.InlineShapes.AddPicture(logo, ref oMissing, ref oMissing, ref oMissing); } oTable.Cell(1, 1).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; PgMng.Grow(); oTable.Cell(1, 2).Range.Text = "HOJA DE PREGUNTAS"; oTable.Cell(1, 2).Range.Font.Bold = 1; oTable.Cell(1, 2).Range.Font.Size = 16; oTable.Cell(1, 2).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Cell(1, 2).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[2].Cells[1].Range.Font.Name = "Arial"; oTable.Columns[2].Cells[2].Range.Text = examen.Modulo; oTable.Columns[2].Cells[2].Range.Font.Bold = 1; oTable.Columns[2].Cells[2].Range.Font.Size = 11; oTable.Columns[2].Cells[2].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[2].Cells[2].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[2].Cells[2].Range.Font.Name = "Arial"; oTable.Columns[2].Cells[3].Range.Text = "CURSO : " + examen.Promocion; oTable.Columns[2].Cells[3].Range.Font.Bold = 1; oTable.Columns[2].Cells[3].Range.Font.Size = 11; oTable.Columns[2].Cells[3].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[2].Cells[3].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[2].Cells[3].Range.Font.Name = "Arial"; oTable.Columns[2].Cells[4].Range.Text = "Deberá utilizar la plantilla que se le entregará para responder a las preguntas del examen."; oTable.Columns[2].Cells[4].Range.Font.Size = 11; oTable.Columns[2].Cells[4].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[2].Cells[4].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[2].Cells[4].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[1].Range.Text = "Nº EXAMEN"; oTable.Columns[3].Cells[1].Range.Font.Bold = 1; oTable.Columns[3].Cells[1].Range.Font.Size = 11; oTable.Columns[3].Cells[1].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[1].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[1].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[2].Range.Text = "FECHA"; oTable.Columns[3].Cells[2].Range.Font.Bold = 1; oTable.Columns[3].Cells[2].Range.Font.Size = 11; oTable.Columns[3].Cells[2].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[2].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[2].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[3].Range.Text = "TIPO EXAMEN"; oTable.Columns[3].Cells[3].Range.Font.Bold = 1; oTable.Columns[3].Cells[3].Range.Font.Size = 11; oTable.Columns[3].Cells[3].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[3].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[3].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[4].Range.Text = "Nº PREGUNTAS"; oTable.Columns[3].Cells[4].Range.Font.Bold = 1; oTable.Columns[3].Cells[4].Range.Font.Size = 11; oTable.Columns[3].Cells[4].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[4].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[4].Range.Font.Name = "Arial"; oTable.Columns[3].Cells[5].Range.Text = "TIEMPO"; oTable.Columns[3].Cells[5].Range.Font.Bold = 1; oTable.Columns[3].Cells[5].Range.Font.Size = 11; oTable.Columns[3].Cells[5].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[3].Cells[5].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[3].Cells[5].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[1].Range.Text = examen.Numero.ToString().Trim(); oTable.Columns[4].Cells[1].Range.Font.Size = 11; oTable.Columns[4].Cells[1].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[1].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[1].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[2].Range.Text = examen.FechaExamen.ToShortDateString().Trim(); oTable.Columns[4].Cells[2].Range.Font.Size = 11; oTable.Columns[4].Cells[2].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[2].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[2].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[3].Range.Text = examen.Tipo.Trim(); oTable.Columns[4].Cells[3].Range.Font.Size = 11; oTable.Columns[4].Cells[3].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[3].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[3].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[4].Range.Text = examen.NPreguntas.ToString().Trim(); oTable.Columns[4].Cells[4].Range.Font.Size = 11; oTable.Columns[4].Cells[4].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[4].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[4].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[5].Range.Font.Name = "Arial"; oTable.Columns[4].Cells[5].Range.Font.Size = 11; oTable.Columns[4].Cells[5].VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Columns[4].Cells[5].Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Columns[4].Cells[5].Range.Text = examen.Duracion.ToShortTimeString().Trim(); PgMng.Grow(); ////Add some text after the table. Word.Paragraph oParaAux; object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oParaAux = oDoc.Content.Paragraphs.Add(ref oRng); oParaAux.Range.Text = string.Empty; oParaAux.Range.InsertParagraph(); //Nombre y apellidos Word.Paragraph oPara1; oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing); oPara1.Range.Text = "NOMBRE Y APELLIDOS:"; oPara1.Range.Font.Size = 12; oPara1.Range.Font.Name = "Arial"; oPara1.Range.InsertParagraphAfter(); oPara1.Range.InsertParagraphBefore(); //DNI/NIE, FIRMA Word.Paragraph oPara2; oPara2 = oDoc.Content.Paragraphs.Add(ref oMissing); oPara2.Range.Text = "DNI/NIE: FIRMA:"; oPara2.Range.Font.Size = 12; oPara2.Range.Font.Name = "Arial"; oPara2.Range.InsertParagraphAfter(); oPara2.Range.InsertParagraphBefore(); PgMng.Grow(); PreguntaList lista_preguntas = null; //Origen de las preguntas en función de si el examen está emitido o no if (_entity.Emitido) { lista_preguntas = PreguntaList.GetList(_entity.PreguntaExamenes); } else { lista_preguntas = _preguntas; } if (lista_preguntas != null) { int i = 1; PreguntaInfo item; foreach (PreguntaExamenInfo pex in _entity.PreguntaExamenes) { item = lista_preguntas.GetItem(pex.OidPregunta); //Para cada pregunta se inserta una tabla wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; Word.Range newRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; int paginas_antes = (int)(oTable.Range.get_Information( Word.WdInformation.wdNumberOfPagesInDocument)); oTable = oDoc.Tables.Add(wrdRng, 5, 3, ref oMissing, ref oMissing); oTable.Rows.HeightRule = Word.WdRowHeightRule.wdRowHeightAuto; oTable.Columns[1].Width = 30; oTable.Cell(1, 1).Range.Text = i.ToString(); oTable.Cell(1, 1).Range.Font.Size = 10; oTable.Cell(1, 1).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Cell(1, 1).Range.Font.Bold = 1; oTable.Cell(1, 1).Range.Font.Name = "Arial"; oTable.Cell(1, 2).Merge(oTable.Columns[3].Cells[1]); oTable.Cell(1, 2).BottomPadding = 8; oTable.Cell(1, 2).Width = 510; oTable.Cell(1, 2).Range.Text = item.Texto; oTable.Cell(1, 2).Range.Font.Size = 10; oTable.Cell(1, 2).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify; oTable.Cell(1, 2).Range.Font.Bold = 1; oTable.Cell(1, 2).Range.Font.Name = "Arial"; oTable.Cell(2, 2).Merge(oTable.Cell(2, 3)); oTable.Cell(2, 1).Merge(oTable.Cell(2, 2)); oTable.Cell(2, 1).Width = 540; oTable.Cell(3, 2).Width = 20; oTable.Cell(3, 2).Range.Text = "A"; oTable.Cell(3, 2).Range.Font.Size = 10; oTable.Cell(3, 2).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Cell(3, 2).Range.Font.Name = "Arial"; oTable.Cell(4, 2).Width = 20; oTable.Cell(4, 2).Range.Text = "B"; oTable.Cell(4, 2).Range.Font.Size = 10; oTable.Cell(4, 2).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Cell(4, 2).Range.Font.Name = "Arial"; oTable.Cell(5, 2).Width = 20; oTable.Cell(5, 2).Range.Text = "C"; oTable.Cell(5, 2).Range.Font.Size = 10; oTable.Cell(5, 2).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; oTable.Cell(5, 2).Range.Font.Name = "Arial"; foreach (RespuestaInfo obj in item.Respuestas) { switch (obj.Opcion) { case "A": { oTable.Cell(3, 3).Width = 490; oTable.Cell(3, 3).Range.Text = obj.Texto; oTable.Cell(3, 3).Range.Font.Size = 10; oTable.Cell(3, 3).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify; oTable.Cell(3, 3).Range.Font.Name = "Arial"; break; } case "B": { oTable.Cell(4, 3).Width = 490; oTable.Cell(4, 3).Range.Text = obj.Texto; oTable.Cell(4, 3).Range.Font.Size = 10; oTable.Cell(4, 3).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify; oTable.Cell(4, 3).Range.Font.Name = "Arial"; break; } case "C": { oTable.Cell(5, 3).Width = 490; oTable.Cell(5, 3).Range.Text = obj.Texto; oTable.Cell(5, 3).Range.Font.Size = 10; oTable.Cell(5, 3).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify; oTable.Cell(5, 3).Range.Font.Name = "Arial"; break; } } } if (item.Imagen != string.Empty) { string path = _entity.Emitido ? Library.Application.AppController.FOTOS_PREGUNTAS_EXAMEN_PATH + _entity.Oid.ToString("00000") + "\\" + item.Imagen : item.ImagenWithPath; if (File.Exists(path)) { oTable.Cell(2, 1).Range.InlineShapes.AddPictureBullet(path, ref oMissing); oTable.Cell(2, 1).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; oTable.Cell(2, 1).Range.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; } else { MessageBox.Show("No se ha encontrado la imagen: " + path); oTable.Rows[2].Delete(); } } else { oTable.Rows[2].Delete(); } ////Add some text after the table. oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range; oParaAux = oDoc.Content.Paragraphs.Add(ref oRng); oParaAux.Range.Text = string.Empty; oParaAux.Range.InsertParagraph(); int paginas_despues = (int)(oParaAux.Range.get_Information( Word.WdInformation.wdNumberOfPagesInDocument)); if (paginas_antes < paginas_despues) { newRng.InsertBreak(ref oMissing); } i++; } PgMng.Grow(); oDoc.Close(Microsoft.Office.Interop.Word.WdSaveOptions.wdPromptToSaveChanges, Microsoft.Office.Interop.Word.WdOriginalFormat.wdPromptUser, true); } } catch (Exception ex) { MessageBox.Show(ex.Message, moleQule.Face.Resources.Labels.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } finally { WordExporter.Close(); PgMng.FillUp(); } }