当前位置:编程学习 > C#/ASP.NET >>

这里有没有高手?,如何获取 PPT母版中指定位置的内容,可在加200分!!!!

RT 原帖在这 如有不清楚的可讨论:
http://topic.csdn.net/u/20110409/10/78871fe5-6b3a-4abb-997f-eb384c99ecf5.html --------------------编程问答--------------------
我是来帮顶的 --------------------编程问答-------------------- 你的Office是什么版本?

如果是2010我或许可以帮你 --------------------编程问答--------------------
引用 2 楼 icedmilk 的回复:
你的Office是什么版本?

如果是2010我或许可以帮你

终于遇到个志同道合的,
个人觉得版本相关性应该不大 主要是想知道原理啊

我原帖 贴了部分代码,现在就是想知道 怎么查找母板每页中指定位置文本框的内容,如果有代码,麻烦贴一下,谢谢! --------------------编程问答-------------------- 我只有思路!

第一:使用微软提供office接口 (PPT的我没搞过)
第二:将PPT存成xml ,然后读取里面的标签。(PPT的没搞过 搞过Word,下面的路径 就是我搞Word的一总结 希望对你有用)
http://www.myaspx.com/Example/Word/OupPutWordByWordXmlTemp.htm --------------------编程问答--------------------
引用 3 楼 yuhudie203 的回复:
引用 2 楼 icedmilk 的回复:
你的Office是什么版本?

如果是2010我或许可以帮你

终于遇到个志同道合的,
个人觉得版本相关性应该不大 主要是想知道原理啊

我原帖 贴了部分代码,现在就是想知道 怎么查找母板每页中指定位置文本框的内容,如果有代码,麻烦贴一下,谢谢!

那些互操作的dll是随Office附带的,所以Office版本的不同会导致接口有些差异

你可以把你的工程发到我邮箱里吧,我看看能不能帮你
faith1024@hotmail.com --------------------编程问答--------------------
引用 5 楼 icedmilk 的回复:
引用 3 楼 yuhudie203 的回复:
引用 2 楼 icedmilk 的回复:
你的Office是什么版本?

如果是2010我或许可以帮你

终于遇到个志同道合的,
个人觉得版本相关性应该不大 主要是想知道原理啊

我原帖 贴了部分代码,现在就是想知道 怎么查找母板每页中指定位置文本框的内容,如果有代码,麻烦贴一下,谢谢!

那些互操作的dll是随Office附带的……


公司的东西 不能外发啊,也没有外发权限
我的office版本是2007 之前做的和2003感觉也没啥区别

现在就想知道怎么能获取ppt母版中的内容 我能单个获取到1-2个框的内容,但是不知道母版的每一页是怎么获取的,不知道你能不能给贴点代码啊? 谢谢了! --------------------编程问答-------------------- --------------------编程问答-------------------- 那给发个PPT的例子吧,我试试

引用 6 楼 yuhudie203 的回复:
引用 5 楼 icedmilk 的回复:
引用 3 楼 yuhudie203 的回复:
引用 2 楼 icedmilk 的回复:
你的Office是什么版本?

如果是2010我或许可以帮你

终于遇到个志同道合的,
个人觉得版本相关性应该不大 主要是想知道原理啊

我原帖 贴了部分代码,现在就是想知道 怎么查找母板每页中指定位置文本框的内容,如果有代码,麻烦贴一下,谢谢!
……
--------------------编程问答--------------------
引用 8 楼 icedmilk 的回复:
那给发个PPT的例子吧,我试试


