جدول اکسل را از فایل های xlm ایجاد کنید. تبدیل فایل های XML به فرمت های اکسل

مایکروسافت اکسلابزاری مناسب برای سازماندهی و ساختاردهی طیف گسترده ای از داده ها است. به شما امکان پردازش اطلاعات را می دهد روش های مختلف، آرایه های داده را ویرایش کنید.

امکانات استفاده از آن برای تولید و پردازش فایل های برنامه وب را در نظر بگیرید. بر مثال خاصبیایید اصول کار با XML در اکسل را بیاموزیم.

نحوه ایجاد فایل XML از اکسل

XML یک استاندارد فایل برای انتقال داده ها در وب است. اکسل از صادرات و واردات آن پشتیبانی می کند.

ایجاد یک فایل XML را با استفاده از مثال تقویم کارخانه در نظر بگیرید.

  1. بیایید جدولی درست کنیم که طبق آن باید یک فایل XML در اکسل ایجاد کنیم و آن را با داده پر کنیم.
  2. بیایید یک نقشه XML با ساختار سند مورد نیاز ایجاد و درج کنیم.
  3. داده های جدول را به فرمت XML صادر کنید.

در فایل XML ذخیره کنید.

راه های دیگر برای دریافت داده های XML (شما):

  1. دانلود از پایگاه داده، اپلیکیشن تخصصی کسب و کار. طرح ها را می توان توسط سایت های تجاری، خدمات ارائه کرد. گزینه های سادهدر حوزه عمومی هستند.
  2. استفاده کنید نمونه های آمادهبرای اعتبار سنجی نقشه های XML در نمونه ها - عناصر اصلی، ساختار XML. کپی - چسباندن در Notepad - ذخیره با پسوند مورد نظر.


چگونه یک فایل اکسل را با فرمت XML ذخیره کنیم

یکی از گزینه ها:

  1. دکمه Office را فشار دهید. "ذخیره به عنوان" - "فرمت های دیگر" را انتخاب کنید.
  2. ما یک نام تعیین می کنیم. محل ذخیره و نوع فایل - XML ​​را انتخاب کنید.

گزینه های بیشتر:

  1. تبدیل XLC به XML را دانلود کنید. یا سرویسی را پیدا کنید که با آن بتوانید فایل را به صورت آنلاین صادر کنید.
  2. افزونه XML Tools را از وب سایت رسمی مایکروسافت دانلود کنید. او به صورت رایگان در دسترس است.
  3. کتاب جدیدی باز می کنیم. دکمه دفتر - "باز".

نحوه باز کردن فایل XML در اکسل

روی OK کلیک کنید. شما می توانید با جدول به دست آمده مانند هر فایل اکسل کار کنید.

نحوه تبدیل فایل XML به اکسل

جدول ایجاد شده را ویرایش کرده و با فرمت اکسل ذخیره می کنیم.

نحوه جمع آوری داده ها از فایل های XML در اکسل

اصل جمع آوری اطلاعات از چندین فایل XML مانند اصل تبدیل است. هنگامی که داده ها را به اکسل وارد می کنیم، یک نقشه XML در همان زمان ارسال می شود. سایر داده ها را می توان به همان طرحواره منتقل کرد.

هر فایل جدید به نقشه موجود پیوند داده می شود. هر عنصر در ساختار جدول مربوط به یک عنصر در نقشه است. فقط یک اتصال داده مجاز است.

برای پیکربندی گزینه‌های snapping، ابزار Map Properties را از منوی Developer باز کنید.


فرصت ها:

  1. هر فایل جدید توسط اکسل برای مطابقت بررسی می شود نقشه نصب شده(اگر کادر کنار این مورد را علامت بزنید).
  2. داده ها ممکن است به روز شوند. یا اطلاعات جدیدبه یک جدول موجود اضافه می شود (در صورت نیاز به جمع آوری داده ها از فایل های مشابه منطقی است).

اینها همه راه های دستی برای وارد کردن و صادرات فایل ها هستند.

