读word文档。使用c#

读word文档。使用c#,c#,dll,ms-word,C#,Dll,Ms Word,我已经创建了一个应用程序。富文本框中的文本存储在word文档中。使用word互操作dll。现在我想把doc这个词读回我的richtextbox 我用oDoc.Content.Text阅读。它可以工作,但没有对齐。我需要在word文档中加载相同的对齐 我还使用了这个代码 oDoc.Activate(); oDoc.ActiveWindow.Selection.WholeStory(); oDoc.ActiveWindow.Selection.Copy() IDataObject data = Cl

我已经创建了一个应用程序。富文本框中的文本存储在word文档中。使用word互操作dll。现在我想把doc这个词读回我的richtextbox

我用
oDoc.Content.Text
阅读。它可以工作,但没有对齐。我需要在word文档中加载相同的对齐

我还使用了这个代码

oDoc.Activate();
oDoc.ActiveWindow.Selection.WholeStory();
oDoc.ActiveWindow.Selection.Copy()
IDataObject data = Clipboard.GetDataObject();
txtdocument.Text = Clipboard.GetDataObject()
       .GetData(DataFormats.Text).ToString();
但它抛出了一个错误:

对象引用未设置为对象的实例


可能是
Clipboard.GetDataObject()返回空引用,然后在最后一行尝试访问其成员

txtdocument.Text = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();
总之,作为建议,你为什么不替换最后一行呢

txtdocument.Text = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();
为此:

txtdocument.Text = data.GetData(DataFormats.Text).ToString();
编辑:检查变量oDoc、txtDocument或数据是否为空

新编辑:

Thread tempThread = new Thread(new ThreadStart(threadstuff))
tempThread.SetApartmentState(System.Threading.ApartmentState.STA);
tempThread.Start();

你的程序是单线程公寓吗?如果没有,剪贴板
类将无法工作

剪贴板类只能在设置为单线程单元(STA)模式的线程中使用。要使用此类,请确保您的Main方法标记为stathreadtribute属性


在此行中,数据对象返回空值IDataObject data=Clipboard.GetDataObject();这是我的观点。这就是它抛出“对象引用未设置为对象实例”的原因错误..您能否显示创建了Thread的新实例并调用成员方法SetApartmentState的代码部分?对于前面的回答,我回答了我的方法,我试图设置STAThreadAttribute,但它抛出了此错误,因为无法设置指定的COM单元状态。@jafrywilson:您使用了吗
System.Threading.Thread.CurrentThread.SetApartmentState
?如果是这样,您需要在Main()之前添加[StatThread]。我的方法是[StatThread]private void ReadWordDoc(){Microsoft.Office.Interop.Word.ApplicationClass oWordApplic=new Microsoft.Office.Interop.Word.ApplicationClass();string strFilePath=“D:\\wilson\\tms\\Documents\\IND2011-2012\\TB_CNR_IND_270520114946.doc”;object objFile=strFilePath;object missing=System.Reflection.missing.Value;object objReadOnly=false;object visibility=true;Microsoft.Office.Interop.Word.Document oDoc=oWordApplic.Documents.Open(ref objFile、ref missing、ref objReadOnly、ref missing、ref missing、ref missing、ref missing、ref VISIBLY、ref missing、ref missing、ref missing、ref missing、ref missing);oDoc.Activate();//txtdocument.Text=oDoc.Content.Text;oDoc.ActiveWindow.Selection.whisttory();oDoc.ActiveWindow.Selection.Copy();Thread.CurrentThread.SetApartmentState(ApartmentState.STA);