//如下代码是查找PPT母版中带有▲符号的文本框,但我只能找到其中的几页 并不能找到所有
PowerPoint.Application PptApp = new PowerPoint.Application();
                PowerPoint.Presentation Present = null;
                PptApp.DisplayAlerts = PowerPoint.PpAlertLevel.ppAlertsNone;
                object missing = Type.Missing;
                FileInfo fileinfo = new FileInfo(FilePath);
                DateTime savedaccesstime = fileinfo.LastAccessTime;
               
                Present = PptApp.Presentations.Open(FilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
                if (Present.Slides.Count >= 1)
                {
                    
                    foreach (PowerPoint.Shape pptShape in Present.SlideMaster.Shapes)
                    {
                        if (MsoTriState.msoFalse == pptShape.HasTextFrame) continue;
                        if (MsoTriState.msoFalse == pptShape.TextFrame.HasText) continue;
                        str = pptShape.TextFrame.TextRange.Text;
                        if (str.Contains(@"▲"))
                        {
                            break;
                        }
                        
                       
                    }
                 }
--------------------编程问答-------------------- 试出来了,呵呵
其实只有母版的第一页是SlideMaster
下面的几页都是这个SlideMaster的CustomLayout

                foreach (PowerPoint.Shape pptShape in Present.SlideMaster.Shapes)
                {
                    if (MsoTriState.msoFalse == pptShape.HasTextFrame) continue;
                    if (MsoTriState.msoFalse == pptShape.TextFrame.HasText) continue;
                    string str = pptShape.TextFrame.TextRange.Text;
                    if (str.Contains(@"▲"))
                    {
                        pptShape.TextFrame.TextRange.Text = "A";
                        break;
                    }
                }
                foreach (PowerPoint.CustomLayout layout in Present.SlideMaster.CustomLayouts)
                {
                    foreach (PowerPoint.Shape pptShape in layout.Shapes)
                    {
                        if (MsoTriState.msoFalse == pptShape.HasTextFrame) continue;
                        if (MsoTriState.msoFalse == pptShape.TextFrame.HasText) continue;
                        string str = pptShape.TextFrame.TextRange.Text;
                        if (str.Contains(@"▲"))
                        {
                            pptShape.TextFrame.TextRange.Text = "A";
                            break;
                        }
                    }
                }
--------------------编程问答--------------------
引用 10 楼 icedmilk 的回复:
试出来了,呵呵
其实只有母版的第一页是SlideMaster
下面的几页都是这个SlideMaster的CustomLayout

C# code

                foreach (PowerPoint.Shape pptShape in Present.SlideMaster.Shapes)

感谢icedmilk,但我的问题目前还没有解决.

我发现我需要的字符串在背景图上面,打开PPT进行搜索替换是可以的,如何才能得到这个字符串呢? --------------------编程问答--------------------
引用 10 楼 icedmilk 的回复:
试出来了,呵呵
其实只有母版的第一页是SlideMaster
下面的几页都是这个SlideMaster的CustomLayout

C# code

                foreach (PowerPoint.Shape pptShape in Present.SlideMaster.Shapes)
                {
                 ……

感谢icedmilk,但我的问题还没有解决。

我突然发现我要找的字符串是在背景图上的,打开PPT进行查找替换是可以找到并替换这些字符串的,

背景图上的字符串应该如何获取呢? --------------------编程问答-------------------- 什么是在背景图上的? 文本框吗?
引用 12 楼 yuhudie203 的回复:
引用 10 楼 icedmilk 的回复:
试出来了,呵呵
其实只有母版的第一页是SlideMaster
下面的几页都是这个SlideMaster的CustomLayout

C# code

foreach (PowerPoint.Shape pptShape in Present.SlideMaster.Shapes)
{
……

感谢icedmilk,但我的问题还没有解……
--------------------编程问答--------------------
引用 13 楼 icedmilk 的回复:
什么是在背景图上的? 文本框吗?

引用 12 楼 yuhudie203 的回复:
引用 10 楼 icedmilk 的回复:
试出来了,呵呵
其实只有母版的第一页是SlideMaster
下面的几页都是这个SlideMaster的CustomLayout

C# code

foreach (PowerPoint.Shape pptShape in Present.Slide……

是啊,是文本框在背景图片上 如果取消背景图片的话,这个文本框也会跟着消失,

但是PPT 的查找替换可以对其进行修改,

怎样得到这个文本框及其内容呢? --------------------编程问答-------------------- 能给我发个这样的PPT过来吗?
引用 14 楼 yuhudie203 的回复:
引用 13 楼 icedmilk 的回复:
什么是在背景图上的? 文本框吗?

引用 12 楼 yuhudie203 的回复:
引用 10 楼 icedmilk 的回复:
试出来了,呵呵
其实只有母版的第一页是SlideMaster
下面的几页都是这个SlideMaster的CustomLayout

C# code

foreach (PowerPoint.Shape pp……
--------------------编程问答-------------------- 替换一下这两个东西试试

Present.SlideMaster.Background.TextFrame.TextRange.Text
Present.SlideMaster.CustomLayouts[0].Background.TextFrame.TextRange.Text --------------------编程问答-------------------- 还没做过这类的东西!来学习学习! --------------------编程问答--------------------
引用 16 楼 icedmilk 的回复:
替换一下这两个东西试试

Present.SlideMaster.Background.TextFrame.TextRange.Text
Present.SlideMaster.CustomLayouts[0].Background.TextFrame.TextRange.Text


PPT发布出去啊 我先试试哈~ --------------------编程问答-------------------- PPT那个我试了一下 还不行啊 我用Present.SlideMaster.Background.TextFrame.TextRange.Text
Present.SlideMaster.CustomLayouts[0].Background.TextFrame.TextRange.Text 这两个都替换了,得不到我需要的文本。
能不能给点思路啊,另外Present.SlideMaster.Background得到的是母版中一页的背景图吧?其他的如何获得呢? --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,