هنگام کار با داده های بلوک، اغلب نیاز به تبدیل آنها به فرمت های دیگر وجود دارد، بنابراین برای تعامل بهتر. این مقاله مبدل های XML به XLS ممکن را ارائه می دهد. به عبارت دیگر، ما در مورد روش های تبدیل یک فرمت به فرمت دیگر صحبت خواهیم کرد.

روش 1: استفاده از اکسل

با توجه به اینکه اکسل با فایل های فرمت بلوک بدون نقص کار می کند، می تواند پسوند XML را نیز بدون مشکل باز کند. بنابراین به جرات می توان گفت که اکسل یک تبدیل XML به XLS است. نحوه تبدیل فرمت با آن را در نظر بگیرید:

  1. اکسل را باز کنید.
  2. در پنل، روی File کلیک کنید.
  3. بر روی گزینه "Open" کلیک کنید.
  4. در پنجره "Explorer" که ظاهر می شود، به دایرکتوری حاوی فایل XML بروید و آن را باز کنید.
  1. دوباره روی تب "File" کلیک کنید.
  2. گزینه "Save As" را انتخاب کنید.
  3. به دایرکتوری که می خواهید سند اصلاح شده را در آن قرار دهید تغییر دهید.
  4. از لیست کشویی «نوع فایل» «Excel Book» را انتخاب کنید.
  5. فایل را با کلیک بر روی دکمه مربوطه ذخیره کنید.

پس از تمام دستکاری هایی که در بالا توضیح داده شد، فایلی که در ابتدا پسوند XML داشت، به یک کتاب کار اکسل تبدیل می شود، یعنی دارای پسوند XLS خواهد بود.

روش 2: گزینه "وارد کردن داده ها" در اکسل

اکسل یک تبدیل XML به XLS با دو روش برای انجام این کار است. بنابراین مستقیماً به سراغ گزینه دوم می رویم که شامل استفاده از گزینه «واردات داده» است. اما قبل از شروع، باید منوی "Developer" را فعال کنید، زیرا ابزار مورد نظر در آن قرار دارد. در مرحله بعد، باید موارد زیر را انجام دهید:

  1. برنامه را باز کنید.
  2. به منوی "فایل" بروید.
  3. بخش "تنظیمات" را دنبال کنید.
  4. منوی Customize Ribbon را باز کنید.
  5. کادر کنار خط "توسعه دهنده" را که در سمت راست پنجره قرار دارد علامت بزنید.
  6. روی OK کلیک کنید.

نوار ابزار لازم به رابط برنامه منتقل شده است، به این معنی که می توانیم تبدیل را شروع کنیم:

  1. به تب "توسعه دهنده" بروید.
  2. "Import" را از نوار ابزار انتخاب کنید.
  3. پنجره ای باز می شود که از شما می خواهد یک فایل XML را انتخاب کنید.
  4. پنجره ای ظاهر می شود که از شما می خواهد یک طرح واره از داده ها ایجاد کنید. روی OK کلیک کنید.
  5. پس از آن، پنجره دوم ظاهر می شود که در آن باید در مورد مکان جدول وارد شده تصمیم بگیرید. روی سلول A1 کلیک کرده و OK را بزنید.

فایل به اکسل وارد می شود. اکنون می توان آن را به عنوان XLS ذخیره کرد. برای انجام این کار، با قیاس با دستورالعمل های قبلی، تب "File" را باز کنید، روی "Save As" کلیک کنید، دایرکتوری را مشخص کنید، قالب را انتخاب کنید و ذخیره کنید.

روش 3: استفاده از سرویس اینترنت

ممکن است برای مثال برای مالیات بر ارزش افزوده به یک تبدیل XLS به XML نیاز داشته باشید. در این مورد، اکسل کمکی نخواهد کرد و باید به برنامه دیگری مراجعه کنید. در این مورد، بیایید در مورد سرویس آنلاین Convertio صحبت کنیم:

  1. در هر مرورگری به صفحه نخستاین سرویس
  2. یک روش آپلود فایل را انتخاب کنید. اگر در درایو شما قرار دارد، روی دکمه «از رایانه» کلیک کرده و آن را انتخاب کنید مدیر فایل. اگر در "ابر" هستید، پس خود ذخیره سازی و سپس فایل را انتخاب کنید.
  3. سند اضافه شده و آماده تبدیل است. برای انجام این کار، فرمت XML را از لیست کشویی سمت راست انتخاب کنید.
  4. روی دکمه "تبدیل" کلیک کنید.

