首页 新闻 会员 周边

[紧急]asp.net 生成PPT在IIS环境下无效果

0
悬赏园豆:50 [已关闭问题]

这个是大家一般都使用的生成PPT的代码

但是在 VS2005中运行是可以的, 如果把他架设到IIS就没有效果了,请问是怎么回事啊 

 

GC.Collect();
        String strTemplate, strPic;
        strTemplate =
          "D:\\OLD\\Temp\\12345.ppt";
        strPic = "D:\\OLD\\Temp\\12345.jpg";
        bool bAssistantOn;

        PowerPoint.Application objApp;
        PowerPoint.Presentations objPresSet;
        PowerPoint._Presentation objPres;
        PowerPoint.Slides objSlides;
        PowerPoint._Slide objSlide;
        PowerPoint.TextRange objTextRng;
        PowerPoint.Shapes objShapes;
        PowerPoint.Shape objShape;
        PowerPoint.SlideShowWindows objSSWs;
        PowerPoint.SlideShowTransition objSST;
        PowerPoint.SlideShowSettings objSSS;
        PowerPoint.SlideRange objSldRng;
        Graph.Chart objChart;

        //Create a new presentation based on a template.
        objApp = new PowerPoint.Application();
        objApp.Visible = MsoTriState.msoTrue;
        objPresSet = objApp.Presentations;
        objPres = objPresSet.Open(strTemplate,
            MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue);
        objSlides = objPres.Slides;

        //Build Slide #1:
        //Add text to the slide, change the font and insert/position a
        //picture on the first slide.
        objSlide = objSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
        objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
        objTextRng.Text = "My Sample Presentation";
        objTextRng.Font.Name = "Comic Sans MS";
        objTextRng.Font.Size = 48;
        objSlide.Shapes.AddPicture(strPic, MsoTriState.msoFalse, MsoTriState.msoTrue,
            150, 150, 500, 350);

        //Build Slide #2:
        //Add text to the slide title, format the text. Also add a chart to the
        //slide and change the chart type to a 3D pie chart.
        objSlide = objSlides.Add(2, PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
        objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
        objTextRng.Text = "My Chart";
        objTextRng.Font.Name = "Comic Sans MS";
        objTextRng.Font.Size = 48;
        objChart = (Graph.Chart)objSlide.Shapes.AddOLEObject(150, 150, 480, 320,
            "MSGraph.Chart.8", "", MsoTriState.msoFalse, "", 0, "",
            MsoTriState.msoFalse).OLEFormat.Object;
        objChart.ChartType = Graph.XlChartType.xl3DPie;
        objChart.Legend.Position = Graph.XlLegendPosition.xlLegendPositionBottom;
        objChart.HasTitle = true;
        objChart.ChartTitle.Text = "Here it is...";

        //Build Slide #3:
        //Change the background color of this slide only. Add a text effect to the slide
        //and apply various color schemes and shadows to the text effect.
        objSlide = objSlides.Add(3, PowerPoint.PpSlideLayout.ppLayoutBlank);
        objSlide.FollowMasterBackground = MsoTriState.msoFalse;
        objShapes = objSlide.Shapes;
        objShape = objShapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect27,
          "The End", "Impact", 96, MsoTriState.msoFalse, MsoTriState.msoFalse, 230, 200);

        //Modify the slide show transition settings for all 3 slides in
        //the presentation.
        int[] SlideIdx = new int[3];
        for (int i = 0; i < 3; i++) SlideIdx[i] = i + 1;
        objSldRng = objSlides.Range(SlideIdx);
        objSST = objSldRng.SlideShowTransition;
        objSST.AdvanceOnTime = MsoTriState.msoTrue;
        objSST.AdvanceTime = 3;
        objSST.EntryEffect = PowerPoint.PpEntryEffect.ppEffectBoxOut;

        //Prevent Office Assistant from displaying alert messages:
        bAssistantOn = objApp.Assistant.On;
        objApp.Assistant.On = false;

        //Run the Slide show from slides 1 thru 3.
        objSSS = objPres.SlideShowSettings;
        objSSS.StartingSlide = 1;
        objSSS.EndingSlide = 3;
        objSSS.Run();

        //Wait for the slide show to end.
        objSSWs = objApp.SlideShowWindows;
        while (objSSWs.Count >= 1) System.Threading.Thread.Sleep(100);

        //Reenable Office Assisant, if it was on:
        if (bAssistantOn)
        {
            objApp.Assistant.On = true;
            objApp.Assistant.Visible = false;
        }

        //Close the presentation without saving changes and quit PowerPoint.
       objPres.Close();
        objApp.Quit();

搞IT的狐狸的主页 搞IT的狐狸 | 初学一级 | 园豆:0
提问于:2009-05-25 18:54
< >
分享
其他回答(1)
0

这段代码是写在.ashx中么。

可能IIS未添加对.ashx类型的处理

Ropean | 园豆:121 (初学一级) | 2009-05-26 11:39
0

strTemplate =
"D:\\OLD\\Temp\\12345.ppt";
strPic = "D:\\OLD\\Temp\\12345.jpg";
除非你的IIS站点有权限访问这个目录和文件,要不然肯定这里就出错了.

PowerPoint.Application objApp;
你似乎引用的Office里的PowerPoint,这样的话服务器应该要安装PowerPoint才行.

I,Robot | 园豆:9783 (大侠五级) | 2009-05-26 12:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册