وقتی یک x به انتهای پسوند فایلهای Office اضافه شد فرمت ذخیرهسازی آنها تغییر مهمی کرد مبتنی شد بر ساختار xml
با این تغییر مهم مجموعه Office به محیط متنباز آمد و امکان سادهای فراهم کرد تا هر برنامهای بتواند به فایلهای ذخیرهسازی آن متصل شود
برنامهنویس هستید؟ اکنون به سادگی میتوانید تمامی فایلهای نرمافزارهای Office را باز کنید من اینجا فایلهای نرمافزار اکسل را معرفی میکنم فرمت xlsx اطلاعاتی که میتواند برای دسترسی به دادههای درون فایل به شما یاری رساند
کافیست پسوند xlsx را به zip تغییر دهید اکنون آن را که باز کنید با مهمترین پوشه مواجه خواهید شد: xl اصلیترین دیتای شما در این پوشه قرار دارد از درون آن فایل workbook.xml را باز کنید با یک متنخوان معمولی مانند Notepad در داخل تگ <sheets></sheets> فهرست صفحات فایل اکسل خود را میبینید:
<sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets>
به مشخصه sheetId آن بنگرید مراقب باشید این عدد شما را فریب ندهد آنچه بیانگر فایل برگه اطلاعات است آرایهایست که از یک آغاز میشود آرایهای که ایندکس آن برابر با چندمین تگ sheet است حتماً باید یک فایل xml با همین شماره در پوشه worksheets داشته باشید چیزی مانند: sheet1.xml اگر سه تگ sheet داشته باشیم فارغ از اینکه sheetId آنها چه باشد فایلهای حاوی اطلاعات این برگهها از یک شمارهگذاری میشوند! (مشخصه name فقط درون اکسل کاربرد دارد و بر روی برچسب صفحه نوشته میشود)
درون این فایل، فهرست مشخصکنندهای از ستونها ذکر شده است البته در صورتیکه مشخصات ستونها تغییر کرده باشد و اکسل لازم بداند این اطلاعات را ثبت نماید:
<cols> <col min="1" max="1" width="6.25" customWidth="1"/> <col min="2" max="2" width="71.875" style="1" customWidth="1"/> <col min="3" max="3" width="13.75" style="6" customWidth="1"/> <col min="4" max="4" width="9" style="7"/> <col min="5" max="5" width="11" style="7" customWidth="1"/> <col min="6" max="6" width="10.5" style="9" customWidth="1"/> <col min="7" max="7" width="13.5" style="10" customWidth="1"/> <col min="8" max="9" width="9" style="5"/> </cols>
و سپس اطلاعات کامل تمام سلولهای صفحه اکسل را خواهید یافت چیزی شبیه به این:
<sheetData> <row r="1" spans="1:9" s="2" ht="29.25" x14ac:dyDescent="0.2"> <c r="A1" s="2" t="s"><v>32</v></c> <c r="B1" s="3" t="s"><v>33</v></c> <c r="C1" s="4" t="s"><v>34</v></c> <c r="D1" s="4" t="s"><v>42</v></c> <c r="E1" s="4" t="s"><v>35</v></c> <c r="F1" s="2" t="s"><v>36</v></c> <c r="G1" s="2" t="s"><v>39</v></c> <c r="H1" s="2" t="s"><v>37</v></c> <c r="I1" s="2" t="s"><v>38</v></c> </row> <row r="2" spans="1:9" ht="43.5" x14ac:dyDescent="0.5"> <c r="A2"><v>1029</v></c> <c r="B2" s="1" t="s"><v>45</v></c> <c r="C2" s="6" t="s"><v>44</v></c> <c r="D2" s="7"><v>22</v></c> <c r="E2" s="8" t="s"><v>40</v></c> <c r="F2" s="9" t="s"><v>43</v></c> <c r="G2" s="10" t="s"><v>0</v></c> </row> </sheetData>
اما عبارتهای داخل هر سلول را نمیبینید این اطلاعات برای صرفهجویی در حجم فایلهای ذخیرهسازی و برای ادغام موارد تکراری در یک فایل مشترک برای تمام صفحات اکسل نگهداری میشود به این ترتیب حجم فایل صفحهها هم کم شده دسترسی به آنها سریعتر صورت میپذیرد
یک فولدر به عقب برگردید و فایل sharedStrings.xml را باز کنید هر عبارت داخل هر سلول اکسل در تگهایی ذخیره شده است، مانند:
<si><t>محتوای یک</t></si> <si><t>محتوای دو</t></si> <si><t>محتوای سه</t></si>
اگر همه اطلاعات این صفحه را در یک آرایه بریزید آرایهای که از صفر آغاز شود شماره هر آرایه دقیقاً همان رفرنسیست که در فایل صفحه ذکر شده است یعنی اکسل به جای:
<c r="A2"><v>محتوای صد و بیست و چهارم</v></c>
از این ترکیب استفاده کرده است:
<c r="A2" t="s"><v>124</v></c> <si><t>محتوای صد و بیست و چهارم</t></si>
طبیعتاً برای سلولهایی که محتوای تکراری داشته باشند تنها یک کد استفاده میشود
البته این ویژگی در همه سلولها رعایت نمیشود اگر مشخصه t مربوط به تگ <c> دارای مقدار s بود یعنی محتوای سلول در فایل مشترک ذخیره شده اما اگر چنین مشخصهای نیافتید در مواردی که محتوای سلول عدد باشد یا فرمول اکسل محتوای اصلی را در داخل تگ <v> قرار میدهد و اگر فرمولی در کار باشد در داخل تگ <f>
این را نیز فراموش نفرمایید که گاهی بیش از یک تگ <t> داخل <si> وجود دارد در مواردی که اطلاعات داخل سلول فرمت داشته باشند تغییر فونت و قلم و مانند آن باید محتویات تمام تگهای <t> را بگیرید و به هم ملحق کنید تا محتوای سلول را در اختیار داشته باشید
با دانستن این فرمتها دیگر لازم نیست برای Import اطلاعات اکسل به نرمافزار خود آن را تبدیل به csv نمایید مستقیم میتوانید در برنامه خود فایل اکسل را باز کنید
پ.ن. البته بیشتر برنامهنویسها ترجیح میدهند از ابزارهای آماده برای باز کردن فایلهای Office استفاده نمایند، ابزارهایی که برای باز کردن Open Documentها طراحی شدهاند. (http://en.wikipedia.org/wiki/OpenDocument) برچسبهای مرتبط با این نوشته:
|