پس از آن فایل آماده می شود و فقط باید آن را دانلود کنید. Convertio تنها یک مبدل XLS به XML نیست. او قادر به کار با مقدار زیادفرمت ها فقط فایل را آپلود کنید و سپس فرمت مورد نظر برای تبدیل آن را انتخاب کنید.

بنابراین ما به مبدل های XML به XLS و بالعکس نگاه کردیم. همانطور که می بینید، اکسل برای تبدیل XML عالی است. با این حال، نمی تواند XLS را تبدیل کند، بنابراین به کمک برنامه های دیگر نیاز دارد. در این مورد، سرویس آنلاین Convertio است.


من مدت زیادی است که با فایل‌های XML کار می‌کنم، اما فقط حالا فکر کردم: چگونه به معنی منظمایجاد و ویرایش فایل های XML در MS Excel؟ اکسل ابزاری مناسب و بصری برای ایجاد، ویرایش و پردازش داده های مختلف است. اکسل در مدرسه مطالعه می شود و احتمالاً هیچ فردی وجود ندارد که کار با رایانه شخصی را بداند و اصول اولیه کار در اکسل را نداند. بنابراین، به نظر من، این مناسب ترین ابزاری است که می توان به کاربران عادی برای ایجاد و ویرایش فایل های داده برای برنامه های مختلف از جمله برنامه های وب توصیه کرد. من MS Excel 2013 را در خانه نصب کرده ام و با استفاده از مثال آن، روش های ساده ای را که باید هنگام ایجاد یک فایل داده XML در اکسل انجام شود، شرح خواهم داد. من فکر می کنم که در نسخه های قبلی اکسل نیز کار خواهد کرد. بیایید چند مرحله ساده برای ایجاد یک فایل داده XML برداریم. بیایید آنها را در مثال ایجاد یک فایل داده رویداد در نظر بگیریم.

1. ابتدا باید یک جدول داده در اکسل مطابق با ساختار داده ایجاد و پر کنید. لطفاً از آیتم منو برای این کار استفاده کنید درج / جدول.

2. بیایید شمای فایل XML را ایجاد کنیم. برای این در ویرایشگر متنخطوط زیر را وارد کرده و در یک فایل ذخیره کنید.

XHTML

0 0 0 0 رستاخیز مسیح مقدس. عید پاک 0 0 -7 0 -7 ورود خداوند به اورشلیم 1

0

0

0

0

رستاخیز مسیح مقدس. عید پاک

0

0

-7

0

-7

ورود خداوند به اورشلیم

1

3. حالا تب را باز کنید توسعه دهنده، دکمه را فشار دهید منبعو فایل منبع XML را مشخص کنید. در صورت لزوم، آیتم منو را فعال کنید توسعه دهندهدر تنظیمات اکسل.

4. باقی مانده است که عناصر طرح و ستون های جدول را با کشیدن عناصر به عنوان ستون های مربوطه مطابقت دهیم.

5. و آخرین مرحله: با استفاده از منوی زمینه، داده های جدول را به یک فایل XML صادر کنید. روی هر سلول جدول بایستید، دکمه سمت راست ماوس را فشار دهید، انتخاب کنید XML/Export...و فایل XML را با نام دلخواه ذخیره کنید.

فایل اکسل را برای ویرایش و اضافات بعدی ذخیره کنید. در بندهای زیر 1.-4. نیازی به انجام نخواهد بود!

P.S. چرا این یادداشت پیش پا افتاده را نوشتم؟ اولاً برای اینکه خودتان را فراموش نکنید و ثانیاً فکر می کنم این اطلاعات برای کاربران مفید باشد و از نسخه بعدی 0.6 شروع شود. ;-)

اگر شخصی یک فایل XML حاوی داده‌ها را در جداول ارسال کند، لازم نیست تمام متن و تمام تگ‌های براکت زاویه را بخوانید. می توانید این سند را مستقیماً در اکسل بارگیری کنید، به اکسل بگویید چگونه این سند را نمایش دهد و با استفاده از نقشه ها با داده ها کار کنید.

