【问题标题】:ReportDocument serialization报表文档序列化
【发布时间】:2011-10-20 16:49:27
【问题描述】:

我想使用 XML 序列化来序列化 ReportDocument,但没有成功,这是我的代码:

public String serialiser (ReportDocument rd)
    {
        StringWriter sw= new StringWriter();
        System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(ReportDocument));
        xs.Serialize(sw, rd);
        return sw.ToString();
    }

注意:CrystalDecisions.CrystalReports.Engine.ReportDocument。

我收到以下错误:

An error occurred during the reflection of the type 'CrystalDecisions.CrystalReports.Engine.ReportDocument'.

我怎么能序列化它?!

【问题讨论】:

    标签: c# .net serialization crystal-reports xml-serialization


    【解决方案1】:

    我的猜测是该类型未标记为可序列化。你试过二进制序列化吗?

    public static byte[] SerializeToBytes<T>(T original)
    {
        byte[] results;
        using (MemoryStream stream = new MemoryStream())
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            binaryFormatter.Serialize(stream, original);
            stream.Seek(0, SeekOrigin.Begin);
            results = stream.ToArray();
        }
    
        return results;
    }
    

    【讨论】:

    • 序列化有效,但反序列化时出现异常:T result = (T)bf.Deserialize(ms); -> 异常已被调用的目标抛出,这是一个 TargetInvocationException
    • 是在不同的会话还是在不同的服务器上反序列化?
    • 不,不是,我尝试过使用简单的对象,但我需要的对象,出现异常:/
    • 看起来 Crystal Reports 不允许这样做。如果您需要将其保存在某个地方,最好的办法可能是将其转换为 PDF 或 RTF,然后将其序列化为字节并将其放在您想要保存的位置。
    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2019-06-14
    • 2011-01-14
    • 2019-07-01
    • 1970-01-01
    相关资源
    最近更新 更多