c#操作ppt,获取ppt中超链接,然后修改超链接的texttodisplay属性时,会将adress属性置为null,这个是什么原因?请大神们指点一下。
1、Powerpoint 版本?
2、怎么操作PPT? 代码呢?
明显就是代码中有问题或者是版本兼容性问题之类,你这些都不说,怎么帮你。
是10版本的,
PPT.Application pa = new PPT.Application();
PPT.Presentation pp = null;
pp = pa.Presentations.Open(fileName,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoFalse);
foreach (PPT.Slide mSlide in pp.Slides)
{
PPT.Hyperlinks links = mSlide.Hyperlinks;
for (int i = 1; i <= links.Count; i++)
{
PPT.Hyperlink link = links[i];
link.Address = "www.test.com";
link.TextToDisplay = "test";
}
这个问题比较特殊,如果超链接在ppt的起始位置,是可以替换的,但是如果前面加了字符,那么就会出现描述中的问题。
@aixuebing: 场景描述仍然不够清楚,无法进行测试。
建议做以下单独测试:
1、一个PPT,上面有三个文本,分别链接到www.microsoft.com , www.msn.com, www.google.com。
2、试试看能不能读取出来。
3、试试看能不能全部修改为www.sina.com.cn
@爱编程的大叔: 上面的code弄到vs里可以运行的
按照你说说的三个连接都可以获取到,如果都是microsoft是第一个位置(就是新建ppt,然后在连直接写超链接)是可以替换的,之后的在替换text,就会出现将url置成null的问题。
此问题重现方式:
1.建立一个ppt。
2.在上面随便写一些东西,然后添加一个超链接,在调试的时候就会发现给超链接的texttodisplay属性赋值的时候,会将adress置成null.
@aixuebing: 测试过了,不会,不知道你哪儿出错了。
For i = 1 To Me.Hyperlinks.Count
Me.Hyperlinks.Item(i).texttodisplay= "http://www.21cn.com" Me.Hyperlinks.Item(i).Address = "http://www.21cn.com" Next i
确切的情况是这样的,
所有的Hyperlink都还在,但是如果这三个是在一个SLIDE里面,会出现只有第一个还显示链接以及可以按右键出现超级链接的情况。
只有当这三个链接是在不同的SLIDE或是不同区域时,才能出现链接的状态。
这个问题应该是由于POWERPOINT的某些特性造成的,你如果测试Hyperlinks.count,会发现还是三个链接,链接并没有变成NULL,只是在POWERPOINT界面上没有效果。
再次测试,发现这个效果其实只是在编辑状态时没有,当运行F5时,每个链接仍然是有效的。
@爱编程的大叔: 你可以修改一个texttodisplay
@aixuebing: 修改过texttodisplay了。
@爱编程的大叔: 在超链接前面要加东西的,如果只是超链接,是没问题的。如果有字符的话,连接就会跑到字符上去。
@aixuebing:
你试试换用不同的操作方式或者对象看看,不要被一个方式堵死了。
这种小事情,只要一个结果正确的,没啥好讨论的。
请问您知道怎么往PPT中插入超链接吗?我想通过C#向PPT中插入一张带有超链接的图片。谢谢
你可以试试第三方控件来实现,像Spire.Presentation for .NET。它支持给幻灯片添加一张带有超链接的图片,在播放幻灯片时点击图片就能跳转到指定的网址。相关代码示例可以参考他们官网教程。https://www.e-iceblue.cn/hyperlink/add-and-get-hyperlink-from-image-in-powerpoint.html
Spire.Presentation for .NET下载地址: https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html