فایل XLSB چیست؟
فرمت فایل XLSB فرمت فایل باینری اکسل را مشخص می کند، که مجموعه ای از رکوردها و ساختارهایی است که محتوای کتاب کار اکسل را مشخص می کند. محتوا می تواند شامل جداول بدون ساختار یا نیمه ساختاریافته اعداد، متن یا هر دو اعداد و متن، فرمول ها، اتصالات داده خارجی، نمودارها و تصاویر باشد. برخلاف XLSX (که بر اساس فرمت فایل XML باز است)، XLSB فایل باینری کتاب کار اکسل را نشان میدهد. فایل های XLSB را می توان سریعتر خواند و نوشت که آنها را برای کار با فایل های بزرگ مفید می کند. XLSB به ندرت برای ذخیره کتاب های کار استفاده می شود زیرا XLSX (و قبلاً XLS) رایج ترین فرمت های فایل انتخاب شده توسط کاربر برای ذخیره کتاب های کار است. می تواند توسط Microsoft Office 2007 و بالاتر باز شود.
مشخصات فرمت فایل XLSB
The file format specifications for XLSB file format were made public back in 2008 as version 1.0. از آن زمان، مشخصات چندین بار اصلاح شده است و آخرین نسخه مشخصات (نسخه 10.0) در آوریل 2018 منتشر شد. مشخصات به صورت عمومی توسط مایکروسافت با نام [[MS-XLSB] - Excel Binary File Format specifications](https://msdn.microsoft.com/en-us/library/cc313133(v#office.12).aspx در دسترس است و باید توسط هر کسی برای خواندن یا مراجعه شود. نوشتن فایل ها با فرمت فایل XLSB
ساختار فایل XLSB
یک فایل XLSB بسته ای است که از مجموعه ای از قطعات تشکیل شده است. این قسمت ها حاوی اطلاعاتی در مورد محتویات یک کتاب کار، از جمله داده های کتاب کار و ساختار بسته است. برخی از بخش ها حاوی اطلاعات ذخیره شده با استفاده از رکوردهای باینری هستند، برخی به صورت XML، در حالی که برخی دیگر حاوی اطلاعات ذخیره شده به عنوان یک جریان بایتی باینری هستند. هر رکورد باینری حاوی صفر یا چند فیلد ساختاریافته است که حاوی داده های کتاب کار است.
پکیج
یک بسته XLSB یک آرشیو ZIP است که باید دقیقاً یک بخش کتاب کار را در خود داشته باشد. این بخش باید هدف یک رابطه در این بخش رابطه بسته باشد. بخش Workbook قسمت شروع در سند XLSB است.
قسمت
یک قسمت جریانی از بایت ها است که دارای یک نوع محتوای مرتبط است که ماهیت و نوع محتوای ذخیره شده در قسمت را مشخص می کند. برخی از قطعات اطلاعات را در قالب باینری ذخیره می کنند در حالی که برخی دیگر اطلاعات را به صورت XML ذخیره می کنند. بخش parts enumeration سند مشخصات، بخشهای معتبر، انواع محتوا و روابط مورد نیاز/اختیاری را در بین تمام بخشهای یک بسته فهرست میکند.
ارتباط
یک منبع و یک منبع هدف توسط یک رابطه به هم متصل می شوند. یک رابطه می تواند باشد:
رابطه بسته: که در آن هدف بخشی است و منبع بسته به عنوان یک کل است
رابطه قسمت به قسمت: که در آن هدف بخشی است و منبع بخشی از بسته است
رابطه صریح: که در آن یک منبع از محتوای یک بخش منبع با ارجاع به مقدار ویژگی ID عنصر رابطه ارجاع داده می شود.
رابطه ضمنی رابطه ای است که صریح نباشد
رابطه داخلی: جایی که هدف بخشی از بسته است
رابطه خارجی: که در آن هدف یک منبع خارجی است که در بسته نیست
رکورد
رکورد بلوک اصلی ساختمانی است که برای ذخیره اطلاعات در مورد ویژگی ها در یک کتاب کار استفاده می شود. هر رکورد باینری یک دنباله بایت با طول متغیر است. یک رکورد باینری از سه جزء تشکیل شده است:
یک نوع رکورد
اندازه رکورد، و
داده های رکوردی که مخصوص آن نوع رکورد است.
نوع رکورد: نوع رکورد، نوع رکورد مشخص شده توسط رکورد را نشان می دهد. همچنین ساختار داده های رکورد مخصوص این رکورد را مشخص می کند. انواع رکوردهای معتبر در بخش Record Enumeration سند مشخصات فهرست شده است. نوع رکورد باید یک یا دو بایت باشد و باید بزرگتر یا مساوی 128 و کمتر از 16384 باشد.
اندازه رکورد: اندازه رکورد تعداد بایت ها را مشخص می کند که اندازه کل داده های رکورد را مشخص می کند. این مقدار باید یک تا چهار بایت باشد. اگر بیت بالا در بایت کم برابر با 0 باشد، این مقدار باید یک بایت باشد. در غیر این صورت، این مقدار باید بیشتر از یک بایت باشد. اگر تعداد بایت ها بیشتر از یک بایت باشد، بیت بالا در هر بایت متوالی مشخص می کند که آیا یک بایت اضافی استفاده می شود یا خیر. اگر بیت بالای بایت دوم برابر با 1 باشد، این مقدار باید از یک بایت سوم اضافی استفاده کند. اگر بیت بالای بایت سوم برابر با 1 باشد، این مقدار باید از بایت چهارم اضافی استفاده کند. بیت بالای بایت چهارم باید نادیده گرفته شود. این مقدار شامل هفت بیت کم هر بایت است. بیت های کم و کم اهمیت در اولین بایت قرار دارند و هر بایت متوالی حاوی بیت های مرتبه بالاتری نسبت به بایت قبلی است.
Record Data: جزء داده رکورد حاوی فیلدهایی است که با نوع رکورد خاصی مطابقت دارند و باقیمانده رکورد را تشکیل می دهند. ترتیب و ساختار فیلدها برای نوع رکورد معینی که در Record Enumeration فهرست شده است در بخش مربوط به آن نوع رکورد در Records مشخص شده است. اندازه کل مولفه داده رکورد باید برابر با اندازه رکورد باشد. فیلدها در جزء داده رکورد می توانند حاوی مقادیر ساده، آرایه های مقادیر، ساختارهای چند فیلد، آرایه های فیلدها و آرایه هایی از ساختارها باشند.
مثال ضبط XLSB
نوع رکورد و اندازه رکورد زیر یک رکورد BrtCommentText با اندازه 200 بایت را مشخص می کند:
11111101 00000100 11001000 00000001 [فیلدهای رکورد]
The first byte is 11111101, specifying a low value of 125 and that the record type requires a second byte. The second byte is 00000100, specifying a high value of 4 * 128، که برابر با 512 است. مقدار نوع رکورد 125 + 512 یا 637 است که مربوط به نوع رکورد BrtCommentText است. بایت بعدی 11001000 است که مقدار کم 72 را مشخص می کند و اندازه رکورد به یک بایت دوم نیاز دارد. بایت دوم 00000001 است که مقدار بالاتر 1*128 را مشخص می کند و اندازه رکورد نیازی به بایت اضافی ندارد. اندازه رکورد 72 + 128 یا 200 است که اندازه کل جزء داده رکورد را بر حسب بایت مشخص می کند. فیلدها در جزء داده رکورد با BrtCommentText مشخص می شوند.