در آخرین سال ها زبان XML(Extensible Markup Language, lit. Extensible Markup Language) به یک قالب رایج برای تبادل اطلاعات تبدیل شده است و ارسال فایل های XML برای افراد و سازمان ها برای یکدیگر غیر معمول نیست. ساختارهای ساده زیربنای XML تبادل اطلاعات را بسیار آسان می کند، خواه همه طرفین از یکسان استفاده کنند یا نه نرم افزارو مرورگرها با این حال، تا همین اواخر، اگر چه به طور کلی ابزارهای XMLگسترده شود، شکاف بین اسناد XML و رابط کاربریهنوز به اندازه کافی سخت بود مایکروسافت اکسل این کار را حداقل برای داده ها در یک شبکه جدول آسان می کند.

این ترفند از ویژگی های اکسل استفاده می کند که فقط در اکسل برای ویندوزهای قدیمی تر از 2003 موجود است. بیشتر نسخه های اولیهاکسل از آنها پشتیبانی نمی کند. این ویژگی ها در نسخه های فعلی یا آینده اکسل برای مکینتاش پشتیبانی نمی شوند.

بیایید با سند XML ساده نشان داده شده در فهرست 8.1 شروع کنیم.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 < ?xml version- "1.0" encoding- "UTF-8" ?> < sales> < sale> < date> 2003 - 10 - 05 < isbn> 0596005385 < title>Off1ce 2003 XML Essentia1s < priceus> 34.95 < quantity> 200 < customer IO= "1025" >زورک کتاب های "s 2003-10-05 0596002920 <priceus>39.95</priceus> <quantity>90</quantity> <customer ID="1025">زورک"</span> s کتاب ها</ customer> </ title></ sale> < sale> < date> 2003 - 10 - 05 </ date> < isbn> 0596002378 </ isbn> < title>SAX2</ title> < priceus> 29.95 </ priceus> < quantity> 300 </ quantity> < customer ID= "1025" >زورک <span>کتاب های "s</customer> </sale> <sale> <date>2003-10-05</date> <isbn>0596005385</isbn> <title>Office 2003 XML Essentials 34.95 10 کتاب های جلال 2003-10-05 0596002920 39.95 25 کتاب های جلال 2003-10-07 0596002378 SAX2 29.95 5 کتاب های جلال 2003-10-18 0596002378 SAX2 29.95 15 موج عنوان 2003-10-21 0596002920 39.95 15 کتاب برای شما

// فهرست 8.1. سند XML ساده برای تجزیه در اکسل< ?xml version-"1.0" encoding-"UTF-8"?> 2003-10-05 0596005385 Off1ce 2003 XML Essentia1s 34.95 200 کتاب های زورک 2003-10-05 0596002920 XML به طور خلاصه. ویرایش 2 <priceus>39.95</priceus> <quantity>90</quantity> <customer ID="1025">کتاب های زورک</customer> 2003-10-05 0596002378 SAX2 29.95 300 کتاب های زورک 2003-10-05 0596005385 Office 2003 XML Essentials 34.95 10 کتاب های جلال 2003-10-05 0596002920 XML به طور خلاصه، ویرایش دوم 39.95 25 کتاب های جلال 2003-10-07 0596002378 SAX2 29.95 5 کتاب های جلال 2003-10-18 0596002378 SAX2 29.95 15 موج عنوان 2003-10-21 0596002920 XML به طور خلاصه ویرایش 2 39.95 15 کتاب برای شما

این سند را می توان مستقیماً در اکسل با دستور File → Open (File → Open) باز کرد. یک کادر محاوره ای باز می شود (شکل 8.1).

اگر دکمه رادیویی As an XML list را انتخاب کنید، اخطاری را مشاهده خواهید کرد که اکسل برای این سند که طرحی ندارد، شمای خود را ایجاد خواهد کرد (شکل 8.2).

