Примечание: Эта статья выполнила свою задачу, и в скором времени ее использование будет прекращено. Чтобы избежать появления ошибок "Страница не найдена", мы удаляем известные нам ссылки. Если вы создали ссылки на эту страницу, удалите их, и вместе мы обеспечим согласованность данных в Интернете.
Если необходимо создать файл XML-данных и файл схемы XML из диапазона ячеек на листе, можно использовать версию 1.1 надстройки "Средства XML для Excel 2003" для расширения существующих возможностей XML в Microsoft Excel 2007 и более поздних версиях.
Примечание: Эта надстройка была разработана для Excel 2003. Документация и пользовательский интерфейс ссылаются на списки, которые в версиях приложения позднее Excel 2003 называются таблицами Excel.
Дополнительные сведения о работе с этой надстройкой см. в статье Использование надстройки "Средства XML" версии 1.1 для Excel 2003 .
Действие 2. Преобразование диапазона ячеек в XML-таблицу
Нажмите кнопку ОК .
В выделенной строке модуля кода VBA удалите из строки "50". Другими словами, измените:
XMLDoc в качестве MSXML 2 . DOMDocument50
Кому:
XMLDoc как Msxml2. ДомдокументНажмите клавишу F5 для поиска следующей строки, содержащей текст "XMLDoc As msxml2.DOMDocument50", нажмите кнопку ОК и измените строку, как в предыдущем пункте.
Нажмите F5 еще раз, чтобы найти и изменить другие экземпляры строки.
Если после нажатия клавиши F5 сообщения об ошибке VBA больше не отображается, закройте редактор Visual Basic, чтобы вернуться в книгу. Диапазон ячеек будет преобразован в XML-таблицу.
Примечание: Чтобы отобразить все карты XML в книге, на вкладке Разработчик в группе XML нажмите кнопку Источник для отображения области задач "Источник XML". В нижней части области задач "Источник XML" нажмите кнопку Карты XML .
Если вкладка Разработчик не видна, выполните три первых действия, указанных в следующем разделе, чтобы добавить ее на ленту Excel.
Введите данные, для которых необходимо создать файл XML-данных и файл схемы XML. Данные должны быть представлены в табличном формате в виде столбцов и строк (так называемые обычные данные).
На вкладке Надстройки в группе Команды меню щелкните стрелку возле надписи Средства XML и нажмите кнопку Преобразовать диапазон в список XML .
Введите диапазон ячеек с данными, которые необходимо преобразовать, как абсолютную ссылку в текстовом поле.
В поле Первая строка содержит имена столбцов выберите Нет , если первая строка содержит данные, или Да , если первая строка содержит заголовки столбцов, и нажмите кнопку ОК .
Excel автоматически создаст схему XML, выполнит привязку ячеек к схеме и создаст XML-таблицу.
Важно: Если откроется редактор Visual Basic и отобразится сообщение об ошибке Visual Basic for Applications (VBA), выполните следующие действия.
Действие 3. Экспорт XML-таблицы в файл XML-данных (XML)
Примечание: При создании карт XML и экспорте данных в Excel в XML-файлы существует ограничение на количество строк, которые можно экспортировать. При экспорте в XML-файл из Excel можно сохранить до 65 536 строк. Если файл содержит более 65 536 строк, Excel сможет экспортировать только первые строки (число строк mod 65 537). Например, если лист содержит 70 000 строк, Excel экспортирует 4464 строки (70 000 mod 65 537). Мы рекомендуем последовать одному из следующих советов: 1) используйте формат XLSX; 2) сохраните файл в формате "Таблица XML 2003 (*.xml)" (при этом будут потеряны сопоставления); 3) удалите все строки после 65 536 и затем снова выполните экспорт (при этом сопоставления сохранятся, но будут потеряны строки в конце файла).
Действие 4. Сохранение схемы XML в файле схемы XML (XSD)
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также (на английском языке).
Если вы работаете на локальном компьютере, то документ, созданный в Microsoft Office, по умолчанию сохраняете в двоичном формате, имеющем расширение.doc,.xls,.ppt и т.п., в зависимости от приложения, в котором он создавался. Документ Word можно сохранить в формате HTML (Hypertext Markup Language) и XML (extensible Markup Language - расширяемый язык разметки) и опубликовать в корпоративной сети или в Интернете, выбрав в меню Файл (File) команду Сохранить как Веб-страницу (Save As Web-Page). Поле Тип файла (Save as type) диалогового окна команды сохранить файл в таких форматах как: Веб-страница (Web Page), Веб-страница с фильтром (Web Page, Filtered) и Веб-архив (Web Archive). Формат Веб-страница (Web Page) сохраняет все возможности редактирования документа в формате HTML. Формат Веб-страница с фильтром (Web Page, Filtered) удаляет часть HTML кода и уменьшает размер файла. Формат Веб-архив (Single file Web Page) позволяет переслать содержимое (текст и графику) в одном файле *.mht, *.mhtml.
При использовании любого из вышеназванных форматов в каждом документе сохраняются все параметры форматирования. Пользователи корпоративной сети или в Интернете, на компьютерах которых не установлен Microsoft Office, могут просматривать файлы, сохраненные в форматах HTML или XML, в обозревателе или в других программах просмотра Интернета.
Office обеспечивает высокую точность воспроизведения в окне обозревателя отформатированного документа, который выглядит точно так же, как в окне приложения. Сохраняются параметры диаграмм и рисунков, например, цвета и характеристики линий. Начинающий пользователь, не умеющий программировать, может создать в Office 2003 веб-страницу и опубликовать ее на веб-сервере без потери качества и функциональных возможностей документа. Автоматическое определение кодировки HTML и XML позволяет увидеть правильные символы в любой языковой среде.
Особенности сохранения файлов в формате HTML
Различают статический и динамический форматы HTML. Статический формат используется в тех случаях, когда данные изменяются редко, динамический - когда необходимо отобразить последние на момент публикации данные. Отметим, что уже Access 2002 поддерживал преобразование объектов в два динамических формата HTML: ASP (Active Server Pages ) и IDC/HTX. Файл с расширением asp используется для динамических веб-страниц, с расширением idc содержит запрос в форме инструкции SQL, с расширением htx содержит команды и инструкции по форматированию. Вместо данных в файлы с расширением htx. включены шаблоны, указывающие место вставки данных из запроса в файле с расширением idc.
При сохранении документа в формате HTML Office 2003 создает в заданном каталоге один HTML-файл (например, otchet.htm) и папку с тем же именем, включающую все вспомогательные файлы документа и управляющий основной файл. В отдельный файл помещаются каждый рисунок, Электронная таблица, слайд презентации, набор вспомогательных данных. Все графические изображения в зависимости от содержания автоматически преобразуются в формат.GIF, JPG, JPEG или.PNG. Например, штриховые рисунки сохраняются в формате GIF, а фотографии - в JPEG. При перемещении таких документов необходимо копировать как основной HTML-файл, так и папку со вспомогательными файлами. (Подробнее см. ниже раздел "Типы файлов, используемые для отображения рисунков и графики на веб-странице")
Для облегчения редактирования нерастровой графики с помощью соответствующих программ при преобразовании документа Office 2003 в формат HTML графические изображения сохраняются как во внутреннем формате, так и в формате обозревателя.
В качестве примера приведем порядок преобразования объекта базы данных Access в динамический формат HTML:
- В окне База данных (Database) выделите щелчком мыши требуемый объект и выберите в меню Файл (File) команду Экспорт (Export To).
- В диалоговом окне Экспорт объекта (Export To) в поле Тип файла (Save as type) выделите строку Microsoft IIS 1-2 или Страницы Microsoft ASP (Microsoft Active Server Pages).
- Выберите папку, в которой будет сохранен экспортируемый файл и введите имя файла латинскими буквами в поле Имя файла (File name).
- Нажмите кнопку Экспорт (Export).
- При использовании формата Active Server Pages появится диалоговое окно Настройка вывода файла ASP (Microsoft Active Server Pages Output Options), в котором укажите назовите источник данных ODBC. Он будет использован на веб-сервере для доступа к данным. Введите адрес сервера, на котором будет размещен файл ASP.
Использование ценных в формате XML
Office 2003 поддерживает язык XML (extensible Markup Language - расширяемый язык разметки). Этот язык обеспечивает интуитивно понятные мощные средства коллективной работы и широко используется при обмене информацией в Интернете независимо от применяемой платформы, формата данных. Формат XML разработан на базе HTML как формат универсального представления данных в корпоративных сетях и в Интернете. Он обладает более широкими возможностями, чем HTML. В этом формате можно представить любой документ Office.
XML упрощает выборку данных из документов Office 2003 в другие XML-приложения. Можно разделить содержимое документа и границы его двоичного формата. Содержимое становится доступным для процессов автоматического сбора и анализа данных с последующей корректировкой. Документ XML может состоять из нескольких файлов разных типов, например, файла XML, содержащего данные; файла ASP, содержащего веб-страницу для просмотра документа; файла xsd, содержащего описание структуры данных и т.д. Единый документ можно просмотреть в Internet Explorer версии 5 и выше. Файл, в формате HTML содержит сценарий, который загружает данные из источника в формате XML.
В отличие от универсальных тегов HTML, теги XML могут видоизменяться разработчиками и поэтому должны передаваться тому ПО, которое их использует. Microsoft предполагает использовать XML-формы исключительно на корпоративном рынке. В связи с тем, что некоторые обозреватели не работают с XML, в Word предусмотрена возможность сохранения документа в виде фильтрованной веб-страницы без использования дескрипторов XML. Для использования этой возможности в меню Сервис (Tools) выберите команду Параметры (Options), а затем откройте вкладку Общие (General), нажмите кнопку Параметры веб-документа (Web Options) и перейдите на вкладку Обозреватели (Browsers), установите или снимите флажок Отключение компонентов, не поддерживаемых этим обозревателем. Совокупность XML-тегов, определяющих элементы документа, называется схемой (schema ).
Сохранение и открытие файлов XML в Word 2003 может использоваться для интеграции с основными бизнес-данными предприятия. Инструмент графического связывания в Excel обеспечивает связывание заданной пользователем схемы XML с ячейками электронной таблицы Excel.
При разработке системы электронного документооборота потребовалось реализовать функции для экспорта данных в популярных форматах. В частности, в формате Microsoft Excel. Требования к экспорту были довольно простые – экспортировать данные с минимумом форматирования, т.е. никаких объединенных ячеек, игр со шрифтами и т.п. Форматы экспорта XLSX и Excel XML.
В данном случае расскажу про Excel XML .
Итак, в любой системе оперирующей табличными данными раной или поздно возникает потребность экспорта данных. Цели экспорта разные:
Реализовать в классе набор функций для записи значений ячеек и ряда – основное требование, подразумевающее создание функций для записи значений ячеек указанных типов и возможность записи готового ряда в файл.
Возможность работы с неограниченным объемом данных – разумеется, сам класс экспорта отвечать за записываемый объем не сможет, но он должен предоставить функции для записи данных на диск и освобождения оперативной памяти для следующей порции данных.
Помимо описанных требований, понадобилось добавить сервисные функции:
- Включение автофильтра
- Сжатия файла в zip .
Реализация
Прежде всего, при создании класса осуществляю проверку конечного имени файла и запрашиваю количество колонок и рядов. Файл должен иметь корректное имя, а папка, в которую он будет сохранен, должна существовать. Все как обычно.Формат Excel XML позволяет сохранять в файле информацию о пользователе, который его создал, поэтому, при создании заголовка записываю название организации, информация о пользователе и дате создания файла.
Public function writeDocumentProperties($organization = null, $user = null)
{
fwrite($this->file, "
Правда, именно в этой функции используются сущности системы документооборота - organization (организация) и user (пользователь). Заменить эти сущности на, скажем, строковые значения, не проблема.
Наиболее интересной в заголовке является информация о стилях. В формате Excel XML они реализованы очень удобно, поэтому просто создаю таблицу со стилями для строк, даты/времени и гиперссылки.
Public function writeStyles()
{
fwrite($this->file, "
Подготовительные работы закончил, можно переходить к записи данных. Открытие рабочего листа – это всего пара тэгов, как раз в этот момент используется информация о количестве колонок и рядов.
Public function openWorksheet()
{
fwrite($this->file, " Public function resetRow()
{
$this->currentRow = array();
}
public function flushRow()
{
fwrite($this->file, implode("", $this->currentRow));
unset($this->currentRow);
}
Public function appendCellNum($value)
{
$this->currentRow = " 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();
}
Кому интересно, может получить исходный код моего класса безвозмездно. Только надо не забыть поправить функцию writeDocumentProperties
, чтобы отвязаться от сущностей системы документооборота organization и user, или использовать свои аналогичные сущности с соответствующими свойствами. XML в Excel и обратно, давайте поближе познакомимся с типами этих файлов. Здесь нужно сразу отметить, что документы Excel имеют множество форматов, в то время, как XML - и есть формат файла. Поэтому не стоит путать эти два понятия. Microsoft Excel является мощной программой для вычислений с множеством полезных функций Программа Microsoft Excel является специальной утилитой, предназначенной для создания и редактирования таблиц. С ними вы уже можете делать всё что угодно: создавать базы, диаграммы, формулы и другие типы данных. Это очень мощный инструмент, поэтому все его возможности мы обсуждать не будем. Сегодня наша цель несколько другая, и мы не станем отходить от темы сегодняшней дискуссии. Файлы XML, для более простого понимания, предназначены для хранения, обмена различных данных между утилитами. Особенно часто пользуются этим языком разметки при передаче информации через интернет. И когда вам нужно перенести табличные данные из Экселя на сайт, например, то вам нужно будет преобразовать свой документ, чтобы он правильно отображался. Поэтому давайте не будем оттягивать момент истины и сразу приступим к выполнению операции. Дорогие друзья, на самом деле преобразование файлов является достаточно простым занятием. Однако, у некоторых пользователей могут возникнуть проблемы при переносе данных, поэтому сегодня мы с вами рассмотрим несколько способов для осуществления нашего замысла. Поэтому набираемся терпения и приступаем к действиям: Прежде чем перевести XML в Excel, нужно его для начала открыть. Рассмотрим весь этот непродолжительный процесс ниже. Итак, приступаем: Дорогие читатели, сегодня мы с вами узнали не только как преобразовать файлы XML в Excel и обратно, но и как создать и открыть их при несовместимости версий. Надеемся, что у вас всё получилось и больше не осталось никаких вопросов. Не забываем делиться в комментариях своим мнением и опытом: возможно, вы знаете простой способ конвертации. Расскажите другим пользователям, получилось ли у вас перевести один тип документа. Если сработало, то поделитесь тем, каким способом воспользовались вы. Давно работаю с XML-файлами, но только сейчас задался вопросом: Как штатными средствами создавать и редактировать XML-файлы в MS Excel? Excel удобный и интуитивно понятный инструмент для создания, редактирования и обработки различных данных. Excel изучают в школе и, наверное, не найдется человека, умеющего работать на ПК и не владеющего основами работы в Excel. Поэтому на мой взгляд это наиболее подходящий инструмент, который можно рекомендовать простым пользователям для создания и редактирования файлов данных для различных приложений, в том числе Веб-приложений. У меня дома установлен MS Excel 2013 и на его примере я опишу те нехитрые процедуры, которые необходимо выполнить при создании XML-файла данных в Excel. Думаю, что и в более ранних версиях Excel это будет тоже работать. Чтобы создать XML-файл данных проделаем несколько несложных шагов. Рассмотрим их на примере создания файла данных событий . 1. Для начала необходимо в Excel создать и заполнить таблицу данных в соответствии со структурой данных. Используйте, пожалуйста, для этого пункт меню Вставка/Таблица
. 2. Создадим схему файла XML. Для этого в текстовом редакторе введем следующие строки и и сохраним их в файле. XHTML
xml
version
=
"1.0"
encoding
=
"utf-8"
standalone
=
"yes"
?>
3. Теперь откройте вкладку Разработчик
, нажмите кнопку Источник
и укажите файл-источник XML. При необходимости включите пункт меню Разработчик
в Настройках Excel. 4. Осталось сопоставить элементы схемы и колонки таблицы, перетащив элементы на соответствующие заголовки колонок. 5. И последний шаг: экспортировать данные таблицы в XML-файл с помощью контекстного меню. Встаньте на любую ячейку таблицы, нажмите правую кнопку мыши, выберите XML/Экспорт…
и сохраните XML-файл под нужным именем. Сохраните Excel-файл для последующего редактирования и дополнения. В последующем пункты 1.-4. проделывать будет не нужно! P.S. Зачем же я написал эту банальную заметку? Во-первых, чтобы самому не забыть, а во-вторых, думаю, что эта информация пригодится пользователям , начиная со следующей версии 0.6
;-)", array("{col_count}"=>$this->colCount, "{row_count}"=>$this->rowCount)));
}
Но вот запись рядов – процесс поинтереснее. Класс должен работать быстро и обрабатывать неограниченный объем данных, ведь записей может быть тысяч сто или даже миллион! Хочешь скорости – работай с памятью, хочешь неограниченный объем данных – работай с диском. Чтобы помирить требования, реализовал функции resetRow и flushRow.
Первая – очищает текущий ряд, после чего его снова можно наполнять данными, а вторая – записывает текущий ряд в открытый файл на диск. Их совместное использование позволяет выдерживать баланс между скоростью и объемом используемой памяти.
Каждая ячейка записывается функцией соответствующей типу данных, а именно appendCellxxx, где xxx – тип данных. Допустимые типы данных: Num, String, Real, DateTime, Date, Time, Link. Пример функции для записи числового значения:
После записи всех данных остается закрыть рабочий лист и рабочую книгу.Применение
Использование описанного класса основано на экспорте данных с помощью провайдера CArrayDataProvider . Однако, предполагая, что объем экспортируемых данных может оказаться очень большим применен специальный итератор CDataProviderIterator , который перебирает возвращаемые данные по 100 записей (можно указать иное число записей).
В моем случае, каждый ряд записывается на диск, что, пока, является вполне приемлемым, но в будущем, возможно, потребует изменений. Например, будет разумно сохранять не каждый ряд, а каждый десяток или даже сотню рядов за раз. Тогда скорость экспорта увеличится.Скорость
Кстати, на собственном опыте убедился, как важно предполагать возможность существования больших объемов данных при пакетной операции, такой как экспорт.
Изначально, пытался осуществлять экспорт данных используя CActiveDataProvider , что требовало при экспорте 1000 записей порядка 240 секунд! Изменив запрос так, чтобы использовать CArrayDataProvider сократил время экспорта 1000 записей до 0.5 секунды!
Специально для этой публикации замерил показатели экспорта.
Экспортировал 1626
записей с 9
атрибутами, представляющих собой информацию о закрытых инцидентах (см. ITSM).Исходный вид экспортируемой таблицы
Результат
(извините, картинка исчезает после публикации)Показатели экспорта
Объем конечного файла: 1 312 269
Объем сжатого файла: 141 762
Затраченное время: примерно 0.5
секКак преобразовать Excel в XML
Как перевести XML в Excel
Подведём итоги