c# - 程序集“Microsoft.Office.Interop.Excel 中的 Microsoft.Office.Interop.Excel.WorkbookClass”未标记为可序列化

标签 c# asp.net serialization web-config assemblies

序列化异常:程序集“Microsoft.Office.Interop.Excel,Version=11.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c”中的类型“Microsoft.Office.Interop.Excel.WorkbookClass”未标记为可序列化。

我遇到了上面的异常..这是代码

unsafe public void Save(IStream stream, bool clearDirty, Excel.Workbook xlbook)
{
    try
    {
        //if (stream == null)
        //{
        //    return;
        //}
        //object data = xlbook;
        if (xlbook == null)
        {
            return;
        }
        // convert data to byteArray   


        MemoryStream memoryStream = new MemoryStream();
        BinaryFormatter binaryFormatter = new BinaryFormatter();           

       //below line im getting the Exception
        **binaryFormatter.Serialize(memoryStream, xlbook);**            
        byte[] bytes = memoryStream.ToArray();
        memoryStream.Close();
        //get memory pointer
        int cb;
        int* pcb = &cb;
        //save data
        byte[] arrayLen = BitConverter.GetBytes(bytes.Length);
        stream.Write(arrayLen, arrayLen.Length, new IntPtr(pcb));
        stream.Write(bytes, bytes.Length, new IntPtr(pcb));
        //currentDomain.AssemblyResolve -= new ResolveEventHandler(currentDomain_AssemblyResolve);
    }
    catch
    {

    }
}

最佳答案

不能使用序列化保存 Excel 工作簿。您必须使用其 Save 方法保存工作簿。

您说您将类标记为可序列化,但您一定标记错了类。需要标记为可序列化的类是 WorkbookClass,您无法控制该类。

关于c# - 程序集“Microsoft.Office.Interop.Excel 中的 Microsoft.Office.Interop.Excel.WorkbookClass”未标记为可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8998836/

相关文章:

c# - WP7 - 通过代码而不是 XAML 淡化用户控件

java - SerialversionID 在 Java 反序列化中如何工作

c++ - 从序列中解析 NMEA 句子

c# - 路由到虚拟元素

java - HashMap 序列化和反序列化变化

c# - 将python转换为c#的工具

c# - 常用函数 : How to Structure?

C#/WPF : Make a GridViewColumn Visible=false?

javascript - 通过电子邮件激活用户

javascript - 如果已经突出显示,如何取消选择文本框中突出显示的文本?