وقتي يك 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)
سلام دوست عزيز.
وبلاگتو ديدم از چند تا از مطالبت خوشم اومد عالي بود.
خوشحال ميشم به سايت من هم سر بزني.
پنجشنبه ۲۷ شهريور ۱۳۹۳ - ۱:۰۱ عصر