هنگامی که روی OK کلیک می کنید، خواهید دید که چگونه اکسل برای ارائه اطلاعات در سندی که باز می کنید به عنوان صفحه گسترده انتخاب کرده است (شکل 8-3). توجه داشته باشید که اکسل فرمت تاریخ مورد استفاده برای عنصر تاریخ را انتظار دارد، بنابراین تاریخ های وارد شده به عنوان 05-10-2003 به عنوان 10/5/2003 نمایش داده می شوند.

اکنون که سند در اکسل بارگذاری شده است، می‌توانید داده‌ها را مانند هر داده دیگری در اکسل پردازش کنید - آن را در فرمول‌ها وارد کنید، محدوده‌های نام‌گذاری شده ایجاد کنید، نمودارهایی را بر اساس محتوا بسازید و موارد دیگر. برای کمک به شما، اکسل چندین داخلی دارد. قابلیت تجزیه و تحلیل داده ها

لیست‌های کشویی در سرفصل‌های ستون به شما امکان می‌دهد نحوه مرتب‌سازی داده‌ها را انتخاب کنید (به‌طور پیش‌فرض، داده‌ها به ترتیبی که در سند منبع نوشته شده نمایش داده می‌شوند). شما همچنین می توانید نمایش کل ردیف را روشن کنید. می توانید از نوار ابزار List استفاده کنید یا کلیک کنید کلیک راستماوس را در هر نقطه از لیست و در داخل منوی زمینهدستور List → Total Row (List → Total Row) را انتخاب کنید. هنگامی که خط خلاصه ظاهر می شود، می توانید نوع اطلاعات خلاصه را در منوی کشویی انتخاب کنید (شکل 8.4).

برنج. 8.4. انتخاب مجموع برای یک لیست XML در اکسل

داده ها را می توان با افزودن اطلاعات از یک سند XML با همان ساختار به منطقه ای که به روز می شود، به روز کرد. اگر سند دیگری با این ساختار دارید، می توانید روی لیست کلیک راست کرده، XML → Import را از منوی زمینه انتخاب کنید و سند دوم را انتخاب کنید. علاوه بر این، پس از ویرایش، می توان با کلیک راست روی لیست و انتخاب XML → Export از منوی زمینه، داده ها را به یک فایل XML بازگردانید. این باعث می شود اکسل ابزار بسیار مفیدی برای ویرایش اسناد XML ساده با ساختار جدول باشد.

اگر داده ها به اندازه کافی ساده باشند، اغلب می توانید اعتماد کنید انتخاب اکسلنحوه ارائه محتویات فایل و استفاده از تنظیمات پیش فرض ارائه شده. اگر داده‌ها پیچیده‌تر می‌شوند، به‌ویژه اگر حاوی تاریخ‌ها یا متن‌هایی هستند که شبیه اعداد هستند، ممکن است بخواهید از طرح‌واره‌های XML استفاده کنید تا به اکسل بگویید چگونه داده‌ها را بخواند و چه داده‌هایی در نقشه داده شده قرار می‌گیرند. برای سند ما، طرح XML ممکن است شبیه لیست 8.2 باشد.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 < ?xml version= "1.0" encoding= "UTF-8" ?> < xs: schema xmlns: xs= "http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">< xs: element name= "sales" > < xs: complextype> < xs: sequence> < xs: element maxOccurs= "unbounded" ref= "sale" > < xs: element name= "sale" > < xs: complextype> < xs: sequence> < xs: element ref= "date" > < xs: element ref= "ISBN" > < xs: element ref= "T1tle" > < xs: element ref= "PriceUS" > < xs: element ref= "quantity" > < xs: element ref= "customer" > < xs: element name= "date" type= "xs:date" > < xs: element name= "ISBN" type= "xs:string" > < xs: element name= "Title" type= "xs:string" > < xs: e1ement name= "PriceUS" type= "xs:decimal" > < xs: element name= "quant1ty" type= "xs:integer" > < xs: element name= "customer" > < xs: complextype mixed= "true" > < xs: attribute name= "ID" use = "required" type= "xs:integer" >

// فهرست 8.2. طرحی برای داده های فروش کتاب< ?xml version="1.0" encoding="UTF-8"?>

