Как перевести документ из excel в xml. Создание файла XML-данных и файла схемы XML из данных листа. Указанный XML-файл не ссылается на схему

Excel– программа из пакета MicrosoftOffice, предназначенная для создания таблиц и работы с ними. Она очень хорошо подходит для оформления отчетов и других документов, для которых важна визуальная структурированность. Сама программа очень удобна для хранения различных цифр, поскольку позволяет не просто записывать их, но и считать суммы по столбцам. В программе также реализована функция сортировки по различным цифровым показателям, что дает возможность увидеть таблицу с нужной Вам информацией под новым углом.

А что делать, если у Вас есть документ в формате XML, и Вы хотите открыть его в MicrosoftExcel? Рассмотрим на примере версии 2007 года, так как версия 2003 года встречается все реже, а версия 2010 вполне себе напоминает версию 2007.

Инструкция

Проще всего пойти путем импорта файла с расширением XMLв новый документ Excel. Для этого открываем MicrosoftExcel. Вверху Вы увидите вкладку «Разработчик» (в панели инструментов, специально для XML). При выборе источника указываем карты XML, добавляем их и после этого находим необходимый файл. Подтверждаем все. С правой стороны появится открытый Вами файл. Теперь, чтобы перенести данные из XMLв таблицу, просто перетащите необходимую Вам информацию в те столбцы, в которые считаете нужным. Измененные Вами ячейки станут синими, чтобы Вы помнили, куда импортировали данные. После этого на одной из синих ячеек кликните правой кнопкой мыши, и в контекстном меню выберите команду «Обновить». Теперь файл импортирован в таблицу, которую Вы можете изменять по своему усмотрению. Обновляя ее в будущем, Вы также будете обновлять и исходный файл с расширением XML.

При разработке системы электронного документооборота потребовалось реализовать функции для экспорта данных в популярных форматах. В частности, в формате 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 = new 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(); $export->openWorkbook(); $export->writeDocumentProperties($organization, $user); $export->writeStyles(); $export->openWorksheet(); //title row $export->resetRow(); $export->openRow(true); foreach ($this->_attributes as $code => $format) $export->appendCellString($this->_objectref->getAttributeLabel($code)); $export->closeRow(); $export->flushRow(); //data rows $rows = 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 file $export->zip(); $filename = $export->getZipFullFileName(); }
В моем случае, каждый ряд записывается на диск, что, пока, является вполне приемлемым, но в будущем, возможно, потребует изменений. Например, будет разумно сохранять не каждый ряд, а каждый десяток или даже сотню рядов за раз. Тогда скорость экспорта увеличится.

Скорость

Кстати, на собственном опыте убедился, как важно предполагать возможность существования больших объемов данных при пакетной операции, такой как экспорт.
Изначально, пытался осуществлять экспорт данных используя

Давно работаю с XML-файлами, но только сейчас задался вопросом: Как штатными средствами создавать и редактировать XML-файлы в MS Excel? Excel удобный и интуитивно понятный инструмент для создания, редактирования и обработки различных данных. Excel изучают в школе и, наверное, не найдется человека, умеющего работать на ПК и не владеющего основами работы в Excel. Поэтому на мой взгляд это наиболее подходящий инструмент, который можно рекомендовать простым пользователям для создания и редактирования файлов данных для различных приложений, в том числе Веб-приложений. У меня дома установлен MS Excel 2013 и на его примере я опишу те нехитрые процедуры, которые необходимо выполнить при создании XML-файла данных в Excel. Думаю, что и в более ранних версиях Excel это будет тоже работать. Чтобы создать XML-файл данных проделаем несколько несложных шагов. Рассмотрим их на примере создания файла данных событий .

1. Для начала необходимо в Excel создать и заполнить таблицу данных в соответствии со структурой данных. Используйте, пожалуйста, для этого пункт меню Вставка/Таблица .

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. При необходимости включите пункт меню Разработчик в Настройках Excel.

4. Осталось сопоставить элементы схемы и колонки таблицы, перетащив элементы на соответствующие заголовки колонок.

5. И последний шаг: экспортировать данные таблицы в XML-файл с помощью контекстного меню. Встаньте на любую ячейку таблицы, нажмите правую кнопку мыши, выберите XML/Экспорт… и сохраните XML-файл под нужным именем.

