Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сохранить Excel в формате xml?
 
 автор: coloboc66   (20.12.2010 в 13:49)   письмо автору
 
 

Есть файл, там такая информация:
   
   A                       B                     C
Вася        ул Ленина, д.1     123

где А,В,С - имена ячеек.
Нужно получить вот это:
<customer name="Вася" address="Вася" unn="123" />

Как это сделать?

  Ответить  
 
 автор: sim5   (20.12.2010 в 14:22)   письмо автору
 
   для: coloboc66   (20.12.2010 в 13:49)
 

Нужно создать карту XML, затем сопоставить XML элементы, а уже затем можно сохранять в этом формате. В справке ведь все описано.

  Ответить  
 
 автор: coloboc66   (20.12.2010 в 15:17)   письмо автору
 
   для: sim5   (20.12.2010 в 14:22)
 

Не могу в справке найти конкретных инструкций...

  Ответить  
 
 автор: sim5   (20.12.2010 в 15:26)   письмо автору
 
   для: coloboc66   (20.12.2010 в 15:17)
 

Ну куда уж.... ) Поиск в справке. Можете так и написать "xml сопоставления", думаю точно найдет.

  Ответить  
 
 автор: coloboc66   (20.12.2010 в 15:51)   письмо автору
 
   для: sim5   (20.12.2010 в 15:26)
 

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

  Ответить  
 
 автор: sim5   (20.12.2010 в 17:00)   письмо автору
48.7 Кб
 
   для: coloboc66   (20.12.2010 в 15:51)
 

Вот специально открыл помощь и нашел без проблем -->
Вы справку чего открывали то? )

  Ответить  
 
 автор: coloboc66   (21.12.2010 в 11:23)   письмо автору
 
   для: sim5   (20.12.2010 в 17:00)
 

