Excel 内容转成 CSV,容量大了一倍

查看 106|回复 7
作者:jianghu52   
最近做了一个小工具,把 EXCEL 里面的内容抽出来,编辑一下转换成 CSV 。
发现一个诡异的问题。EXCEL 的 size =30M 。转换出来的 CSV 的 size=56M 。
EXCEL 比较大,里面数据大概 28w 条。里面格式不多,基本上就是字符串+数字+日期。有 4 列是下拉列表,候选值
是第二个 sheet 页的内容。
我的工具就是把所有内容抽出来,主要是把下拉列表的内容替换成 0 或者 1.
用的语言就是 C#(环境被迫),读 EXCEL 用的 EPPLUS ,写 csv 就直接用 writestream 。
我的概念中,一直都认为 csv 比 excel 少了格式,所以 csv 应该是比 excel 小才对。我自己做过实验。如果数据不多的情况下(200 条),csv 确实是比 EXCEL 小的。但是为什么数据量上去之后,CSV 比 EXCEL 大了呢?
求解惑。

csv, EXCEL, 下拉, size

shansing   
不知道你说的哪个版本,xlsx 是外层是 zip 包,压缩了可不就小嘛。
Ocean810975   
excel 是压缩过的,csv 没有压缩过,和 txt 实际上是一个东西。
数据量大了压缩的优势才体现出来,数据量小的时候就和你上面写的一样。
jianghu52
OP
  
@shansing 不好意思,忘记说版本了。EXCEL 是 2007 版本。后缀.xlsx 。但是我奇怪的是为什么小数据量的时候,是 CSV 小。大数据量的时候,就是 excel 小。
em70   
把 xlsx 文件后缀改成 zip ,打开有惊喜哦
jklove123bai   
xlsx 这个格式本身啥都没有就 4k 大小了
dayeye2006199   
csv 你上个 zip 看看
512357301   
一直都认为 csv 比 excel 少了格式
03 版本的 Excel(.xls)才符合这个规律吧,07 及以上版本的(.xlsx)都是用的压缩格式,容量占用确实小很多。但是因为有一些配置文件,所以内容越少.xlsx 压缩效果越不明显。
想比.xlsx 还小,那我推荐你把内容存为 Apache Parquet 格式(.parquet),它是列式存储,压缩效果理论上更好,而且读取效果不比 Excel 、csv 差
您需要登录后才可以回帖 登录 | 立即注册

返回顶部