2011-10-27 42 views
1

StackOverflowの投稿やその他のオンラインフォーラムでは、これに似た質問がありますが、実際に問題が解決されていません。ExcelからXMLをエクスポートして日付形式を保持する

私はExcelからXMLファイルをエクスポートしています。 Excelファイルには日付が含まれています。ただし、XMLファイルでは、日付は整数として表示されます。日付は1900年1月1日以降のn日目となります。

私はJavaScriptを使用してXMLファイルからデータを抽出し、Webページにテーブルを作成しています。

解決策は2つの異なる形式になる可能性があります。 1.整数をJavaScriptで表す日付に変換する方法。 2. XMLファイルをExcelファイルからフォーマットされた日付にするように強制する方法。

私は明らかにXMLとJavaScriptの初心者ですので、援助を心から歓迎します。ありがとう。

+0

どのようにXMLをエクスポートする:自分のスキーマを構築する方法の例については

は、私はこのビデオは上のスポットいることが判明しましたか? –

+0

開発者タブでエクスポートボタンを使用しています。私はExcel 2007を使っています。 –

+0

Excelファイルを編集する機能を持っていますか、またはエクスポートする前にそのまま使用する必要がある理由はありますか? –

答えて

2

Excelがxml-exportに使用する形式は、追加されたXMLスキーマによって異なります。これはと明示的にが作成または追加されている可能性があります - あなたの疑いのある通り - が暗黙的に/自動的にをExcelで生成しました。

私の例では、2つの列があり、最初はXML-Schemaを使用して日付時刻を設定し、2番目は通常のテキストで、Excel(列形式)の日付のみを日付として表します。

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

私はXMLとしてこれをエクスポートすると私は2つの一見全く異なる結果を得る:

<?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> 

が、私は「のDebug.Print ActiveWorkbook.XmlMapsで例えば(XML-スキーマを確認してください(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> 

最初の列は、フォーマット日時のスキーマに第iはs varchar。このスキーマは自動的に生成されるため、ExcelがXMLデータをどのように処理するかを認識していないかもしれません(Excel 2003で正しく呼び出すと、スキーマが生成されたことを示すメッセージが表示されます)

Nowこれを実現する方法 - 特に既存のファイル:はXML-Schema(上記参照)を抽出し、something.xsdとして保存し、必要に応じてスキーマを適合させ、この新しいスキーマをインポートします。 Bummerはマッピングを再度設定する必要があります(またはこれを試してください:Excel 2007 XML Source Maps - Refreshing Schemas)。多くの場合、私はMS Accessに必要なテーブルを生成し、いくつかの値を挿入し、XMLとして表をexprtする(スキーマを追加するオプションにチェックをつけて)、自分のXMLスキーマを生成させる。

この一般的な概要から、進め方についてのご意見をお待ちしています。

よろしく

アンドレアス

+0

ありがとう、アンドレアス。私はしばらくの間ログインしていなかったので、私はあなたの応答を逃したが、あなたの助けに感謝します。 –

2

あなたが例えば、独自の「スキーマ」を作成している場合、それは...実際にはかなり簡単です。xmlファイルを作成し、あなたは、各行は、以下の3つのデータポイントを持つあなたの完全なxmlファイルを取り込むためにGoogle Analyticsのデータを持っていると言う:

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

あなたがエクスポートする前に、Excelのデータマップスキーマとして、このXMLファイルをインポートします上で説明した整数を解きます。しかし、あなたはその代わりに、このスキーマを定義する場合:あなたはあなたのXMLがシートに整理するとき

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

Excelが日付要素のための追加のグループが表示されます。列見出しとして値(format()ではない)を使用すると、エクスポートは整数ではなく書式設定された日付になります。エクセルやアクセスから特別な.xsd抽出をする必要はありません! http://www.youtube.com/watch?v=9bat12gH3Qs

関連する問題