XML у Excel і назад, давайте ближче познайомимося з типами цих файлів. Тут потрібно відразу зазначити, що документи Excel мають безліч форматів, у той час як XML - і є формат файлу. Тому не варто плутати ці два поняття.

Microsoft Excel є потужною програмою для обчислень з безліччю корисних функцій

Програма Microsoft Excel є спеціальною утилітою, призначеною для створення та редагування таблиць. З ними ви вже можете робити все, що завгодно: створювати бази, діаграми, формули та інші типи даних. Це дуже потужний інструмент, тому всі його можливості ми не обговорюватимемо. Сьогодні наша мета дещо інша, і ми не відходитимемо від теми сьогоднішньої дискусії.

Файли XML для більш простого розуміння призначені для зберігання, обміну різних даних між утилітами. Особливо часто цією мовою користуються розмітки при передачі інформації через інтернет. І коли вам потрібно перенести табличні дані з Екселю на сайт, наприклад, вам потрібно буде перетворити свій документ, щоб він правильно відображався. Тому давайте не відтягуватимемо момент істини і відразу приступимо до виконання операції.

Як перетворити Excel на XML

Дорогі друзі, фактично перетворення файлів є досить простим заняттям. Однак, у деяких користувачів можуть виникнути проблеми при перенесенні даних, тому сьогодні ми з вами розглянемо кілька способів здійснення нашого задуму. Тому набираємось терпіння і приступаємо до дій:

  1. Найпростіший спосіб, який може не спрацювати в деяких випадках, - це збереження файлу в потрібному форматі в самій програмі Microsoft Excel. Для цього відкрийте необхідний документ у цьому додатку. Потім натисніть кнопку «Файл» (розглядається на прикладі Office 2013, в інших версіях процес збереження може дещо відрізнятися) у верхньому лівому куті вікна Екселя, потім пункт «Зберегти як», після чого виберіть місце збереження документа, дайте йому ім'я та у вкладці типу файлу вкажіть "XML дані". Після цього перевірте, чи правильно все вийшло. Якщо ні, то пробуємо такі методи.
  2. Отже, якщо виникає помилка в попередньому випадку, можливо, у вашій копії програми не передбачена підтримка та відповідні надбудови. Щоб їх встановити, перейдіть на сайт компанії Microsoft http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=3108, скачайте та інсталюйте цей файл до себе на комп'ютер або ноутбук. Далі, запустіть програму Microsoft Excel і натисніть на велику кольорову кнопку в лівому верхньому кутку вікна програми (тут ми вже дивимося приклад на версії 2007 року). У блоці, що з'явився, клікніть за параметрами, ліворуч від виходу з утиліти. Тепер зайдіть у пункт надбудов і натисніть кнопку «Перейти» навпроти пункту «Управління». Вискочить діалогове вікно, де потрібно натиснути на огляд і знайти документ, який ви завантажили з сайту Майкрософта раніше. Тепер клацаємо ОК і переходимо в основне вікно програми, де у вас є вкладка XML Tools - за допомогою нього тепер ви спокійно можете створити файл XML з існуючої таблиці. Зберігати його потрібно аналогічно до попереднього пункту.
  3. Якщо вам зовсім не хочеться завантажувати і себе, і свій комп'ютер такою інформацією, можете вдатися до допомоги спеціальних утиліт-конвертерів або онлайн-версій цих програм. Наприклад, ви можете завантажити програму Format Factory, яка дозволить вам здійснити всі необхідні дії. Але варто пам'ятати, що збережені та перетворені таким чином файли не завжди працюють надалі. Тобто під час операції можуть пошкодитися сектори або області в пам'яті документа, що негативно позначиться на ньому - він може не відкритися в XML-редакторі, наприклад. Тому рекомендується використовувати професійні програми, або сам Microsoft Excel.

Як перевести XML в Excel