Да у меня офис 2002 года, там такого нет, как у вас в приложенном файле.
Блин, проблема назрела...:((
Ладно, сейчас может программу конвертера поищу в интернете...
Ай, блин, всё платное!

  Ответить  
 
 автор: sim5   (21.12.2010 в 12:11)   письмо автору
 
   для: coloboc66   (21.12.2010 в 11:23)
 

Ой, что-то я такого даже уже и не припомню - 2003, 2007, 2010 знаю, а 2002....

  Ответить  
 
 автор: coloboc66   (21.12.2010 в 13:53)   письмо автору
 
   для: sim5   (21.12.2010 в 12:11)
 

В справке о программе написано - 2002.

  Ответить  
 
 автор: sim5   (21.12.2010 в 13:58)   письмо автору
 
   для: coloboc66   (21.12.2010 в 13:53)
 

Майкрософт уже завершает работу над MS Office 2012 Apocalypse Release x64, а вы каким-то его устаревшим Блокнотом пользуетесь. )

  Ответить  
 
 автор: coloboc66   (21.12.2010 в 14:39)   письмо автору
 
   для: sim5   (21.12.2010 в 13:58)
 

Такая у меня страна, такой у меня комп.

  Ответить  
 
 автор: coloboc66   (22.12.2010 в 13:09)   письмо автору
 
   для: coloboc66   (21.12.2010 в 14:39)
 

Може кто-нибудь поможет один файл сконвертировать?

  Ответить  
 
 автор: Trianon   (22.12.2010 в 13:51)   письмо автору
 
   для: coloboc66   (22.12.2010 в 13:09)
 

так а может в csv его сперва, а дальше скриптом во что угодно?

  Ответить  
 
 автор: coloboc66   (22.12.2010 в 13:56)   письмо автору
 
   для: Trianon   (22.12.2010 в 13:51)
 

А как это делается? Тоже ж наверное в csv надо конвертировать как-то? А скриптом каким? РНР?

  Ответить  
 
 автор: Ирбис   (22.12.2010 в 15:40)   письмо автору
 
   для: coloboc66   (22.12.2010 в 13:56)
 

Откройте файл MS excel выберите "Файл" -> "Сохранить как", в поле тип файла выберите "CSV". Excel вам создаст CSV-файл. CSV - это текстовый файл, парсить его гораздо легче чем XLS-файл. Вот кстати есть готовый хороший парсер: http://www.softtime.ru/info/csv.php
Сам им пользовался несколько раз - остался доволен.
Ну а потом, взяв за основу распарсенный файл, генерируйте нужный вам xml.

  Ответить  
 
 автор: sim5   (22.12.2010 в 15:50)   письмо автору
 
   для: Ирбис   (22.12.2010 в 15:40)
 

А что его парсить, если есть готовая функция. А чем сложно xml данные получить и чем это хуже?

  Ответить  
 
 автор: Ирбис   (22.12.2010 в 16:10)   письмо автору
 
   для: sim5   (22.12.2010 в 15:50)
 

Ничем не хуже, в данном случаи получить сразу xml с помощью excel без всяких парсеров наверняка окажется самым удобным решением.
Но coloboc66 стал интересоваться вариантом с использованием CSV, вот я и ответил.

  Ответить  
 
 автор: sim5   (22.12.2010 в 16:12)   письмо автору
 
   для: Ирбис   (22.12.2010 в 16:10)
 

Есть готовые функции для такого получения, что вы уперлись в парсер.

  Ответить  
 
 автор: coloboc66   (23.12.2010 в 09:53)   письмо автору
 
   для: sim5   (22.12.2010 в 16:12)
 

Что понимается под готовыми функциями? Прелагаемый вами вариант в Экселе или скрипт РНР?

  Ответить  
 
 автор: sim5   (23.12.2010 в 10:04)   письмо автору
 
   для: coloboc66   (23.12.2010 в 09:53)
 

Для разбора csv-файла применяют функцию fgetcsv. В мануале есть пример.

  Ответить  
 
 автор: coloboc66   (22.12.2010 в 16:51)   письмо автору
 
   для: Ирбис   (22.12.2010 в 15:40)
 

Но тут нужно будет писать скрипт генерация ХМЛ-документа, т.к. парсер по вашей ссылке только переводит файл в двумерный массив, да?

  Ответить  
 
 автор: Ирбис   (22.12.2010 в 17:00)   письмо автору
 
   для: coloboc66   (22.12.2010 в 16:51)
 

Да, парсер просто перевёдет данные из CSV-файла в двумерный массив.
Потребуется дальнейшая работа с массивом.

  Ответить  
 
 автор: sim5   (22.12.2010 в 15:00)   письмо автору
 
   для: coloboc66   (22.12.2010 в 13:09)
 

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Root">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element minOccurs="0" maxOccurs="10" name="customer">
          <xsd:complexType>
            <xsd:all>
              <xsd:element type="xsd:string" name="Name" />
              <xsd:element type="xsd:string" name="Addr" />
              <xsd:element type="xsd:decimal" name="Unn" />
            </xsd:all>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
Вот типа такого должна быть xml карта для вашей таблицы (файл схемы - .xds). Добавляем эту карту как описано в помощи. Затем на панели xml задач сопоставляем ее элементы с элементами таблицы, далее экспорт и:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
 <customer>
  <Name>a</Name>
   <Addr>aaa</Addr>
   <Unn>11</Unn>
 </customer>
 <customer>
  <Name>b</Name>
  <Addr>bbb</Addr>
  <Unn>22</Unn>
 </customer>
 <customer>
  <Name>c</Name>
  <Addr>ccc</Addr>
  <Unn>33</Unn>
 </customer>
 <customer>
  <Name>d</Name>
  <Addr>ddd</Addr>
  <Unn>44</Unn>
 </customer>
 <customer>
  <Name>e</Name>
  <Addr>eee</Addr>
  <Unn>55</Unn>
 </customer>
</Root>

maxOccurs="10" в карте указывает, что xml элементу можно сопоставить максимум 10 строк. Ну в общем и все, для простого экспорта вполне хватит. )

  Ответить  
 
 автор: coloboc66   (22.12.2010 в 16:49)   письмо автору
 
   для: sim5   (22.12.2010 в 15:00)
 

