public bool InsertValue(string book, object value)
        {
            object bkObj = book;
            if (wordApp.ActiveDocument.Books.Exists(book))
            {
                wordApp.ActiveDocument.Books.get_Item(ref bkObj).Select();
                Thread app = new Thread(new ParameterizedThreadStart(Copy));
                app.ApartmentState = ApartmentState.STA;
                app.Start(value);
                Thread.Sleep(200);
                wordApp.Selection.PasteAndFormat(WdRecoveryType.wdFormatOriginalFormatting);
                return true;
            }
            return false;
        }        static void Copy(object value)
        {
            Clipboard.SetDataObject(value, false);
        }这是按照网络上的解决方法写的,不过虽然不报错了 
但是导出的文档里,插入的内容全是标题所示的内容

解决方案 »

  1.   

    我也遇到同样的问题了,ASP.Net浏览本地的文件,用就报这个异常???
      

  2.   


    现在我也遇到这个问题了。在aspx的后台代码中调用了COM组件,用于导出到Excel,提示报错:
    System.Threading.ThreadStateException: 
    在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。
    请确保您的 Main 函数带有 STAThreadAttribute 标记。
    这个问题在C# winform下很简单就能解决:
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                ......程序代码
    }
    或者像1楼一样,指定线程的状态即可:
                    
    Thread app = new Thread(new ParameterizedThreadStart(Copy));   
    Thread.ApartmentState = ApartmentState.STA;                 
    app.Start(value); 但是这是web页啊,找了好久都没找到办法解决,哎!
    知道的,说个办法,感谢!