• ASP.NET导出数据到PPT格式的文件(生成PPT文件)
  • 牧羊人 发表于 2016/2/20 12:00:00 | 分类标签: 导出数据 导出PPT ASP.NET
  • 现在网上关于ASP.NET导出数据到Excel或者pdf的相关例子比较多,但是导出ppt格式的例子并不多。前一段时间因工作需要,需增加ppt数据的导出下载。发现网络上这方面资料并不是很多,零零散散地找到一些相关的资料,经过自己的试验,终于完成相关功能。应博友要求,在此分享下我的经验,不好之处还望大家多多指出。

    在做之前,首先需要添加相关引用Microsoft.Office.Interop.PowerPoint.dll

    using PowerPoint = Microsoft.Office.Interop.PowerPoint;

    操作PPT代码如下:

    public void createPPT()
    {
    try
    {
    //ppt
    string path = string.Format("{0}/{1}.ppt", Server.MapPath("."), DateTime.Now.Ticks.ToString());
    //ppt
    string MyTemplateFile = "d:\\test.pot";
    PowerPoint.ApplicationClass MyApp;
    PowerPoint.Presentations MyPresSet;
    PowerPoint._Presentation MyPres;
    PowerPoint.Shape objShape;
    PowerPoint.Slides objSlides;
    PowerPoint._Slide MySlide;
    PowerPoint.TextRange objTextRng;
    PowerPoint.Table table = null;
    MyApp = new PowerPoint.ApplicationClass();
    //
    if (File.Exists((string)path))
    {
    File.Delete((string)path);
    }
    Object Nothing = Missing.Value;
    //
    MyPres = MyApp.Presentations.Open(MyTemplateFile, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
    MyPresSet = MyApp.Presentations;
    objSlides = MyPres.Slides;

    //张PPT ppLayoutTitle
    MySlide = objSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutTitle);
    //(left:10,top:110,width:700,height:400
    objTextRng = MySlide.Shapes.AddLabel(MsoTextOrientation.msoTextOrientationHorizontal, 10, 110, 700, 400).TextFrame.TextRange;
    objTextRng.Text = " PPT";
    objTextRng.Font.Color.RGB = 0x66CCFF; //
    objTextRng.Font.Size = 42; //

    //张PPT ppLayoutBlank
    MySlide = objSlides.Add(2, PowerPoint.PpSlideLayout.ppLayoutBlank);
    //
    MySlide.Shapes.AddPicture("1.jpg", MsoTriState.msoFalse, MsoTriState.msoTrue, 110, 140, 500, 300);

    //张PPT ppLayoutTitleOnly
    MySlide = objSlides.Add(3, PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
    objTextRng = MySlide.Shapes[1].TextFrame.TextRange;
    objTextRng.Text = "目录";
    objTextRng.Font.Size = 32;
    //
    MySlide.Shapes.AddPicture("1.jpg", MsoTriState.msoFalse, MsoTriState.msoTrue, 110, 140, 500, 300);

    //张PPT
    MySlide = objSlides.Add(3, PowerPoint.PpSlideLayout.ppLayoutBlank);
    //
    objShape = MySlide.Shapes.AddTable(3, 3, 105, 150, 400, 100);
    table = objShape.Table;
    for (int i = 1; i <= table.Rows.Count; i++)
    {
    for (int j = 1; j <= table.Columns.Count; j++)
    {
    table.Cell(i, j).Shape.TextFrame.TextRange.Font.Size = 12;
    table.Cell(i, j).Shape.TextFrame.TextRange.Text = string.Format("[{0},{1}]", i, j);
    }
    }


    //
    PowerPoint.PpSaveAsFileType format = PowerPoint.PpSaveAsFileType.ppSaveAsDefault;
    //
    MyPres.SaveAs(path, format, Microsoft.Office.Core.MsoTriState.msoFalse);
    //闭excelDoc
    MyPres.Close();
    //闭excelApp
    MyApp.Quit();
    }
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 感谢本文作者
  • 作者头像
  • 昵称:牧羊人
  • 加入时间:2013/6/18 0:00:00
  • TA的签名
  • 这家伙很懒,虾米都没写
  • +进入TA的空间
  • 以下内容也很赞哦
分享按钮