توجه داشته باشید که عنصر date به عنوان یک تاریخ و عنصر ISBN به عنوان یک رشته و نه یک عدد صحیح تعریف می شود. اگر با باز کردن این طرح به جای سند شروع کنید، اکسل را مجبور خواهید کرد که سند را با نگه داشتن صفر اول در ISBN بارگیری کند.

این بار، قبل از بارگیری سند XML، لیست را ایجاد می‌کنید و با یک کاربرگ خالی شروع می‌کنید. شما باید پنجره وظیفه XML Source را باز کنید. اگر از قبل باز نشده است، Ctrl+Fl را فشار دهید. سپس، منبع XML را از لیست کشویی در بالای صفحه کار انتخاب کنید، و باید چیزی شبیه به شکل 1 ببینید. 8.6.

برای بارگیری طرح، روی دکمه XML Maps کلیک کنید. کادر محاوره ای XML Maps باز خواهد شد (شکل 8.7).

روی دکمه افزودن کلیک کنید تا طرحواره باز شود و طرحواره انتخاب شود (شکل 8.8). اگر طرحواره اسناد را به یک عنصر شروع محدود نکند، یک کادر محاوره ای ظاهر می شود که از شما می خواهد یک عنصر ریشه را انتخاب کنید. از آنجایی که اسناد در این مثال با یک عنصر فروش شروع می شوند، "فروش" را انتخاب کنید.

وقتی روی OK کلیک کنید، در مورد مشکلات احتمالی در تفسیر طرحواره ها هشدار داده می شود. طرحواره XML (XML Schema) یک مشخصات بزرگ است که از تعداد بسیار زیادی ساختار پشتیبانی می کند که با نحوه درک اطلاعات در اکسل مطابقت ندارند، بنابراین محدودیت هایی در اکسل وجود دارد.

در کادر محاوره ای XML Maps، اکسل گزارش می دهد که طرحواره به صفحه گسترده اضافه شده است. اگر روی OK کلیک کنید، به پنجره اصلی اکسل باز می‌گردید و پنجره وظیفه XML Source نموداری را نشان می‌دهد که ساختار طرحواره را نشان می‌دهد. اکنون که یک ساختار دارید، می توانید یک لیست ایجاد کنید. ساده ترین راه برای انجام این کار، به خصوص با اسناد کوچکتر مانند ما، کشیدن نماد فروش روی سلول A1 است.

اکنون با تجهیز خانه برای داده ها، باید آن را پر کنید. می توانید روی دکمه کلیک کنید واردات XML-data (Import XML Data) در نوار ابزار List (List) یا روی لیست کلیک راست کرده و دکمه XML → Import (XML → Import) را در منوی زمینه انتخاب کنید. اگر فایلی را که قبلاً باز کرده اید (در فهرست 8.1) انتخاب کنید، نتیجه ای مشابه شکل 1 خواهید دید. 8.3. به اضافه شدن صفرهای ابتدایی به مقادیر توجه کنید، که اکنون متنی هستند که باید باشند.

اگر می‌خواهید آن‌ها را جابه‌جا کنید، یا اطلاعات مختلفی را در مکان‌های مختلف صفحه‌گسترده قرار دهید، می‌توان عناصر را به‌صورت جداگانه کشیده و رها کرد.

پشتیبانی از نقشه ها و لیست های XML در اکسل به این معنی است که می توانید صفحات گسترده ای ایجاد کنید که با داده هایی که وارد می شوند کار کنند فایل های جداگانه، با انعطاف پذیری بیشتری نسبت به فرمت های قبلی مانند CSV (تحدید شده با کاما) یا فرمت جدا شده از برگه.

به جای اتصال به پایگاه داده برای ویرایش تعاملی داده ها، کاربر می تواند فایل XML را در حالی که در هواپیما است ویرایش کند و بلافاصله پس از فرود به مشتری تحویل دهد. شاید بهترین چیز در مورد ویژگی های XML جدید اکسل انعطاف پذیری آنها باشد. تا زمانی که داده ها در ساختاری سازماندهی شوند که با شبکه جدول مطابقت داشته باشد، اکسل قوانین بسیار کمی در مورد اینکه چه نوع XML را می توان در آنجا ارسال کرد، دارد. با چند کلیک و بدون برنامه نویسی، می توانید داده های XML را در صفحات گسترده ادغام کنید.

