我在现有的Word文档中获得书签,如下所示
using System.Collections.Generic;
using Word = Microsoft.Office.Interop.Word;
namespace Word_Project
{
public class WordDoc
{
public Word.Application App { get; set; }
public Word.Document Document { get; set; }
public Word.Bookmarks Bookmarks { get; set; }
public WordDoc(string pathToDoc)
{
App = new Word.Application();
Document = App.Documents.Open(pathToDoc);
Bookmarks = Document.Bookmarks;
}
}
}书签的签名是
public interface Bookmarks : System.Collections.IEnumerable我想将它转换为List<> (System.Collections.Generic)书签不包含.ToList()-Method,而强制转换也不起作用。
(List<Bookmark>)Bookmarks //error也许这是不可能的,因为书签是一个界面,但如果有人有一个解决方案,我会很感激。
发布于 2022-02-23 08:30:39
我只从文档中回答,因为我没有Office,所以不能使用Interop。似乎Microsoft.Office.Interop.Word.Bookmarks只公开了GetEnumerator方法,所以您也不能使用lambda ->选择aproach。
那么我提出了一个非常通用的解决方案。
private List<T> EnumeratorToList<T>(IEnumerator<T> em)
{
List<T> listOut = new List<T>();
while (em.MoveNext())
{
T val = em.Current;
listOut.Add(val);
}
return listOut;
}然后打电话给:
List<Bookmark> myNewList = EnumeratorToList(Document.Bookmarks.GetEnumerator());您可以使用收益返回代替返回一个列表,但是OP要求一个列表。
https://stackoverflow.com/questions/71232733
复制相似问题