Перш ніж перевести XML в Excel, потрібно його спочатку відкрити. Розглянемо весь цей нетривалий процес нижче. Отже, приступаємо:

  1. Запустіть програму за допомогою ярлика на робочому столі або через меню провідника.
  2. Натисніть кнопку «Відкрити інші книги» внизу головної сторінки, якщо ви використовуєте Office В інших версіях процес може дещо відрізнятися.
  3. Далі, натискаємо на «Комп'ютер» або інше місце, де розташований ваш XML-файл, потім клацніть «Огляд» і змініть у вікні тип даних на «Файли XML».
  4. Тепер шукаємо необхідний файл та відкриваємо його в нашій програмі за допомогою однойменної кнопки.
  5. Далі обговоримо те, як перетворити наш документ. Перейдіть на вкладку розробника, а потім натисніть кнопку імпорту.
  6. У вікні потрібно буде знову знайти і вибрати наш документ, над яким ви і хочете зробити дію, потім натискаємо кнопку «Імпорт».
  7. Потім налаштовує все під себе: область для імпорту, місце збереження та інші параметри. Після чого ви отримаєте таблицю, яку пізніше можна зберегти в потрібному вам форматі. Як бачите, нічого складного нема.

Підведемо підсумки

Дорогі читачі, сьогодні ми з вами дізналися не тільки як перетворити файли XML на Excel і назад, але і як створити та відкрити їх при несумісності версій. Сподіваємось, що у вас все вийшло і більше не залишилося жодних питань. Не забуваємо ділитися у коментарях своєю думкою та досвідом: можливо, ви знаєте простий спосіб конвертації. Розкажіть іншим користувачам, чи вдалося перекласти один тип документа. Якщо спрацювало, то поділіться тим, яким способом ви скористалися.

Розглянемо процедуру перетворення об'єкта бази даних у формат XML:

  1. У вікні бази даних виділіть необхідний об'єкт клацанням лівої кнопки миші та виберіть команду Файл, Експорт(File, Export) або клацніть правою кнопкою по об'єкту та виберіть у контекстному меню команду Експорт(Export).
  2. З'явиться діалогове вікно Експорт об'єкту(Export To). У списку, що розкривається Типи(Save as type) виділіть елемент Документи XML(XML Documents). В полі ім'я файлу(File name) введіть назву документа HTML та натисніть кнопку Експорт(Export).
  3. З'явиться діалогове вікно Експорт XML(Export XML) (рис. 12.9).
  4. Це діалогове вікно містить три прапорці для трьох складових документа XML: даних, схеми даних та подання даних (про них див. Розд. "Формат XML у Microsoft Office 2002" цього розділу).Встановіть прапорці для частин документа XML, які необхідно отримати в результаті експорту. Наприклад, якщо встановити одночасно прапорці дані (XML)(Data (XML)) та схема даних(Schema of the data), то схема даних буде експортована та збережена окремо від файлу даних XML, у файлі XSD. Для таблиць можна експортувати лише дані або їх структуру або дані та структуру разом і не експортувати представлення таблиці у вигляді Web-сторінки: прапорець презентація даних(XSL) (Presentation of your data (XSL)) можна зняти.

Мал. 12.9.Діалогове вікно Експорт XML

Зауваження

Прапорець даних (XML) слід скинути лише в тому випадку, якщо ви хочете експортувати лише нове уявлення об'єкта бази даних, а дані були експортовані до файлу XML раніше. Інакше при відкритті отриманої Web-сторінки буде видано повідомлення про помилку підключення до джерела даних, а сторінка виявиться практично порожньою.

  1. Щоб встановити додаткові параметри перетворення, натисніть кнопку Додатково(Advanced) (рис. 12.10).

Мал. 12.10.Вкладка Данідіалогового вікна Експорт XML

  1. Крім того, це діалогове вікно містить ще дві вкладки для двох складових документа XML, що залишилися: схеми даних і подання даних. На кожній із цих вкладок можна встановити прапорець, що дозволяє експортувати відповідну частину документа XML, вказати шлях та ім'я файлу, в якому буде збережено цю частину документа, та задати деякі додаткові параметри:
    • на вкладці Дані(Data) за допомогою розкривного списку Кодування(Encoding) можна вибрати кодування для збереження вмісту сторінки;
    • на вкладці Схема(Schema) за допомогою перемикачів можна вибрати, чи експортувати структуру даних в окремий файл XSD або впровадити її у файл XML разом із даними;

