Excel/XLSX 文件有不同的格式吗?哪种格式最小?

Excel/XLSX 文件有不同的格式吗?哪种格式最小?

因此,我们首先尝试允许用户通过浏览器下载 CSV 文件,效果很好(一些文件大约 375MB)。但是,客户端似乎不会接受,因为 a) 数字格式、b) 删除前导零和 c) 将长数字(如州代码)更改1578394819051.58E10

如果你用过 Excel,你一定很熟悉这些“我以为你想要“行为..

因此,我们需要传输一个 Excel 文件,但是否存在不同的格式?(假设用户可以访问最新版本的 Excel 来回答此问题)

我相信 Excel 可以将正确指定的 XML 文件打开为电子表格,其中可能包含正确的“将其格式化为文本”说明,但对于大型文件,这可能会失控。有没有更精简的更原生的 Excel 格式?没有那么多标记?如果您知道它,它在哪里描述?

--编辑--

我想利用我的发现来帮助社区。首先,我们尝试="0040"在引号前使用等号。这种方法可行,但对于大文件来说,文件太大,Excel 会崩溃。

我们之前尝试过在引号内使用特殊字符,虽然有效,但格式存在问题。

您能流式传输 XLSX 文件吗?不行!

原因:XLSX 文件实际上是一个压缩文件,里面有两个关键文件,一个名为 sharedStrings.xml,是所有 UNIQUE 单元格值的列表,另一个是单元格列表,但带有对第一个 sharedStrings.xml 文件的数字引用。整个文件夹被压缩,看,这就是您的 XLSX 文件。因此,XLSX 文件必须是建造,未流式传输。

答案1

这实际上并不是对您的问题的回答,但却很好地解释了您的问题的原因。

如果您想避免在打开 csv 文件时缩短 Excel 中的数字,您可以使用="0123456789"而不是0123456789,就好像它是一个公式一样。

例子:

Name,Value,Value as text
Small int,01234,="01234"
Long int,0123456789,="0123456789"
Very long int,01234567890123456789,="01234567890123456789"

结果:

Excel 中的结果

答案2

我看到了一些选项,但我不确定它是否会起作用(顺便说一句,我没有使用 xml 的经验):

您忽略的第一件事是将整个电子表格格式化为文本。好的,文件会太大。

其次,在有问题的数字前面添加“'”,将其转换为文本。再次...

第三:“新”的xlsx在降低文件大小方面应该相当不错,比xls格式好得多。

第四,将格式更改为文本,并将整个工作簿的编码更改为 ASCII 或类似的简单编码。更多信息请点击此处https://help.surveygizmo.com/help/encode-an-excel-file-to-utf-8-or-utf-16(如果需要我会在这里添加更多信息)

不确定,但就像最后一件事一样,我会尝试转换为 csv,然后将编码更改为 ASCII 或更小的编码。

相关内容