هنگام توسعه یک سیستم مدیریت اسناد الکترونیکی، لازم بود توابعی برای صادرات داده ها در قالب های رایج اجرا شود. به ویژه، در قالب مایکروسافت اکسل. الزامات صادرات بسیار ساده بود - برای صادر کردن داده ها با حداقل قالب بندی، به عنوان مثال. بدون سلول های ادغام شده، بازی های فونت و غیره فرمت های XLSX و Excel XML.

در این مورد، من در مورد Excel XML صحبت خواهم کرد.

بنابراین، در هر سیستمی که با داده های جدولی کار می کند، دیر یا زود نیاز به صادرات داده ها وجود دارد. اهداف صادرات متفاوت است:

اجرای مجموعه ای از توابع برای نوشتن مقادیر سلول و سری در کلاس، نیاز اصلی است که به ایجاد توابعی برای نوشتن مقادیر سلول از انواع مشخص شده و توانایی نوشتن سری تمام شده در یک فایل اشاره دارد.

توانایی کار با حجم نامحدود داده - البته خود کلاس صادراتی نمی تواند مسئولیت حجم نوشته شده را بر عهده بگیرد، اما باید توابعی را برای نوشتن داده ها روی دیسک و آزادسازی ارائه کند. حافظه دسترسی تصادفیبرای داده های بعدی

علاوه بر الزامات توصیف شده، اضافه کردن توابع خدمات ضروری بود:

  • فیلتر خودکار را فعال کنید
  • فشرده سازی یک فایل در zip.

پیاده سازی

اول از همه، هنگام ایجاد یک کلاس، نام فایل نهایی را بررسی می کنم و تعداد ستون ها و ردیف ها را درخواست می کنم. فایل باید داشته باشد نام صحیحو پوشه ای که در آن ذخیره می شود باید وجود داشته باشد. همه چیز طبق معمول است.
فرمت اکسل XML به شما امکان می دهد اطلاعات مربوط به کاربری که آن را ایجاد کرده است را در فایل ذخیره کنید، بنابراین، هنگام ایجاد هدر، نام سازمان، اطلاعات کاربر و تاریخ ایجاد فایل را یادداشت می کنم.

تابع عمومی writeDocumentProperties($organization = null، $user = null) (fwrite($this->file, " ")؛ اگر (!is_null($user)) (fwrite($this->file," ".$user->description."")؛ fwrite($this->file, " ".$user->description.""); ) $dt = new Datetime(); $dt_string = $dt->format("Y-m-d\TH:i:s\Z"); fwrite($this->file, " ".$dt_string."")؛ fwrite($this->file, " ".$dt_string."")؛ اگر (!is_null($organization)) fwrite($this->file)، " ".$organization->name."")؛ fwrite($this->file, " 12.00")؛ fwrite($this->file, ""); }
درست است، در این تابع است که از موجودیت های سیستم گردش کار استفاده می شود - سازمان (سازمان) و کاربر (کاربر). جایگزینی این موجودیت ها با مقادیر مثلاً رشته ای مشکلی نیست.

جالب ترین قسمت هدر، اطلاعات سبک است. در قالب اکسل XML، آنها بسیار راحت پیاده سازی می شوند، بنابراین من فقط یک جدول با سبک ها برای رشته ها، تاریخ ها / زمان ها و لینک ها ایجاد می کنم.