Мал. 12.11.Звіт "Рахунок", відкритий у базі даних

  • на вкладці Презентація(Presentation) за допомогою перемикачів можна вибрати формат представлення Web-сторінки: оброблюваний на стороні клієнта HTML або сервері ASP. Якщо об'єкт, що експортується, містить малюнки, які необхідно включити в результуючий документ, можна вказати ім'я папки, в якій вони розташовані. На цій вкладці є поле для введення імені файлу XSL з описом оформлення сторінки. Якщо вказаний файл не існує, Access 2002 створить файл у форматі XSL описом зовнішнього представлення документа (розробник може використовувати його як основу для розробки файлу у форматі XSLT для перетворення документа XML в інший формат).

Якщо потрібна додаткова інформація про подання даних у форматі XML, натисніть кнопку Довідка(Help). Інформацію про розробку та перетворення документів XML можна знайти на веб-сайті Microsoft для розробників: http://msdn.microsoft.com/ .

Мал. 12.12.Звіт "Рахунок", дані якого перетворені на формат XML, відкритий в Internet Explorer

  1. Натисніть кнопку ОК.
  2. Якщо запропоновані параметри перетворення не були змінені, в результаті буде створено три файли: XML - з даними, XSL - зі стилями та НТМ - з поданням перетвореного об'єкта. Щоб відкрити отриману веб-сторінку, потрібно відкрити в Internet Explorer файл НТМ або ASP, залежно від того, який формат представлення був вибраний.

На жаль, підпорядковані форми та звіти, а також пов'язані малюнки не будуть додані до документа XML, отриманого з об'єкта бази даних. Однак прості об'єкти з впровадженими малюнками, експортовані у формат XML, виглядатимуть практично так само, як вихідні в Access. Ви можете переконатися в цьому, порівнявши, наприклад, вихідний і перетворений на формат XML звіт "Рахунок" (Invoice) з бази даних "Борей" (Northwind) (рис. 12.11 і 12.12).

Якщо даних у джерелі даних вибраного об'єкта багато, завантаження веб-сторінки в програму перегляду Інтернету може зайняти значний час.

Зауваження

Оскільки самі дані, що містяться в такому документі Web, повністю зберігаються у файлі XML, немає потреби в доступі до бази даних, з якої спочатку були взяті ці дані (як, наприклад, і у разі перетворення звіту у формат XML). що для забезпечення доступу до такого документа достатньо помістити лише згаданий набір файлів, що містять опис цього документа, на сервер Web.З іншого боку, це означає, що зміна даних у такому документі можлива лише за допомогою додатків, які мають доступ до файлу XML і здатні сприйняти цей формат.

У вас є ідеальний файл з усіма даними про продукт або статистику, і тепер вам потрібні ці дані у форматі XML.

Перетворення файлу на XML тепер набагато простіше, ніж раніше, XML став популярним. Тепер є безліч інструментів для конвертування файлів з одного формату в інший.

Звичайно, ці інструменти є абсолютно марними, якщо ваші дані не готові до конверсії.

Дані мають бути структуровані та організовані таким чином, щоб їх можна було правильно перетворити на XML.

Крок 1 Який формат є вашим вихідним файлом?

Тип файлу буде визначальним фактором того, як ви наближаєтеся до перетворення. Якщо ваш файл є одним з таких типів, вам пощастило.
Ваша програма буде конвертувати його для вас:

Примітка. Важливо, що файли Microsoft експортуються у певному форматі. Ці документи можуть бути або не бути тим, що ви очікуєте. Вони містять елементи, які стосуються форматування вашого документа Excel. Це було б не ідеально, якщо ви використовуєте дані у додатку, який відноситься до формату вхідних даних.

Якщо, з іншого боку, ваш документ не знаходиться в жодному з цих форматів, вам доведеться або шукати інструмент конвертера, або конвертувати його вручну (якщо ви занадто багато для перетворення вручну).

Програмне забезпечення, таке як XML Spy, може конвертувати ваш код на основі SQL у документи XML. Коли у вас є великий набір даних, рекомендується конвертувати.

