Tại sao cùng một dữ liệu chiếm nhiều không gian trong tệp văn bản hơn trong tệp Excel?


59

Tôi có khoảng 100000 hàng dữ liệu. Nếu tôi lưu trữ dữ liệu này ở định dạng tệp văn bản, sẽ mất nhiều dung lượng hơn so với khi tôi lưu trữ dữ liệu ở định dạng tệp Excel. Tại sao vậy?

Câu trả lời:


117

Các xlsxđịnh dạng được sử dụng bởi Excel hiện đại thực sự là một định dạng nén. Đó là một kho lưu trữ ZIP chứa các tệp văn bản (XML) trong một cấu trúc nhất định.

Nếu bạn nén tệp văn bản đơn giản của mình bằng một công cụ nén ZIP tương tự, bạn sẽ đạt được kích thước tệp tương tự.

Ngoài ra, như Bradley UffnerMorgen đã đề cập trong các bình luận, Excel sẽ sao chép các chuỗi giống hệt nhau và chỉ lưu trữ một bản sao của chúng. Tôi không chắc chắn về mức tăng chính xác của phương pháp như vậy và nó sẽ phụ thuộc vào tập dữ liệu của bạn, nhưng nén zip đơn giản có thể sẽ giúp bạn đạt được hầu hết các cách đó. 1


9.1.3 Gói vật lý

Mỗi tài liệu XML Open Office được triển khai dưới dạng lưu trữ ZIP.

- ECMA-376-1: 2016


1 Tôi đoán là sự lặp lại này có hiệu quả nhất khi bạn có nhiều bảng tính, vì nén zip áp dụng độc lập cho từng tệp trong kho lưu trữ và chỉ trên các phần dữ liệu bị giới hạn tại một thời điểm - bằng cách lưu trữ tất cả các chuỗi trong một tệp, ở đó nên có một số lợi ích cho việc nén sau này. Thực tế hơn, nếu định dạng văn bản đơn giản của bạn nằm trong một tệp duy nhất thì có lẽ sẽ có một chút khác biệt.


2
Điều đó thật tuyệt! Nó cung cấp cái nhìn sâu sắc rất tốt về cách xử lý các tệp Excel. Cảm ơn!
Dominique

3
@Dominique Nếu bạn muốn biết thêm, bạn có thể chơi xung quanh với một bằng cách giải nén nó (ví dụ: với 7zip hoặc bằng cách đổi tên nó để nó kết thúc .zip). Thông số kỹ thuật cũng có sẵn, nhưng nó làm cho việc đọc khá khô.
Bob

3
Tôi nghĩ excel cũng sử dụng một từ điển chuỗi, trong đó các bit văn bản giống hệt nhau giữa các ô có thể được sử dụng lại trong khi chỉ được lưu trữ một lần.
Bradley Uffner

1
Dựa trên API được thư viện ooxml của Apache trưng ra, từ điển chuỗi được chia sẻ ít nhất có thể xảy ra.
Morgen

2
Chuỗi được chia sẻ là một tính năng của Excel ngay cả khi nó đã viết các tệp XLS (không có x), là định dạng định hướng bản ghi được gọi là BIFF trong vùng chứa OLE. Nếu bạn so sánh thông số kỹ thuật XLS cũ với XLSX, bạn sẽ thấy XLSX chỉ là phiên bản nén của BIFF đã được xác thực xmlified. Vì vậy, về cơ bản MS đã không phát minh ra tính năng chuỗi chia sẻ cho XLSX, nơi nó không có ý nghĩa nhiều do nén; họ vừa đi con đường dễ nhất để biến XLS thành XLSX.
Guntram Blohm

2

Câu trả lời được đưa ra là chính xác, đó là do Excel lưu trữ dữ liệu của bạn dưới dạng xml. Cũng chính vì điều này mà việc sắp xếp dữ liệu của bạn một cách hiệu quả cũng sẽ làm giảm kích thước tệp. Tự kiểm tra - nói rằng bạn có dữ liệu như

A            B                              C
John         Smith-Johnson-Williamson       12345
Sally        Smith-Johnson-Williamson       67890
John         Williams                       34567

Nếu bạn chỉ sắp xếp theo C (một cột có tất cả hoặc gần như tất cả các giá trị duy nhất), thì các giá trị giống hệt nhau của B sẽ không liền kề. Trong xml của Excel, nó trông như thế này:

