Export MS ChartImage to PPT
本文关键字:PPT to ChartImage MS Export | 更新日期: 2023-09-27 18:06:44
我正在尝试将图表图像导出到PPT中,即一张幻灯片中的每个图像,下面是我的代码
String strTemplate, strPic;
strTemplate = "C:''Program Files (x86)''Microsoft Office''Templates''Presentation Designs''Maple.GIF";
//strPic = @"C:'Users'rongala.ganesh'Pictures'arrow_left_green_large.png";
bool bAssistantOn;
Microsoft.Office.Interop.PowerPoint.Application objApp;
Microsoft.Office.Interop.PowerPoint.Presentations objPresSet;
Microsoft.Office.Interop.PowerPoint._Presentation objPres;
Microsoft.Office.Interop.PowerPoint.Slides objSlides;
Microsoft.Office.Interop.PowerPoint._Slide objSlide;
Microsoft.Office.Interop.PowerPoint.TextRange objTextRng;
Microsoft.Office.Interop.PowerPoint.Shapes objShapes;
Microsoft.Office.Interop.PowerPoint.Shape objShape;
Microsoft.Office.Interop.PowerPoint.SlideShowWindows objSSWs;
Microsoft.Office.Interop.PowerPoint.SlideShowTransition objSST;
Microsoft.Office.Interop.PowerPoint.SlideShowSettings objSSS;
Microsoft.Office.Interop.PowerPoint.SlideRange objSldRng;
//Create a new presentation based on a template.
objApp = new Microsoft.Office.Interop.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, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
// objTextRng.Text = "FAME Presentation";
objTextRng.Font.Name = "Comic Sans MS";
objTextRng.Font.Size = 25;
foreach (var ar in arr)
{
// ScriptManager.RegisterClientScriptBlock(this.Page,typeof(string),"alert"
objSlide = objSlides.Add(1, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
// objTextRng.Text = "FAME Presentation";
objTextRng.Font.Name = "Comic Sans MS";
objTextRng.Font.Size = 25;
string[] str = (string[])ar;
strPic = str[0];
objSlide.Shapes.AddPicture(strPic, MsoTriState.msoFalse, MsoTriState.msoTrue,
150, 150, 500, 350);
objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
objTextRng.Text = str[1];
objTextRng.Font.Name = "Comic Sans MS";
objTextRng.Font.Size = 48;
//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.
//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.
}
}
catch (Exception ex)
{
throw ex;
}
当我运行这个时,一切都在localHost中工作正常,但是当我托管这个应用程序IIS7时,它抛出异常PowerPoint无法打开文件。所以我认为最好添加响应头,所以我遵循下面的代码
dt
是数据表名称,其中包含了当我点击SaveImage时保存的图像路径
GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();////////write this code only if paging is enabled.
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.ppt");///////for text file write FileName.txt
Response.Charset = "";
// If you want the option to open the Excel file without saving than
// comment out the line below
// Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.ppt";//for text file write vnd.txt
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite =
new HtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
这里我可以添加图片到PPT中,但是它们在同一张幻灯片中,并且图片相互重叠
MS不支持在服务器上使用互操作(如ASP.NET) -参见http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2
自从Windows Vista MS引入了一些安全相关的措施来防止Windows服务做"类似桌面"的事情…这意味着你必须绕过几个安全措施才能让它工作(不推荐!)。
要在服务器场景中处理PPT,有一些选项(免费和商业):
有一个免费的选项(虽然只适用于较新的pptx格式!),例如ms的openxml2
商业选项是Aspose。可以处理旧(PPT)和新(PPTX)格式的幻灯片