利用dotm模板动态添加web报表数据

原创 2015年11月10日 14:17:28

1. .dot是word 2007的模板,.dotm是word 2007以上的模板。

2. 主模块代码.

 CCWordApp test;
 test = new CCWordApp();
 test.Open(temppath);


test.GotoBookMark(BookMarkName);
 test.InsertText(VOY);

test.GotoBookMark(BookMarkName2);

 test.InsertImage(barFileName, 140, 40);

test.SaveAsPDF(exportFilefullname);

 test.Quit();

3.Word类,注意,oWordApplic.Selection.InlineShapes.AddPicture这个功能属于宏功能,所以需要用到.dotm模板,要不会报错,当时纠结这个bug 很久。

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.ComponentModel;
using BarcodeLib;
using Microsoft.Office.Interop.Word;
/// <summary>
///CCWordApp 的摘要说明
/// </summary>
public class CCWordApp
{
    private Microsoft.Office.Interop.Word.ApplicationClass oWordApplic; // a reference to Word application 引用Word应用程序  
    private Microsoft.Office.Interop.Word.Document oDoc;                    // a reference to the document 引用文档       
    public CCWordApp()
    {
        // activate the interface with the COM object of Microsoft Word  
        //激活与Microsoft Word的COM对象的接口  
        oWordApplic = new Microsoft.Office.Interop.Word.ApplicationClass();
    }

   /// <summary>  
    /// 插入图片  
    /// </summary>  
    /// <param name="picPath"></param>  
    public void InsertPicture(string picPath)
    {
        object missing = System.Reflection.Missing.Value;
        oWordApplic.Selection.InlineShapes.AddPicture(picPath, ref missing, ref missing, ref missing);
    }
    // Open a file (the file must exists) and activate it  打开一个文件(该文件必须存在),并激活它  
    public void Open(string strFileName)
    {
        object fileName = strFileName;
        object readOnly = false;
        object isVisible = true;
        object missing = System.Reflection.Missing.Value;
        oDoc = oWordApplic.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 isVisible, ref missing, ref missing, ref missing, ref missing);  
  