Tab Delimited, CSV

Існують інші інструменти конвертера, такі як XML-конвертер Rustemsoft або XML-Buddy (плагін Eclipse) із програмного забезпечення Bocaloca. Ці програми можуть експортувати ваші дані, а також надати вам файл XML Schema або DTD (визначення типу документа), якщо це необхідно. Ці програми дуже зручні і роблять процес перетворення вашого файлу або бази даних на XML більш зручним для користувача.

Крок 2 Якщо ви на цьому етапі, ви повинні перетворити його вручну.

Візьмемо базовий текстовий документ і перетворимо його на XML. Але спочатку про те, як швидко переглянути основні правила XML:

XML. Розширювана мова розмітки є текстовою крос-платформною мовою, яка дозволяє вам структурувати дані (наприклад, адреси в адресній книзі). Очікується, що документ XML матиме правильний синтаксис. Тому під час створення XML-документів вони мають бути добре сформовані. Добре сформований документ має таке:

Закриті теги (<> або)

Атрибут елемента повинен бути укладений у подвійні лапки

(<страна country id = «7»>)

XML чутливий до регістру. Іншими словами, початковий і кінцевий теги повинні використовувати один і той самий випадок

Ось основний список голландських художників XVII ст.

Рембрандт Ван Рейн, 1606-1669, Нічний дозор
Хендрік Аверкамп, 1585-1634, зима
Ян де Бісхоп, 1628-1671, Оостропорт

Як бачите, дані розділяються комами.

Кожен рядок є окремим фрагментом даних. Кожен шматок має ім'я художника, рік народження і до смерті і, нарешті, одну з картин.

Тому нам потрібно створити XML-файл із наступною структурою:

Ім'я художника
Рік народження художника
Рік смерті художника
Живопис художника

Крок 3 З урахуванням цього формату ми можемо створити файл XML.

Наш кореневий елемент буде називатися художниками, оскільки ми маємо список художників.


Rembrandt Van Rijn
1606
1669
Night Watch

Hendrick Avercamp
1585
1634
Winter

Jan de Bisschop
1628
1671
The Oostpoort

Кожен з наших художників має дві дати, пов'язані з ними, а також картини.

Тому збираємося зробити ім'я, дати та намалювати дочірній елемент малювання елементів. Вони будуть називатися ім'я, рік народження, живопис та рік. З цим файлом ми перетворимо дані, готові до використання на власний розсуд.

Під час створення системи електронного документообігу знадобилося реалізувати функції експорту даних у популярних форматах. Зокрема у форматі Microsoft Excel. Вимоги до експорту були прості – експортувати дані з мінімумом форматування, тобто. жодних об'єднаних осередків, ігор зі шрифтами тощо. Формати експорту XLSX та Excel XML.

В даному випадку розповім про Excel XML.

Отже, у будь-якій системі оперує табличними даними раною чи пізно виникає потреба експорту даних. Цілі експорту різні:

Реалізувати в класі набір функцій для запису значень осередків та ряду – основна вимога, яка передбачає створення функцій для запису значень осередків зазначених типів та можливість запису готового ряду до файлу.

Можливість роботи з необмеженим обсягом даних – зрозуміло, сам клас експорту відповідати за обсяг, що записується, не зможе, але він повинен надати функції для запису даних на диск і звільнення оперативної пам'яті для наступної порції даних.

Крім описаних вимог, потрібно додати сервісні функції:

  • Увімкнення автофільтра
  • Стиснення файлу в zip.

Реалізація

Насамперед, при створенні класу здійснюю перевірку кінцевого імені файлу та запитую кількість колонок та рядів. Файл повинен мати коректне ім'я, а папка, в яку буде збережено, повинна існувати. Все як завжди.
Формат Excel XML дозволяє зберігати у файлі інформацію про користувача, який його створив, тому при створенні заголовка записую назву організації, інформація про користувача та дату створення файлу.