Сохраните Excel-файл для последующего редактирования и дополнения. В последующем пункты 1.-4. проделывать будет не нужно!

P.S. Зачем же я написал эту банальную заметку? Во-первых, чтобы самому не забыть, а во-вторых, думаю, что эта информация пригодится пользователям , начиная со следующей версии 0.6 ;-)

При работе с блочными данными нередко появляется потребность их конвертации в другие форматы, так сказать, для лучшего взаимодействия. В этой статье будут приведены возможные конвертеры XML в XLS. Другими словами, мы расскажем о способах преобразования одного формата в другой.

Способ 1: с помощью программы Excel

Ввиду того, что Excel безупречно работает с файлами блочного формата, то и расширение XML она может открыть без проблем. Так что можно без зазрения совести сказать, что Excel - это конвертер XML в XLS. Рассмотрим, как все же преобразить формат с его помощью:

  1. Откройте Excel.
  2. На панели нажмите «Файл».
  3. Кликните по опции «Открыть».
  4. В появившемся окне «Проводника» перейдите в директорию с XML-файлом и откройте его.
  1. Снова откройте вкладку «Файл».
  2. Выберите опцию «Сохранить как».
  3. Перейдите в директорию, в которую нужно поместить измененный документ.
  4. В выпадающем списке «Тип файла» определите пункт «Книга Excel».
  5. Сохраните файл, нажав соответствующую кнопку.

После всех вышеописанных манипуляций файл, который изначально имел расширение XML, превратится в книгу Excel, то есть будет иметь расширение XLS.

Способ 2: опция «Импорт данных» в Excel

Excel - конвертер XML в XLS с двумя способами выполнения этой задачи. Поэтому перейдем непосредственно ко второму варианту, который подразумевает использование опции «Импорт данных». Но перед началом надо включить меню «Разработчик», так как именно в нем находится нужный инструмент. Далее нужно сделать следующее:

  1. Откройте программу.
  2. Перейдите в меню «Файл».
  3. Следуйте в раздел «Параметры».
  4. Откройте меню «Настройка ленты».
  5. Поставьте отметку рядом со строкой «Разработчик», которая находится в правой области окна.
  6. Нажмите ОК.

Нужная панель инструментов вынесена в интерфейс программы, а это означает, что мы можем приступать к конвертации:

  1. Перейдите на вкладку «Разработчик».
  2. На панели инструментов выберите пункт «Импорт».
  3. Откроется окно, в котором необходимо выбрать файл формата XML.
  4. Появится окно с предложением создать схему на основе данных. Нажмите кнопку ОК.
  5. После этого появится второе окно, в котором вам нужно определиться с местом расположения импортируемой таблицы. Кликните по ячейке A1 и нажмите ОК.

Файл импортируется в программу Excel. Теперь его можно сохранить как XLS. Для этого по аналогии с предыдущей инструкцией откройте вкладку «Файл», кликните по «Сохранить как», укажите директорию, выберите формат и сохраните.

Способ 3: с помощью интернет-сервиса

Может случиться так, что вам понадобится конвертер XLS в XML для НДС, например. В этом случае Excel не поможет, и потребуется обратиться к другой программе. В данном случае поговорим об онлайн-сервисе Convertio:

  1. В любом браузере перейдите на главную страницу данного сервиса.
  2. Выберите способ загрузки файла. Если он расположен у вас на диске, нажмите кнопку «С компьютера» и выберите его в файловом менеджере. Если в «облаке», то выберите само хранилище, а затем файл.
  3. Документ добавлен и готов к конвертации. Для это из выпадающего списка справа нужно выбрать формат XML.
  4. Нажмите кнопку «Преобразовать».

После этого файл будет подготовлен, и вам останется его только скачать. Convertio - это не только конвертер XLS в XML-файлы. Он способен работать с куда большим количеством форматов. Просто загружайте файл, а потом выбирайте формат, в который хотите его преобразить.

Вот мы и рассмотрели конверторы XML в XLS и наоборот. Как можно отметить, для конвертации XML отлично подходит программа Excel. Однако она не может преобразовать XLS, поэтому для этого требуется прибегать к помощи других программ. В данном случае это онлайн-сервис Convertio.

Расскажу вам быстрый способ создания 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-данные, нажимаем «Сохранить».

Я вас поздравляю, ваш файл создан!

Надеюсь, все было изложено подробно и понятно, однако если возникнут вопросы, пишите!