        oDoc.Activate();
    }
    // Open a new document打开一个新文档  
    public void Open()
    {
        object missing = System.Reflection.Missing.Value;
        oDoc = oWordApplic.Documents.Add(ref missing, ref missing, ref missing, ref missing);
        oDoc.Activate();
    }

    public void Quit()
    {
        object saveChange = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
        object missing = System.Reflection.Missing.Value;
        if (oDoc != null)
            oDoc.Close(ref saveChange, ref missing, ref missing);
        oWordApplic.Application.Quit(ref missing, ref missing, ref missing);
    }


    public void Save()
    {
        oDoc.Save();
    }


    public void SaveAs(string strFileName)
    {
        object missing = System.Reflection.Missing.Value;
        object fileName = strFileName;
        oDoc.SaveAs(ref fileName, 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);   
    }

    // Save the document in HTML format 以HTML格式保存文档  
    public void SaveAsHtml(string strFileName)
    {
        object missing = System.Reflection.Missing.Value;
        object fileName = strFileName;
        object Format = (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML;
        oDoc.SaveAs(ref fileName, ref Format, 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);
    }
    public void SaveAsPDF(string strFileName)
    {
        object missing = System.Reflection.Missing.Value;
        object fileName = strFileName;
        object fileformat = (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;
        oDoc.SaveAs(ref fileName, ref fileformat, 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);
    }


    public void InsertText(string strText)
    {
        oWordApplic.Selection.TypeText(strText);
        oWordApplic.Selection.SelectCurrentFont();
    }

    public void InsertLineBreak()
    {
        oWordApplic.Selection.TypeParagraph();
    }
    public void InsertLineBreak(int nline)
    {
        for (int i = 0; i < nline; i++)
            oWordApplic.Selection.TypeParagraph();
    }

    // Change the paragraph alignement 更改段落对齐键相  
    public void SetAlignment(string strType)
    {
        switch (strType)
        {
            case "Center":
                oWordApplic.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
                break;
            case "Left":
                oWordApplic.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
                break;
            case "Right":
                oWordApplic.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
                break;
            case "Justify":
                oWordApplic.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;
                break;
        }
    }

    // if you use thif function to change the font you should call it again with 如果您使用此功能来改变字体,你应该再次调用它   
    // no parameter in order to set the font without a particular format 为了不带参数设置字体没有特定的格式  
    public void SetFont(string strType)
    {
        switch (strType)
        {
            case "Bold":
                oWordApplic.Selection.Font.Bold = 1;
                break;
            case "Italic":
                oWordApplic.Selection.Font.Italic = 1;
                break;
            case "Underlined":
                oWordApplic.Selection.Font.Subscript = 0;
                break;
        }
    }


    // disable all the style  禁用所有的风格  
    public void SetFont()
    {
        oWordApplic.Selection.Font.Bold = 0;
        oWordApplic.Selection.Font.Italic = 0;
        oWordApplic.Selection.Font.Subscript = 0;
    }


    public void SetFontName(string strType)
    {
        oWordApplic.Selection.Font.Name = strType;
    }

    public void SetFontSize(int nSize)
    {
        oWordApplic.Selection.Font.Size = nSize;
    }

    public void InsertPagebreak()
    {
        // VB : Selection.InsertBreak Type:=wdPageBreak  
        object pBreak = (int)Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
        oWordApplic.Selection.InsertBreak(ref pBreak);
    }

    // Go to a predefined bookmark, if the bookmark doesn't exists the application will raise an error   
    //去到一个预先定义的书签,如果书签不存在应用程序将引发错误  
    public void GotoBookMark(string strBookMarkName)
    {
        // VB :  Selection.GoTo What:=wdGoToBookmark, Name:="nome"  
        object missing = System.Reflection.Missing.Value;
        object Bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
        object NameBookMark = strBookMarkName;
        oWordApplic.Selection.GoTo(ref Bookmark, ref missing, ref missing, ref NameBookMark);
    }

    public void GoToTheEnd()
    {
        // VB :  Selection.EndKey Unit:=wdStory  
        object missing = System.Reflection.Missing.Value;
        object unit;
        unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
        oWordApplic.Selection.EndKey(ref unit, ref missing);
    }
    public void GoToTheBeginning()
    {
        // VB : Selection.HomeKey Unit:=wdStory  
        object missing = System.Reflection.Missing.Value;
        object unit;
        unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
        oWordApplic.Selection.HomeKey(ref unit, ref missing);
    }


    public void GoToTheTable(int ntable)
    {
        object missing = System.Reflection.Missing.Value;
        object what;
        what = Microsoft.Office.Interop.Word.WdUnits.wdTable;
        object which;
        which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToFirst;
        object count;
        count = 1;
        oWordApplic.Selection.GoTo(ref what, ref which, ref count, ref missing);
        oWordApplic.Selection.Find.ClearFormatting();
       oWordApplic.Selection.Text = "";
    }

    public void GoToRightCell()
    {
        object missing = System.Reflection.Missing.Value;
        object direction;
        direction = Microsoft.Office.Interop.Word.WdUnits.wdCell;
        oWordApplic.Selection.MoveRight(ref direction, ref missing, ref missing);
    }


    public void GoToLeftCell()
    {
      object missing = System.Reflection.Missing.Value;
        object direction;
        direction = Microsoft.Office.Interop.Word.WdUnits.wdCell;
        oWordApplic.Selection.MoveLeft(ref direction, ref missing, ref missing);
    }


    public void GoToDownCell()
    {
        object missing = System.Reflection.Missing.Value;
        object direction;
        direction = Microsoft.Office.Interop.Word.WdUnits.wdLine;
        oWordApplic.Selection.MoveDown(ref direction, ref missing, ref missing);
    }


    public void GoToUpCell()
    {
        object missing = System.Reflection.Missing.Value;
        object direction;
        direction = Microsoft.Office.Interop.Word.WdUnits.wdLine;
        oWordApplic.Selection.MoveUp(ref direction, ref missing, ref missing);
    }
    // this function doesn't work 这个功能不起作用  
    public void InsertPageNumber(string strType, bool bHeader)
    {
        object missing = System.Reflection.Missing.Value;
        object alignment;
        object bFirstPage = false;
        object bF = true;
        //if (bHeader == true)  
        //WordApplic.Selection.HeaderFooter.PageNumbers.ShowFirstPageNumber = bF;  
        switch (strType)
        {
            case "Center":
                alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberCenter;
                    break;
            case "Right":
                alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberRight;
                //oWordApplic.Selection.HeaderFooter.PageNumbers.Item(1).Alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberRight;  
                break;
            case "Left":
                alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberLeft;
                oWordApplic.Selection.HeaderFooter.PageNumbers.Add(ref alignment, ref bFirstPage);
                break;
        }
    }
    public void InsertImage(string picPath, float picWidth, float picHeight)
    {
        object LinkToFile = false;
        object SaveWithDocument = true;//
        object missing = System.Reflection.Missing.Value;
        InlineShape inlineShape = oWordApplic.Selection.InlineShapes.AddPicture(picPath, ref LinkToFile, ref SaveWithDocument, ref missing);
        inlineShape.Width = picWidth;
        inlineShape.Height = picHeight;
    } 
}


LNCS的WORD 2007模板使用【2014-01-08】

splnproc1110.dotm 模板适用于WORD 2007及以上版本。 【初始化】 首先将splnproc1110.dotm拷贝到要存放论文的目录下...
  • wyskys
  • wyskys
  • 2014年01月10日 08:17
  • 2790

基于EXCEL的WEB报表输出组件

HFSoft.Report是一个基于EXCEL的WEB报表输出组件,它的目标是快速灵活地建立EXCEL的报表文件。开发人员并不需要了解相关EXCEL(COM)、VBA等相关知识,只需要通过HFSoft...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2006年03月16日 11:57
  • 1440

价值5000元的web报表分享

与一个朋友聊天,发现他最近做了一个很棒的报表,用他的话来讲,起码值5000RMB,我拿来与大家分享下,共同进步。就是他最近接到公司财务部长大人的需求,需要通过采购和研发部门的降本计划,统计出各部门的降...
  • yuanziok
  • yuanziok
  • 2015年03月10日 16:39
  • 5622

web报表打印大全

首先在网页中添加:然后就可以依次加入功能按钮了: 将这两块东西放到就不会打印这些按钮了。当然要定义noprint了:.noprint{ DISPLAY: none }只要把不想打印的东西的css设置成...
  • nedvedno1
  • nedvedno1
  • 2007年07月29日 16:16
  • 3288

Web报表开发:ireport

Web报表开发 序言 在很多实际的项目里,报表都是其中十分重要的组成部分,例如把查询结果以报表的形式呈现出来。这里所提到的报表可不是简单的二维表,而是拥有复杂表头的、多维的、可以在运行期从...
  • yu452148611
  • yu452148611
  • 2015年09月01日 09:39
  • 1030

利用jasperReport制作web报表

1)给出自己制作的jasperReport的视图效果,方便对报表工具初期学习的选择。 2)自己制作报表的测试源码和所有相关学习资料,对应所有jar包,jasperReport版本。 ...
  • leixingbang1989
  • leixingbang1989
  • 2015年03月30日 09:15
  • 1961