А тут нужно искать и ставить новй Эксель.:( Или даже новый Офис?

  Ответить  
 
 автор: sim5   (22.12.2010 в 16:59)   письмо автору
 
   для: coloboc66   (22.12.2010 в 16:49)
 

А что прежние версии с xml форматом разве не могли работать?

  Ответить  
 
 автор: coloboc66   (22.12.2010 в 17:52)   письмо автору
 
   для: sim5   (22.12.2010 в 16:59)
 

Там справка не показывает такого, как у вас. Предлагает поискать сведения в интернете.

  Ответить  
 
 автор: sim5   (22.12.2010 в 17:58)   письмо автору
 
   для: coloboc66   (22.12.2010 в 17:52)
 

В 2003 точно есть, а найти 2003 не так и сложно.

  Ответить  
 
 автор: coloboc66   (23.12.2010 в 11:59)   письмо автору
 
   для: sim5   (22.12.2010 в 17:58)
 

2003 я поставил. Но вот тут возник вопрос: если у меня в экселевском файле строки с кавычками вида
ЧУП "Альфа"
ООО "Бэта"

то перед конверсией в xml эти кавычки нужно убирать?

  Ответить  
 
 автор: sim5   (23.12.2010 в 12:01)   письмо автору
 
   для: coloboc66   (23.12.2010 в 11:59)
 

Зачем? Ничего не надо убирать, кавычки такой же равноправный симол как и иной другой

  Ответить  
 
 автор: coloboc66   (23.12.2010 в 12:06)   письмо автору
 
   для: sim5   (23.12.2010 в 12:01)
 

То есть такой синтаксис в xml возможен:
<name>ЧУП "Альфа"</name>

?
Опасаюсь, что у меня возникнут проблемы при выводе этого скриптом на экран...

  Ответить  
 
 автор: sim5   (23.12.2010 в 12:08)   письмо автору
 
   для: coloboc66   (23.12.2010 в 12:06)
 

А почему нет? Типы данных только указать правильно в файле схеме, например, вот тут, я скопировал, а не исправил:
<xsd:element type="xsd:decimal" name="Unn" />
а должен быть тип integer (для ваших значений)
При выводе на экран какие могут быть проблемы? Есть htmlspecialchars, если считаете, что у вас среди текста есть "вредоносное". При помещении в базу, тоже какие проблемы? Вы что впервые выводите на экран текст средствами РНР? Или о каком выводе вы ведете речь?

  Ответить  
 
 автор: coloboc66   (28.12.2010 в 11:35)   письмо автору
 
   для: sim5   (22.12.2010 в 15:00)
 

Как понять: "Элементу можно сопоставить максимум 10 строк"? Что здесь понимается под элементом и под строками?

  Ответить  
 
 автор: sim5   (28.12.2010 в 12:55)   письмо автору
 
   для: coloboc66   (28.12.2010 в 11:35)
 

Таблица имеет столбцы и имеет ряды (строки), вот этот параметр и регулирует число максимальных рядов, которым вы можете сопоставить элементы, если в этом есть необходимость, иначе не указывайте. Вроде бы это игнорируется, когда в настройках xml указать автоматическое добавление, проверите сами.

  Ответить  
 
 автор: coloboc66   (28.12.2010 в 14:51)   письмо автору
 
   для: sim5   (28.12.2010 в 12:55)
 

Не понимаю... Всё вроде правильно делаю. Подключил карту, сделал сопоставление. Дальше делаю Данные - ХМЛ - Импорт... - Указываю путь сохранения - и никакой реакции - окно с указанием пути не пропадает и файл не появляется... И никаких сообщений об ошибках.
Я осёл - нужно ж делать экспорт, а не импорт...:))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования