【问题标题】:Is there a format which can store tabular data in lesser size than excel?是否有一种格式可以存储比 excel 更小的表格数据?
【发布时间】:2012-10-11 13:04:19
【问题描述】:

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

【问题讨论】:

  • 你想要完成什么,为什么大小是个问题?
  • 请说明您打算做什么。您在寻找文件格式吗?
  • 我有一些我不想手动读取的数据。只有我的软件才能解密该文件。

标签: c# excel serialization tabular


【解决方案1】:

由于大多数“表格”数据都是文本,因此在保存之前压缩它会获得很大的收益(以 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 是 far superior to both 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();
  }
}

【讨论】:

  • 打败我,我想说试试 7zip,因为它有一个很好的 API,压缩率和选项都很好。
  • 我之前试过了,但是压缩比不够好。我使用二进制和 xml 序列化。
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
相关资源
最近更新 更多