word 2010一劳永逸改变默认模板的方法

1 要替换wrod的默认模板,首先需要找到word默认模板的位置,然后制作一下符合格式规范的模板替换默认模板,经验中以word 2010举例,其它版本的word操作类似。进入C盘,搜索一下Normal...
  • qinghegu689
  • qinghegu689
  • 2014年11月03日 15:52
  • 1468

GridView中动态添加模板列和其子控件集合

一、实施说明: 1 实施原因: 因为在做一个MOSS WebPart控件时候,遇到一个问题,如何选择需要导出的数据列; GridView的数据源是动态的,所以没有办法静态使用模板列,...
  • y29508968
  • y29508968
  • 2016年12月04日 11:09
  • 907

ASP.NET中为DataGrid动态创建模板列

 为DataGrid动态创建模板列,首先要实现ITemplate接口:public class MyDataGridTemplate : System.Web.UI.ITemplate...{    ...
  • junchieh
  • junchieh
  • 2007年03月09日 23:43
  • 832

利用VELICITY模板动态生成XML

private String getCCAUXmlValue(String policyNo, TripInsuranceInfo tripInsuranceInfo) { String xml...
  • guoxu775
  • guoxu775
  • 2011年06月24日 19:57
  • 3274
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用dotm模板动态添加web报表数据
举报原因:
原因补充:

(最多只允许输入30个字)