2

我已经尝试过保存在文本文件中(显然它需要更多空间,因为它没有像 Excel 那样定制来保存表格)。我还尝试保留序列化数据(c#,仅供参考)。在这两种情况下都没有任何好处。

4

1 回答 1

5

由于大多数“表格”数据将是文本,因此在保存之前压缩它会获得很大的收益(以 GZip 和 BsonWriter 为例):

public static byte[] Compress(object entity)
{
  using (var stream = new MemoryStream())
  {
    using (var zipStream = new GZipStream(stream, CompressionLevel.Optimal))
    {
      using (var writer = new BsonWriter(zipStream))
      {
        var serializer = new JsonSerializer();
        serializer.Serialize(writer, entity);
      }
    }

    return stream.ToArray();
  }
}

** 更新 **

Protobuf在序列化实体大小和速度方面都远远优于 XmlSerializerBinaryFormatter。在压缩之前尝试使用它来序列化您的实体:

public static byte[] Compress(object entity)
{
  using (var stream = new MemoryStream())
  {
    using (var zipStream = new GZipStream(stream, CompressionLevel.Optimal))
    {
      Serializer.Serialize(stream, entity);  
    }

    return stream.ToArray();
  }
}
于 2012-10-11T13:06:53.860 回答