<12345><John><Smith-Johnson-Williamson>
<34567><John><Williams>
<67890><Sally><Smith-Johnson-Williamson>

Nếu bạn sắp xếp theo B (một cột có các giá trị chung), thì các giá trị giống hệt nhau sẽ liền kề. Trong xml của Excel, nó trông như thế này:

<Smith-Johnson-Williamson><John><12345>
  <Sally><67890>
<Williams><John><34567>

Vì chuỗi dài đó giống hệt nhau và liền kề, Excel biết rằng nó có thể đóng gói chúng lại với nhau, tương tự như khi mọi người viết danh sách và để lặp lại một phần của dòng trên, họ gõ dấu ngoặc kép thay vì viết lại cùng một thứ. Tôi không tìm thấy bất kỳ bằng chứng nào về một từ điển chuỗi chia sẻ trong cuộc điều tra của mình - chỉ là sự thụt dòng này thay cho giá trị trường lặp lại.

Tôi đã có danh sách gửi thư của 250.000 khách hàng trên khắp 11 tiểu bang và trên mỗi bản ghi có một trường là một trong hai chuỗi xác định đề nghị họ nhận được. Nhân viên của chúng tôi vì một số lý do đã quen với việc tìm mọi người theo địa chỉ đường phố của họ như đã nói, vì vậy nó được sắp xếp trên cột số đường phố, sau đó là tên đường phố, thành phố, v.v ... khi tôi sử dụng ưu đãi trước, sau đó là tiểu bang, mã zip, thành phố, tên đường, số đường phố và cuối cùng là địa chỉ-2, kích thước tệp đã giảm đáng kể. Tôi đã kiểm tra xml đã giải nén trên tệp được sắp xếp theo từng cách để xem điều gì đang xảy ra, và trên đây là những gì tôi đã suy luận. Nếu có nhiều trường có nhiều hơn 5 ký tự, nhưng các giá trị thuộc một tập hợp giới hạn (giả sử, các cách xử lý vé như 'đã giải quyết', 'bị từ chối', 'được phê duyệt', v.v.),


Xin chào CompmateCube, Đây là kiến ​​thức cực kỳ tuyệt vời. !!! Cảm ơn bạn rất nhiều.
user734178

-5

Nếu bạn có một số như 3.14159265359, bạn cần 13 byte để lưu trữ tệp này trong tệp văn bản; nếu bạn lưu trữ số này dưới dạng float, bạn chỉ cần 4 byte.


19
Trong khi điều này có thể là trường hợp với xls(BIFF), tôi không nghĩ xlsxlàm điều này. xlsxlưu trữ tất cả dữ liệu trong các tệp XML, không thực hiện mã hóa nhị phân các chữ số - chúng được chuyển đổi và lưu trữ dưới dạng chuỗi văn bản. Tôi vẫn đang cố gắng tìm kiếm phần có liên quan của đặc tả, nhưng thử nghiệm thực nghiệm của tôi (tức là trích xuất một tài liệu đã lưu) cho thấy 1.123được lưu trữ theo nghĩa đen dưới dạng chuỗi 5 ký tự trong XML.
Bob

14
ECMA-376-1: 2016 § 18.3.1.4 c( Ô ) cho thấy các ô lưu trữ dữ liệu của chúng trong vcác thẻ, như được định nghĩa trong ECMA-376-1: 2016 § 18.3.1.96 v(Giá trị ô) trong đó chúng nói Các giá trị có thể có của phần tử này được xác định bởi loại đơn giản ST_X chuỗi (§22.9.2.19). - họ cung cấp các ví dụ như <v>28086.3541666667</v>nơi dữ liệu được lưu trữ rõ ràng dưới dạng chuỗi.
Bob

4
@gerrit Đáng tiếc là Excel không giải thích con số như nổi trong chương trình, dẫn đến những vấn đề thú vị như số điện thoại thả vài chữ số cuối cùng. Nó chỉ không lưu chúng vào đĩa dưới dạng nổi (nữa?).
Bob

2
@Bob đây cũng là trường hợp xlsb, rất được khuyến khích cho các tờ lớn
phuclv

2
Tôi không biết tại sao câu trả lời này lại nhận được rất nhiều ý kiến ​​trái chiều. OP đã không chỉ định định dạng Excel nào về mặt kỹ thuật, đây cũng là một câu trả lời hợp lệ
phuclv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.