Public function writeDocumentProperties($organization = null, $user = null) ( fwrite($this->file, " "); if (!is_null($user)) ( fwrite($this->file, " ".$user->description.""); fwrite($this->file, " ".$user->description.""); ) $dt = новий Datetime(); $dt_string = $dt->format("Y-m-d\TH:i:s\Z"); fwrite($this->file, " ".$dt_string.""); fwrite($this->file, " ".$dt_string.""); if (!is_null($organization)) fwrite($this->file, " ".$organization->name.""); fwrite($this->file, " 12.00"); fwrite($this->file, ""); }
Щоправда, у цій функції використовуються сутності системи документообігу - organization (організація) і user (користувач). Замінити ці сутності на, скажімо, строкові значення не проблема.

Найцікавішою в заголовку є інформація про стилі. У форматі Excel XML вони реалізовані дуже зручно, тому просто створюю таблицю зі стилями для рядків, дати/часу та гіперпосилання.

Public function writeStyles() ( fwrite($this->file, ""); //default style fwrite($this->file, ""); //Datetime style fwrite($this->file, ""); fwrite($this->file, ""); fwrite($this->file, ""); //Hyperlink style fwrite($this->file, ""); //Bold fwrite($this->file, ""); fwrite($this->file, ""); }

Підготовчі роботи закінчив, можна переходити до запису даних. Відкриття робочого аркуша – це всього пара тегів, саме в цей момент використовується інформація про кількість колонок та рядів.

Public function openWorksheet() ( fwrite($this->file, " "); fwrite($this->file, strtr("

", array("(col_count)"=>$this->colCount, "(row_count)"=>$this->rowCount))); )
Але запис рядів – процес цікавіший. Клас повинен працювати швидко і обробляти необмежений обсяг даних, адже записів може бути тисяч сто чи навіть мільйон! Хочеш швидкості – працюй із пам'яттю, хочеш необмежений обсяг даних – працюй із диском. Щоб помирити вимоги, реалізував функції resetRow і flushRow.
Перша – очищає поточний ряд, після чого його можна знову наповнювати даними, а друга – записує поточний ряд у відкритий файл на диск. Їх спільне використання дозволяє витримувати баланс між швидкістю та обсягом пам'яті, що використовується.

Public function resetRow() ( $this->currentRow = array(); ) public function flushRow() ( fwrite($this->file, implode("", $this->currentRow)); unset($this-> currentRow); )
Кожна комірка записується функцією відповідної типу даних, саме appendCellxxx, де xxx – тип даних. Допустимі типи даних: Num, String, Real, DateTime, Date, Time, Link. Приклад функції для запису числового значення:

Public function appendCellNum($value) ( ​​$this->currentRow = " ".$value.""; }
Після запису всіх даних залишається закрити робочий лист та робочу книгу.

Застосування

Використання описаного класу ґрунтується на експорті даних за допомогою провайдера CArrayDataProvider. Однак, припускаючи, що обсяг даних, що експортуються, може виявитися дуже великим застосований спеціальний ітератор CDataProviderIterator , який перебирає повертаються дані по 100 записів (можна вказати інше число записів).

Public function exportExcelXML($organization, $user, &$filename) ( $this->_provider = new CArrayDataProvider(/*query*/); Yii::import("ext.AlxdExportExcelXML.AlxdExportExcelXML"); $export = new AlxdExportExcelXML ($filename, count($this->_attributes), $this->_provider->getTotalItemCount() + 1), $export->openWriter(); organization, $user), $export->writeStyles(); $export->openWorksheet(); //title row $export->resetRow(); $code => $format) $export->appendCellString($this->_objectref->getAttributeLabel($code)), $export->closeRow(); $export->flushRow(); = New CDataProviderIterator($this->_provider, 100); foreach ($rows as $row) ( $export->resetRow(); $export->openRow(); foreach ($this->_attributes as $code => $format) ( switch ($format->type) ( case "Num": $export->appendCellNum($row[$code]); /*other types*/ default: $export->appendCellString(""); ) ) $export->closeRow(); $export->flushRow(); ) //close all $export->closeWorksheet(); $export->closeWorkbook(); $export->closeWriter(); //zip файл $export->zip(); $filename = $export->getZipFullFileName(); )
У моєму випадку, кожен ряд записується на диск, що поки є цілком прийнятним, але в майбутньому, можливо, вимагатиме змін. Наприклад, розумно зберігатиме не кожен ряд, а кожен десяток або навіть сотню рядів за раз. Тоді швидкість експорту збільшиться.

Швидкість

До речі, на власному досвіді переконався, наскільки важливо припускати можливість існування великих обсягів даних при пакетній операції, такій як експорт.
Спочатку намагався здійснювати експорт даних використовуючи CActiveDataProvider , що вимагало при експорті 1000 записів близько 240 секунд! Змінивши запит так, щоб використати CArrayDataProvider скоротив час експорту 1000 записів до 0.5 секунд!
Спеціально для цієї публікації заміряли показники експорту.
Експортував 1626 записів з 9 атрибутами, що становлять інформацію про закриті інциденти (див. ITSM).
Вихідний вид експортованої таблиці
Результат
(вибачте, картинка зникає після публікації)
Показники експорту
Об'єм кінцевого файлу: 1 312 269
Об'єм стисненого файлу: 141 762
Витрачений час: приблизно 0.5 сік

Кому цікаво, може отримати вихідний код мого класу безоплатно. Тільки треба не забути виправити функцію writeDocumentProperties, щоб відвернутися від сутностей системи документообігу organization і user, або використовувати свої аналогічні сутності з відповідними властивостями.

Розкажу вам швидкий спосіб створення XML-файлу з таблиці екселю!

XML документи – це дуже сильна та потужна річ. За допомогою одного файлу XML можна наповнити сайт інформацією за лічені секунди! Адже у всіх сучасних двигунах (CMS) є можливість імпорту з хмл файлу. Тож до чого це я.

Як відомо, формати *.xls (*.xlsx у 2007 офісі) – це формати Microsoft Office Excel. 2003 офіс пішов у минуле, вже є 2010, але я працюю на 2007, а отже, розповідати буду, ґрунтуючись на ньому. Погнали!

1. Заходимо на сайт Microsoft і завантажуємо надбудову для роботи з XML. Завантажити Excel 2003 Add-in: XML Tools Add-in . Важить вона небагато, 397 KB.



2. Встановлюємо її на комп'ютер. Складного в установці немає нічого. За промовчанням надбудова встановлюється ось сюди: c:\Office Samples\OfficeExcel2003XMLToolsAddin

3. Тепер відкриваємо Excel, заходимо в меню та вибираємо пункт «Параметри Excel».

4. У вікні, зліва, вибираємо пункт «Надбудови», а внизу вікна, натискаємо на кнопку «Перейти…»

5. Перед вами відкриється нове вікно, в ньому потрібно натиснути кнопку «Огляд…». Як виглядає, показано нижче.

6. Тепер вам необхідно знайти встановлену надбудову XmlTools (див. ). Вибрати її та натиснути ОК!

7. Якщо ви все зробили правильно, ви побачите наступне вікно! Сміливо тиснемо ОК, встановлення завершено!

8. У верхньому меню з'явиться вкладка надбудова, а зліва пункт XML Tools.

З установкою розібралися, а тепер переходимо безпосередньо до конвертування (експорту) xls у xml.

1. Для цього відкриваємо файл із даними, які необхідно перегнати. Потім вибираємо перший пункт у меню «Convert a Range to an XML List…»

2. Перед вами відкриється невелике віконце, що вам потрібно? Там є кнопки радіо, No і Yes, для чого вони? Все просто, якщо у вас є заголовок даних (у моєму випадку він є) вибираємо Yes, а якщо його немає, то відповідно No. Потім натискаємо на маленький прямокутник у верхньому рядку.

3. Виділяємо область даних, які конвертуємо і натискаємо на кнопку праворуч у вікні. Повертається попереднє вікно, в якому тиснемо ОК.

4. Ваша табличка повинна змінитись, можна сказати змінитись, у мене це виглядає ось так:

6. У списку «Тип файлу», що розкривається, вибираємо XML-дані, натискаємо «Зберегти».

Я вітаю вас, ваш файл створений!

Сподіваюся, все було викладено докладно та зрозуміло, проте якщо виникнуть питання, пишіть!