Ejemplo n.º 1
0
        /// <summary>
        /// 调用模板生成word
        /// </summary>
        /// <param name="templateFile">模板文件</param>
        /// <param name="fileName">生成的具有模板样式的新文件</param>
        public void ExportWordFunction()
        {
            try
            {
                #region 生成word应用程序对象
                string startTime = messages[1].Replace(":", "").Replace("-", "").Replace(" ", "");
                string endTime   = messages[2].Replace(":", "").Replace("-", "").Replace(" ", "");
                //生成word程序对象
                object           obj = System.Reflection.Missing.Value;
                Word.Application app = new Word.Application();
                //模板文件
                string TemplateFile = messages[3] + "report 20150117.dot";

                //生成的具有模板样式的新文件
                string FileName = messages[3] + messages[0] + startTime + endTime + ".doc";

                //模板文件拷贝到新文件
                File.Copy(TemplateFile, FileName);

                //生成documnet对象
                //Word.Document doc = app.Documents.Add(ref obj,ref obj ,ref obj ,ref obj);
                //Word.Document doc=app.Documents.Add(ref obj,ref obj,ref obj,ref,obj,ref obj);
                Word.Document doc          = new Word.Document();
                object        Obj_FileName = FileName;
                object        Visible      = true;
                object        ReadOnly     = false;
                object        missing      = System.Reflection.Missing.Value;

                //打开文件
                doc = app.Documents.Open(ref Obj_FileName, ref missing, ref ReadOnly, ref missing,
                                         ref missing, ref missing, ref missing, ref missing,
                                         ref missing, ref missing, ref missing, ref Visible,
                                         ref missing, ref missing, ref missing,
                                         ref missing);
                doc.Activate();
                #endregion

                //赋值数据到书签的位置

                System.Data.DataRow[] tempTables;

                string plantName = "";
                if (messages[0] == "JJSH_CJYYT")
                {
                    plantName = "1#常减压";
                }
                if (messages[0] == "JJSH_CLHCJ")
                {
                    plantName = "1#催化裂化";
                }
                if (messages[0] == "JJSH_YJHYT")
                {
                    plantName = "延迟焦化";
                }
                if (messages[0] == "ZHLH_YCJY")
                {
                    plantName = "1#常减压";
                }
                doc.Bookmarks.get_Item(ref BookMark[0]).Range.Text = plantName;//插入文本
                doc.Bookmarks.get_Item(ref BookMark[1]).Range.Text = messages[1] + "---" + messages[2];
                doc.Bookmarks.get_Item(ref BookMark[2]).Range.Text = plantName;

                //插入表格
                //文档中创建表格
                Range      range    = doc.Bookmarks.get_Item(ref BookMark[3]).Range;//表格插入位置
                Word.Table newTable = doc.Tables.Add(range, 9, 4, ref missing, ref missing);
                //设置表格样式
                newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
                newTable.Borders.InsideLineStyle  = Word.WdLineStyle.wdLineStyleSingle;
                newTable.Columns[1].Width         = 70f;
                newTable.Columns[2].Width         = 60f;
                newTable.Columns[3].Width         = 60f;
                newTable.Columns[4].Width         = 250f;
                newTable.Cell(1, 1).Range.Text    = "";
                newTable.Cell(1, 2).Range.Text    = "当前值";
                newTable.Cell(1, 3).Range.Text    = "目标值";
                newTable.Cell(1, 4).Range.Text    = "备注";
                List <AlarmLevelTotal> lists = BeanTools.getBoList <AlarmLevelTotal>(messages[4]);
                for (int i = 0; i < 8; i++)
                {
                    //填充表格内容
                    newTable.Cell(i + 2, 1).Range.Text = lists[i].index_name;
                    newTable.Cell(i + 2, 2).Range.Text = lists[i].plant_num;
                    newTable.Cell(i + 2, 3).Range.Text = lists[i].index_goal;
                    newTable.Cell(i + 2, 4).Range.Text = lists[i].remark;
                }

                //插入图片
                doc.Bookmarks.get_Item(ref BookMark[4]).Select();
                app.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                app.Selection.InlineShapes.AddPicture(messages[3] + messages[0] + startTime + endTime + "_0.png", ref missing, ref missing, ref missing);

                //插入图片
                doc.Bookmarks.get_Item(ref BookMark[5]).Select();
                app.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                app.Selection.InlineShapes.AddPicture(messages[3] + messages[0] + startTime + endTime + "_1.png", ref missing, ref missing, ref missing);

                //插入图片
                doc.Bookmarks.get_Item(ref BookMark[6]).Select();
                app.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                app.Selection.InlineShapes.AddPicture(messages[3] + messages[0] + startTime + endTime + "_2.png", ref missing, ref missing, ref missing);

                //插入图片
                doc.Bookmarks.get_Item(ref BookMark[7]).Select();
                app.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                app.Selection.InlineShapes.AddPicture(messages[3] + messages[0] + startTime + endTime + "_3.png", ref missing, ref missing, ref missing);

                //插入图片
                doc.Bookmarks.get_Item(ref BookMark[8]).Select();
                app.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                app.Selection.InlineShapes.AddPicture(messages[3] + messages[0] + startTime + endTime + "_4.png", ref missing, ref missing, ref missing);

                //插入图片
                doc.Bookmarks.get_Item(ref BookMark[9]).Select();
                app.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                app.Selection.InlineShapes.AddPicture(messages[3] + messages[0] + startTime + endTime + "_5.png", ref missing, ref missing, ref missing);

                //插入图片
                doc.Bookmarks.get_Item(ref BookMark[10]).Select();
                app.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                app.Selection.InlineShapes.AddPicture(messages[3] + messages[0] + startTime + endTime + "_6.png", ref missing, ref missing, ref missing);

                //插入图片
                doc.Bookmarks.get_Item(ref BookMark[11]).Select();
                app.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
                app.Selection.InlineShapes.AddPicture(messages[3] + messages[0] + startTime + endTime + "_7.png", ref missing, ref missing, ref missing);

                //插入表格
                List <AlarmTop20> lists_2 = BeanTools.getBoList <AlarmTop20>(messages[5]);
                //文档中创建表格
                range    = doc.Bookmarks.get_Item(ref BookMark[12]).Range;//表格插入位置
                newTable = doc.Tables.Add(range, 1 + lists_2.Count, 4, ref missing, ref missing);
                //设置表格样式
                newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
                newTable.Borders.InsideLineStyle  = Word.WdLineStyle.wdLineStyleSingle;
                //newTable.Columns[1].Width = 100f;
                //newTable.Columns[2].Width = 100f;
                //newTable.Columns[3].Width = 10f;
                //newTable.Columns[4].Width = 105f;
                newTable.Cell(1, 1).Range.Text = "位号";
                newTable.Cell(1, 2).Range.Text = "工段";
                newTable.Cell(1, 3).Range.Text = "报警次数";
                newTable.Cell(1, 4).Range.Text = "占总数%";

                for (int i = 0; i < lists_2.Count; i++)
                {
                    //填充表格内容
                    newTable.Cell(i + 2, 1).Range.Text = lists_2[i].tagname;
                    newTable.Cell(i + 2, 2).Range.Text = lists_2[i].area;
                    newTable.Cell(i + 2, 3).Range.Text = lists_2[i].count.ToString();
                    newTable.Cell(i + 2, 4).Range.Text = lists_2[i].percent.ToString();
                }

                //插入表格
                List <AlarmStanding> lists_3 = BeanTools.getBoList <AlarmStanding>(messages[6]);
                //文档中创建表格
                range    = doc.Bookmarks.get_Item(ref BookMark[13]).Range;//表格插入位置
                newTable = doc.Tables.Add(range, 1 + lists_3.Count, 5, ref missing, ref missing);
                //设置表格样式
                newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
                newTable.Borders.InsideLineStyle  = Word.WdLineStyle.wdLineStyleSingle;
                //newTable.Columns[1].Width = 100f;
                //newTable.Columns[2].Width = 100f;
                //newTable.Columns[3].Width = 10f;
                //newTable.Columns[4].Width = 105f;
                newTable.Cell(1, 1).Range.Text = "位号";
                newTable.Cell(1, 2).Range.Text = "工段";
                newTable.Cell(1, 3).Range.Text = "报警开始时间";
                newTable.Cell(1, 4).Range.Text = "报警结束时间";
                newTable.Cell(1, 5).Range.Text = "报警持续时间(分钟)";

                for (int i = 0; i < lists_3.Count; i++)
                {
                    //填充表格内容
                    newTable.Cell(i + 2, 1).Range.Text = lists_3[i].tagname;
                    newTable.Cell(i + 2, 2).Range.Text = lists_3[i].area;
                    newTable.Cell(i + 2, 3).Range.Text = lists_3[i].startTime;
                    newTable.Cell(i + 2, 4).Range.Text = lists_3[i].endTime;
                    newTable.Cell(i + 2, 5).Range.Text = lists_3[i].alarmInterval.ToString();
                }

                //插入表格
                List <AlarmChattering> lists_4 = BeanTools.getBoList <AlarmChattering>(messages[7]);
                //文档中创建表格
                range    = doc.Bookmarks.get_Item(ref BookMark[14]).Range;//表格插入位置
                newTable = doc.Tables.Add(range, 1 + lists_4.Count, 5, ref missing, ref missing);
                //设置表格样式
                newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
                newTable.Borders.InsideLineStyle  = Word.WdLineStyle.wdLineStyleSingle;
                //newTable.Columns[1].Width = 100f;
                //newTable.Columns[2].Width = 100f;
                //newTable.Columns[3].Width = 10f;
                //newTable.Columns[4].Width = 105f;
                newTable.Cell(1, 1).Range.Text = "位号";
                newTable.Cell(1, 2).Range.Text = "工段";
                newTable.Cell(1, 3).Range.Text = "重复报警次数";
                newTable.Cell(1, 4).Range.Text = "报警总次数";
                newTable.Cell(1, 5).Range.Text = "重复报警率";

                for (int i = 0; i < lists_4.Count; i++)
                {
                    //填充表格内容
                    newTable.Cell(i + 2, 1).Range.Text = lists_4[i].tagname;
                    newTable.Cell(i + 2, 2).Range.Text = lists_4[i].area;
                    newTable.Cell(i + 2, 3).Range.Text = lists_4[i].chatteringCount.ToString();
                    newTable.Cell(i + 2, 4).Range.Text = lists_4[i].totalCount.ToString();
                    newTable.Cell(i + 2, 5).Range.Text = lists_4[i].percent.ToString();
                }

                //输出完毕后关闭doc对象
                object IsSave = true;
                doc.Close(ref IsSave, ref missing, ref missing);
            }


            catch (Exception Ex)
            {
                return;
            }
        }