تابع عمومی writeStyles() (fwrite($this->file, ""); //default style fwrite($this->file, ""); //سبک تاریخ fwrite($this->file, "")؛ fwrite($this->file, "")؛ fwrite($this->file, ""); //سبک هایپرلینک fwrite($this->file, ""); //fwrite پررنگ ($this->file, "")؛ fwrite($this->file, ""); }

کار مقدماتی به پایان رسید، می توانید به ضبط داده ها ادامه دهید. باز کردن یک کاربرگ فقط چند تگ است، فقط در این لحظه اطلاعاتی در مورد تعداد ستون ها و ردیف ها استفاده می شود.

تابع عمومی openWorksheet() (fwrite($this->file, " ")؛ fwrite($this->file, strtr("

", array("(col_count)"=>$this->colCount, "(row_count)"=>$this->rowCount)));)
اما اینجا ضبط سریال روند جالب تری دارد. کلاس باید به سرعت کار کند و حجم نامحدودی از داده را پردازش کند، زیرا ممکن است صدها هزار یا حتی یک میلیون رکورد وجود داشته باشد! اگر سرعت می خواهید - با حافظه کار کنید، اگر مقدار نامحدود داده می خواهید - با دیسک کار کنید. برای تطبیق الزامات، توابع resetRow و flushRow را پیاده‌سازی کردم.
اولی ردیف فعلی را پاک می کند، پس از آن می توان دوباره با داده پر شد، و دومی ردیف فعلی را در یک فایل باز روی دیسک می نویسد. استفاده مشترک از آنها به شما امکان می دهد بین سرعت و مقدار حافظه استفاده شده تعادل برقرار کنید.

تابع عمومی resetRow() ($this->currentRow = array(); ) تابع عمومی flushRow() (fwrite($this->file, implode(")، $this->currentRow)); unset($this-> ردیف فعلی))
هر سلول با یک تابع مربوط به نوع داده نوشته می شود، یعنی appendCellxxx، که xxx نوع داده است. انواع داده های معتبر: Num، String، Real، DateTime، Date، Time، Link. مثالی از تابع برای نوشتن مقدار عددی:

تابع عمومی appendCellNum($value) ($this->currentRow = " ".$value.""; }
پس از ثبت تمام داده ها، باقی مانده است که کاربرگ و کتاب کار را ببندید.

کاربرد

استفاده از کلاس توصیف شده بر اساس صادرات داده با استفاده از ارائه دهنده CArrayDataProvider است. با این حال، با فرض اینکه مقدار داده‌های صادر شده می‌تواند بسیار زیاد باشد، از یک تکرارکننده ویژه CDataProviderIterator استفاده می‌شود که روی داده‌های برگشتی ۱۰۰ رکورد تکرار می‌کند (شما می‌توانید تعداد رکوردهای متفاوتی را مشخص کنید).

تابع عمومی exportExcelXML($organization، $user، &$filename) ($this->_provider = new CArrayDataProvider(/*query*/); Yii::import("ext.AlxdExportExcelXML.AlxdExportExcelXML")؛ $Export = new AlxXd ($filename، count($this->_attributes)، $this->_provider->getTotalItemCount() + 1؛ $export->openWriter(); $export->openWorkbook(); $export->writeDocumentProperties($ Organization, $user؛ $export->writeStyles(); $export->openWorksheet(); //title row $export->resetRow()؛ $export->openRow(true)؛ foreach ($this->_attributes) به عنوان $code => $format) $export->appendCellString($this->_objectref->getAttributeLabel($code))؛ $export->closeRow()؛ $export->flushRow(); //ردیف های داده $rows = CDataProviderIterator جدید ($this->_provider, 100)؛ foreach ($rows به عنوان $row) ($export->resetRow(); $export->openRow(); foreach ($this->_attributes به عنوان $code => $format) ( سوئیچ ($format->type) ( مورد "Num": $export->appendCellNum($row[$code])؛ /*دیگر انواع*/ پیش‌فرض: $export->append CellString(""); ) ) $export->closeRow(); $export->flushRow(); ) //close all $export->closeWorksheet(); $export->closeWorkbook(); $export->closeWriter(); //فایل zip $export->zip(); $filename = $export->getZipFullFileName(); )
در مورد من، هر ردیف روی دیسک نوشته شده است، که در حال حاضر خوب است، اما ممکن است در آینده نیاز به تغییر داشته باشد. برای مثال، عاقلانه است که نه هر ردیف، بلکه هر ده یا حتی صد ردیف را در یک زمان ذخیره کنید. سپس سرعت صادرات افزایش می یابد.

سرعت

به هر حال، من از تجربه خودم آموخته ام که چقدر مهم است که احتمال وجود مقادیر زیادی داده در یک عملیات دسته ای، مانند صادرات را فرض کنیم.
در ابتدا سعی کردم با استفاده از داده ها را صادر کنم