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;
                }
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
            }
        }
Exemple #6
0
        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() + " переменных.";
        }
Exemple #8
0
        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);
            }
        }
Exemple #9
0
    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();
        }
Exemple #11
0
 private void SetupPageBreak(Word.Range range)
 {
     range.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
     range.InsertBreak(Word.WdBreakType.wdLineBreak);
 }
Exemple #12
0
        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();
        }
Exemple #13
0
        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);
        }
Exemple #14
0
        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();
            }
        }