之前介绍过,今天我们说一说如何使用spire.presentation来提取ppt中smartart图形的文本内容以及删除节点。
首先, 准备一个文档中含有smartart图形的幻灯片文件。
提取ppt中smartart图形的文本内容
代码如下:
c#
//实例化presentation对象
presentation ppt = new presentation();
//加载文档
ppt.loadfromfile(@"smartart测试文档.pptx");
//实例化一个stringbuilder对象用于存储获取出来的文本字符串
stringbuilder sb = new stringbuilder();
//遍历文档所有smartart节点, 获取其中的文本内容
for (int i = 0; i < ppt.slides.count; i )
{
for (int j = 0; j < ppt.slides[i].shapes.count; j )
{
if (ppt.slides[i].shapes[j] is ismartart)
{
ismartart smartart = ppt.slides[i].shapes[j] as ismartart;
for (int k = 0; k < smartart.nodes.count; k )
{
sb.appendline(smartart.nodes[k].textframe.text);
}
}
}
}
//将字符串从stringbuilder中写出到txt文件
file.writealltext("result.txt", sb.tostring());
vb.net
'实例化presentation对象
dim ppt as new presentation()
'加载文档
ppt.loadfromfile("smartart测试文档.pptx")
'实例化一个stringbuilder对象用于存储获取出来的文本字符串
dim sb as new stringbuilder()
'遍历文档所有smartart节点, 获取其中的文本内容
for i as integer = 0 to ppt.slides.count - 1
for j as integer = 0 to ppt.slides(i).shapes.count - 1
if typeof ppt.slides(i).shapes(j) is ismartart then
dim smartart as ismartart = trycast(ppt.slides(i).shapes(j), ismartart)
for k as integer = 0 to smartart.nodes.count - 1
sb.appendline(smartart.nodes(k).textframe.text)
next
end if
next
next
'将字符串从stringbuilder中写出到txt文件
file.writealltext("result.txt", sb.tostring())
效果图如下:
删除smartart图形中的节点
代码如下:
c#
//实例化presentation对象
presentation ppt = new presentation();
//加载文档
ppt.loadfromfile(@"smartart测试文档.pptx");
//获取smartart图形的所有节点
ismartart smartart = ppt.slides[0].shapes[0] as ismartart;
ismartartnodecollection nodes = smartart.nodes;
//删除第一个节点下的第一个子节点下的第二个子节点,也就是"营销部"
nodes[0].childnodes[0].childnodes.removenodebyposition(1);
//保存到本地并打开
ppt.savetofile("smartart结果文档.pptx", fileformat.pptx2010);
system.diagnostics.process.start("smartart结果文档.pptx");
vb.net
'实例化presentation对象
dim ppt as new presentation()
'加载文档
ppt.loadfromfile("smartart测试文档.pptx")
'获取smartart图形的所有节点
dim smartart as ismartart = trycast(ppt.slides(0).shapes(0), ismartart)
dim nodes as ismartartnodecollection = smartart.nodes
'删除第一个节点下的第一个子节点下的第二个子节点,也就是"营销部"
nodes(0).childnodes(0).childnodes.removenodebyposition(1)
'保存到本地并打开
ppt.savetofile("smartart结果文档.pptx", fileformat.pptx2010)
system.diagnostics.process.start("smartart结果文档.pptx")
效果图如下: