Экспорт XML из Excel и сохранение формата даты - PullRequest
1 голос
/ 27 октября 2011

У многих постов StackOverflow и других онлайн-форумов есть вопросы, подобные этим, но ни один из них не решает проблему, с которой я столкнулся.

Я экспортирую файл XML из Excel. Файл Excel содержит даты. Однако в файле XML эти даты отображаются в виде целых чисел - я полагаю, что эта дата считается девятым днем ​​с 1 января 1900 года.

Я использую JavaScript для извлечения данных из файла XML для заполнения таблицы на веб-странице.

Я подозреваю, что решение может прийти в двух разных формах: 1. Способ преобразования в JavaScript целого числа к дате, которую он представляет. 2. Способ заставить файл XML взять отформатированную дату из файла Excel.

Я, очевидно, новичок в XML и JavaScript, так что ваша помощь будет искренне оценена. Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 июня 2012

Это на самом деле довольно просто ... например, если вы создаете свою собственную "схему". Создайте файл XML и скажите, что у вас есть данные Google Analytics, чтобы заполнить ваш полный файл XML, чтобы каждая строка имела следующие три точки данных:

<date>1/1/2012</date>
<page>mywebsite.com</page>
<visits>100000</visits>

Когда вы импортируете этот XML-файл в качестве схемы карты данных для Excel перед экспортом, вы получите целое число, которое вы описали выше. Однако, если вы определите эту схему вместо:

<date>2012-01-01</date>
<page>mywebsite.com</page>
<visits>100000</visits>

Excel покажет дополнительную группировку для элемента даты, когда вы организуете свой XML на листе. Используйте значение (не format ()) в качестве заголовка столбца, и ваш экспорт будет форматированной датой, а не целым числом. Вам не нужно делать никакого специального извлечения .xsd из Excel или доступа !!

В качестве примера того, как построить собственную схему, я нашел это видео для: http://www.youtube.com/watch?v=9bat12gH3Qs

2 голосов
/ 16 ноября 2011

Формат, используемый Excel для экспорта xml, зависит от добавленной XML-схемы.Это может быть явно созданный и добавленный или - как я подозреваю в вашем случае - неявно / автоматически сгенерированный в Excel.

В моем примере у меня естьдва столбца, первый с помощью XML-схемы для форматирования даты и времени, второй - обычный текст и только для представления в Excel (в формате столбца) даты.

Screenshot of an excel-sheet with two columns both containing dates

Когда я экспортирую это как XML, я получаю два, казалось бы, совершенно разных результата:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dataroot>
    <Tabelle11>
        <Title_1>2009-10-12T00:00:00.000</Title_1>
        <Title_2>40098</Title_2>
    </Tabelle11>
    <Tabelle11>
        <Title_1>2000-01-01T00:00:00.000</Title_1>
        <Title_2>36526</Title_2>
    </Tabelle11>
</dataroot>

Когда я проверяю XML-схему (например, с помощью «Debug.Print ActiveWorkbook.XmlMaps (1) .Schemas (1)».XML ") Я вижу разницу (только фрагмент, а не полный файл):

<xsd:element name="Title_1" minOccurs="0" od:jetType="datetime" od:sqlSType="datetime" type="xsd:dateTime">
    <xsd:annotation>
        <xsd:appinfo>
            <od:fieldProperty name="Format" type="10" value="dd.mm.yyyy"/>
        </xsd:appinfo>
    </xsd:annotation>
</xsd:element>
<xsd:element name="Title_2" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
    <xsd:annotation>
        <xsd:appinfo>
            <od:fieldProperty name="Format" type="10" value="@"/>
        </xsd:appinfo>
    </xsd:annotation>
    <xsd:simpleType>
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="255"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:element>

Первый столбец находится в схеме формата datetime, второй - varchar.Опять же, вы можете даже не знать, как Excel обрабатывает ваши XML-данные, поскольку эта схема генерируется автоматически (если я правильно помню, в Excel 2003 было сообщение о том, что схема была сгенерирована для вас)

Теперь, как это сделать - особенно в существующем файле: я бы попытался извлечь XML-схему (см. Выше), сохранить ее как нечто. Xsd, адаптировать схему в соответствии с вашими потребностями и импортироватьэта новая схема.Облом это то, что вам нужно снова установить сопоставление (или попробуйте это: Excel 2007 XML Source Maps - Обновление схем ).Часто я позволяю MS Access сгенерировать мою XML-схему, то есть сгенерировать требуемую таблицу, вставить некоторые значения и представить таблицу в виде XML (отметив опцию добавления схемы).

Надеюсь, эта общая схема даст вамидея о том, как действовать.

С уважением

Андреас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...