מהו קובץ XLSB?
פורמט קובץ XLSB מציין את פורמט הקובץ הבינארי של Excel, שהוא אוסף של רשומות ומבנים המציינים את תוכן חוברת העבודה של Excel. התוכן יכול לכלול טבלאות לא מובנות או מובנות למחצה של מספרים, טקסט, או גם מספרים וטקסט, נוסחאות, חיבורי נתונים חיצוניים, תרשימים ותמונות. שלא כמו XLSX (המבוסס על פורמט קובץ XML פתוח), ה-XLSB מייצג קובץ חוברת עבודה בינארית של Excel. ניתן לקרוא ולכתוב קבצי XLSB מהר יותר, מה שהופך אותם לשימושיים לעבודה עם קבצים גדולים. XLSB משמש לעתים רחוקות לאחסון חוברות עבודה שכן XLSX (וקודם לכן XLS) הם תבניות הקבצים הנפוצות ביותר שנבחרו על ידי המשתמש לשמירת חוברות עבודה. ניתן לפתוח אותו על ידי Microsoft Office 2007 ומעלה.
מפרטי פורמט קובץ XLSB
מפרטי פורמט הקובץ עבור פורמט קובץ XLSB פורסמו לציבור עוד בשנת 2008 כגרסה 1.0. מאז, המפרטים עודנו מספר פעמים והגרסה האחרונה של המפרטים (v 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 שחייב להכיל בדיוק חלק אחד של חוברת עבודה. חלק זה חייב להיות היעד של מערכת יחסים בחלק זה של קשרי חבילה. חלק חוברת העבודה הוא החלק ההתחלתי במסמך XLSB.
חלק
חלק הוא זרם של בתים שיש לו סוג תוכן משויך המציין את אופי וסוג התוכן המאוחסן בחלק. חלקים מסוימים מאחסנים מידע בפורמט בינארי בעוד שאחרים מאחסנים מידע כ-XML. הסעיף ספירת חלקים של מסמך המפרט מפרט את החלקים, סוגי התוכן והקשרים הנדרשים/אופציונליים בין כל החלקים בחבילה.
מערכת יחסים
מקור ומשאב יעד מחוברים על ידי מערכת יחסים. מערכות יחסים יכולות להיות:
קשר חבילה: כאשר היעד הוא חלק והמקור הוא החבילה כולה
קשר מחלק לחלק: כאשר היעד הוא חלק והמקור הוא חלק בחבילה
קשר מפורש: כאשר משאב מופנה מהתוכן של חלק מקור על ידי הפניה לערך תכונת ID של רכיב קשרי גומלין
קשר מרומז הוא קשר שאינו מפורש
קשר פנימי: כאשר היעד הוא חלק בחבילה
קשר חיצוני: כאשר היעד הוא משאב חיצוני שאינו בחבילה
תקליט
רשומה היא אבן הבניין הבסיסית המשמשת לאחסון מידע על תכונות בחוברת עבודה. כל רשומה בינארית היא רצף באורך משתנה של בתים. רשומה בינארית מורכבת משלושה מרכיבים:
- סוג רשומה
- גודל שיא, ו
- נתוני הרשומה הספציפיים לאותו סוג רשומה.
סוג רשומה: סוג הרשומה מציג את סוג הרשומה שצוין ברשומה. זה גם מציין את המבנה של נתוני הרשומה הספציפיים לרשומה זו. סוגי הרשומות החוקיים מפורטים בסעיף ספירת רשומות במסמך המפרט. סוג הרשומה חייב להיות בת אחד או שניים וחייב להיות גדול או שווה ל-128 וקטן מ-16384.
גודל רשומה: גודל הרשומה מציין את ספירת הבתים שמציינת את הגודל הכולל של נתוני הרשומה. ערך זה חייב להיות אחד עד ארבעה בתים. ערך זה חייב להיות בית אחד אם הביט הגבוה בבייט הנמוך שווה ל-0; אחרת, ערך זה חייב להיות גדול מבייט אחד. אם ספירת הבתים גדולה מבייט אחד, הביט הגבוה בכל בתים עוקב מציין אם נעשה שימוש בבייט נוסף. אם הסיבית הגבוהה של הביט השני שווה ל-1, אז ערך זה חייב להשתמש בבייט שלישי נוסף. אם הסיבית הגבוהה של הביט השלישי שווה ל-1, אז ערך זה חייב להשתמש בבייט רביעי נוסף. יש להתעלם מהסיביות הגבוהה של הבת הרביעית. הערך מורכב משבעת הסיביות הנמוכות של כל בייט בשילוב. הסיביות הנמוכות והפחות משמעותיות כלולים בתוך הביט הראשון, וכל בייט עוקב מכיל ביטים בסדר גבוה יותר מהבייט הקודם.
נתוני רשומה: רכיב נתוני הרשומה מכיל שדות התואמים לסוג רשומה מסוים ומרכיבים את שאר הרשומה. הסדר והמבנה של השדות עבור סוג רשומה נתון המפורטים בספירת רשומות מצוינים בסעיף המתאים עבור אותו סוג רשומה ברשומות. הגודל הכולל של רכיב נתוני הרשומה חייב להיות שווה לגודל הרשומה. שדות ברכיב נתוני הרשומה יכולים להכיל ערכים פשוטים, מערכי ערכים, מבנים של מספר שדות, מערכים של שדות ומערכים של מבנים.
דוגמה לרשומת XLSB
סוג הרשומה וגודל הרשומה הבאים מציינים רשומת BrtCommentText בגודל של 200 בתים:
11111101 00000100 11001000 00000001 [שדות רשומה]
הבית הראשון הוא 11111101, המציין ערך נמוך של 125 ושסוג הרשומה דורש בייט שני. הבית השני הוא 00000100, המציין ערך גבוה של 4 * 128, השווה ל-512. ערך סוג הרשומה הוא 125 + 512, או 637, המתאים לסוג רשומה BrtCommentText. הבית הבא הוא 11001000, המציין ערך נמוך של 72 ושגודל הרשומה דורש בייט שני. הבית השני הוא 00000001, המציין ערך גבוה יותר של 1 * 128 ושגודל הרשומה אינו דורש בית נוסף. גודל הרשומה הוא 72 + 128, או 200, המציין את הגודל הכולל, בבתים, של רכיב נתוני הרשומה. השדות ברכיב נתוני הרשומות מצוינים ב-BrtCommentText.