約100000行のデータがあります。このデータをテキストファイル形式で保存すると、Excelファイル形式で保存する場合よりも多くのスペースが必要になります。何故ですか?
約100000行のデータがあります。このデータをテキストファイル形式で保存すると、Excelファイル形式で保存する場合よりも多くのスペースが必要になります。何故ですか?
回答:
xlsx
フォーマット現代のExcelで使用さは、実際には圧縮形式です。これは、特定の構造のテキスト(XML)ファイルを含むZIPアーカイブです。
同様のZIP圧縮ツールでプレーンテキストファイルを圧縮する場合、同様のファイルサイズを実現する必要があります。
さらに、Bradley UffnerとMorgenがコメントで述べたように、Excelは同一の文字列を重複排除し、それらのコピーを1つだけ保存します。そのような方法の正確な利点についてはわかりませんが、それはあなたのデータセットに依存しますが、単純なzip圧縮はおそらくあなたにその方法のほとんどをもたらすでしょう。1
9.1.3物理パッケージ
各Office Open XMLドキュメントは、ZIPアーカイブとして実装されます。
1私の推測では、zip圧縮はアーカイブ内の各ファイルに個別に適用され、データの限られたセクションに対してのみ-単一のファイルにすべての文字列を一緒に保存するため、複数のワークシートがある場合にこの重複排除が最も効果的だと思います後の圧縮の利点になるはずです。より現実的には、プレーンテキスト形式が単一のファイルに含まれている場合、おそらくほとんど違いはありません。
.zip
)試してみてください。仕様も利用できますが、かなり読みにくいです。
与えられた答えは正しいです。Excelがデータをxmlとして保存しているためです。また、これは、データを効率的に並べ替えることでファイルサイズが小さくなることも原因です。自分でテストします-次のようなデータがあると言います
A B C
John Smith-Johnson-Williamson 12345
Sally Smith-Johnson-Williamson 67890
John Williams 34567
C(すべてまたはほとんどすべての一意の値を持つ列)のみでソートする場合、Bの同一の値は隣接しません。Excelのxmlでは、次のようになります。
<12345><John><Smith-Johnson-Williamson>
<34567><John><Williams>
<67890><Sally><Smith-Johnson-Williamson>
B(共通の値を持つ列)でソートすると、同じ値が隣接します。Excelのxmlでは、次のようになります。
<Smith-Johnson-Williamson><John><12345>
<Sally><67890>
<Williams><John><34567>
その長い文字列は同一で隣接しているため、Excelはリストを作成する場合と同様に、それらを一緒にパックできることを認識し、上記の行の一部を繰り返すために、同じものを書き直すのではなく引用符を入力します。私は調査で共有文字列辞書の証拠を見つけませんでした-繰り返しフィールド値の代わりにこのインデントだけ。
私は11州のみで250,000人の顧客のメーリングリストを作成し、各レコードには、提供するオファーを識別する2つの文字列の1つであるフィールドがありました。私たちの従業員は、何らかの理由で、話されている通りの住所で人々を調べることに慣れていたため、最初に申し出を行い、次に州、郵便番号、都市、通りの名前、通りの番号、そして最後に住所行2、ファイルサイズは信じられないほど減少しました。各方法でソートされたファイルの展開されたxmlを調べて、何が起こっているかを確認しました。上記は私が推測したものです。たとえば5文字以上のフィールドが複数あるが、値が制限されている場合(たとえば、「解決済み」、「拒否済み」、「承認済み」などのチケットの性質)、
3.14159265359のような番号がある場合、これをテキストファイルに保存するには13バイトが必要です。この数値をfloatとして保存する場合、必要なのは4バイトだけです。
xls
(BIFF)に当てはまるかもしれませんが、私はそうは思わxlsx
ない。xlsx
すべてのデータをXMLファイルに保存します。XMLファイルは、数字のバイナリエンコードを実行しません-変換されてテキスト文字列として保存されます。私はまだ仕様の関連セクションを探していますが、私の実証テスト(保存されたドキュメントの抽出)は、1.123
文字通りXMLに5文字の文字列として保存されていることを示しています。
c
(セル)はv
、ECMA-376-1:2016§18.3.1.96 v
(セル値)で定義されているように、セルがタグにデータを格納することを示しています。 ST_Xstring単純型(§22.9.2.19)によって定義されます。— <v>28086.3541666667</v>
データが文字列として明確に保存されている場所などの例を提供します。
xlsb
、巨大なシートに強くお勧めします