如何使用word interop C#从现有word文档中获取smartart索引 [英] How to get smartart index from existing word document using word interop C#
本文介绍了如何使用word interop C#从现有word文档中获取smartart索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
亲爱的所有人,
我想评估smartart形状,它已插入现有的word文档中。文档中包含n个smartart形状。
我在谷歌上搜索过这个,但我找不到合适的。
请查看我的代码....
我尝试了什么:
Dear All,
I want to evaluate smartart shape, which is already inserted in the existing word document. Where the document contain n number of smartart shapes.
I alreay searched on google regarding this, but I did not find suitable one.
Please review my code....
What I have tried:
public static bool EvaluateSmartArtShape(IQuestion question, string filename, SmartArtShapes _smartArtShape)
{
WordInterop.Application wordApplication = GetOrCreateWordApplication(question.ObjectStore);
try
{
//Avoid screen flickering or unwanted alerts while initializing
wordApplication.ScreenUpdating = false;
WordInterop.WdAlertLevel displayAlertLevel = wordApplication.DisplayAlerts;
wordApplication.DisplayAlerts = WordInterop.WdAlertLevel.wdAlertsNone;
WordInterop.Document wordDocument = wordApplication.Documents.Open(filename);
//WORD
WordInterop.Shapes ws = wordDocument.Shapes;
foreach(WordInterop.Shape s in ws)
{
if (s.HasSmartArt == MsoTriState.msoTrue)
{
if (s == wordApplication.SmartArtLayouts[(int)_smartArtShape])//line 697
{
return true;
}
}
}
wordDocument.Close();
}
catch (Exception ee)
{
string strError = ee.ToString();
Cleanup(question.ObjectStore, true);
}
return false;
}
错误:
Error:
System.Runtime.InteropServices.COMException (0x80010105): The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))
at Microsoft.Office.Core.SmartArtLayouts.get_Item(Object Index)
at TeTec.Action.Office2013.Word.WordHelper.EvaluateSmartArtShape(IQuestion question, String filename, SmartArtShapes _smartArtShape) in C:\TETEC\Development\TeTec.Action\Office\Office2013\Word\WordHelper.cs:line 697
任何人都可以帮助我。
谢谢
Can any one please help me.
Thanks
推荐答案
public static bool EvaluateSmartArtShape(IQuestion question, string filename, SmartArtShapes _smartArtShape)
{
WordInterop.Application wordApplication = GetOrCreateWordApplication(question.ObjectStore);
try
{
//Avoid screen flickering or unwanted alerts while initializing
wordApplication.ScreenUpdating = false;
WordInterop.WdAlertLevel displayAlertLevel = wordApplication.DisplayAlerts;
wordApplication.DisplayAlerts = WordInterop.WdAlertLevel.wdAlertsNone;
WordInterop.Document wordDocument = wordApplication.Documents.Open(filename);
bool result = false;
//WORD
WordInterop.Shape tempSmartShape = null;
WordInterop.Shapes ws = wordDocument.Shapes;
foreach (WordInterop.Shape s in ws)
{
if (s.HasSmartArt == MsoTriState.msoTrue)
{
tempSmartShape = s;
SmartArt _smartArt = tempSmartShape.SmartArt;
string _smartArtName = _smartArt.Layout.Name;
if (_smartArtName.Replace(" ", "").Trim().ToLower() == _smartArtShape.ToString().Trim().ToLower())
result = true;
break;
}
}
wordDocument.Close();
return result;
}
catch (Exception)
{
Cleanup(question.ObjectStore, true);
}
return false;
}
这篇关于如何使用word interop C#从现有word文档中获取smartart索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文