2009-07-14 17 views
1

ご挨拶。ExcelにインポートするXML、特に日付を作成する

パフォーマンスロギングデータを生成する簡単なアプリケーションがあり、Excelにアクセスできるように出力が必要です。

フィールドなどを含むXML文書を作成し、これをExcelで開くことができます。

問題は、どのように日付を日付として扱うためにExcelを強制するのですか?私はさまざまな形式として日付の値を保存しようとしましたが、Excelは常にそれをテキストとして扱います。セルをクリックしてEnterキーを押すと、それは喜んで日付として表示されます。 「テキストを列に」するときも同じです。

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<entries> 
    <entry> 
    <StartDate>14/07/2009 01:02:35</StartDate> 
    <Total>1084</Total> 
    <Connecting>788</Connecting> 
    <Disconnecting>0</Disconnecting> 
    <Queries>98</Queries> 
    </entry> 
    <entry> 
    <StartDate>14/07/2009 01:10:00</StartDate> 
    <Total>1054</Total> 
    <Connecting>228</Connecting> 
    <Disconnecting>1</Disconnecting> 
    <Queries>104</Queries> 
    </entry> 
</entries> 

答えて

1

ワークシート形式を完全に指定できます。少し醜い感じ、プロデューサーはあまりにも多くの目的地を理解する必要があります。

<Worksheet ss:Name="Sheet2"> 
    <Table ss:ExpandedColumnCount="12" ss:ExpandedRowCount="15" x:FullColumns="1" 
    x:FullRows="1" ss:DefaultRowHeight="13.2"> 
    <Column ss:StyleID="s21" ss:AutoFitWidth="0" ss:Width="47.4" ss:Span="11"/> 
    <Row ss:Index="4"> 
    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">2009-04-20T00:00:00.000</Data></Cell> 
+0

ああ、そうです。私は実際のExcel XML文書を作成する予定ではありませんでしたが、少し過剰です。それは必要ですか? – Cylindric

0

あなたの問題があります。あなたの日付の形式はdd/mm/yyyyです。 mm/dd/yyyyに変更すると、Excelはそれを日付として自動的に認識します。

したがって、パフォーマンスデータの記録方法を変更するのが1つの解決策です。

他には、このような式を使用してExcelで新しい列を作成するには、次のようになります。

=VALUE(MID(A2,4,2)&"/"&LEFT(A2,2)&RIGHT(A2,LEN(A2)-5)) 
(where A2 is the cell containing the date text) 

月は一日前にあるように、この式は、物理的に、その後にVALUE関数を適用し、日付を並べ替えそれを数値の日付+時間に変換する。

唯一の「日」の数字(例えば、2009年1月7日1時02分35秒)があることができれば、あなたはこのように、if文でそれをチェックする必要があります:

=VALUE(IF(FIND("/",A2)=2,MID(A2,3,2)&"/"&LEFT(A2,1)&RIGHT(LEN(A2)-4),MID(A2,4,2)&"/"&LEFT(A2,2)&RIGHT(A2,LEN(A2)-5))) 

希望に役立ちます。

もう1つの考え:これがマシン上で使用される場合、Windowsのデフォルトの日付/時刻形式を変更できる可能性があります。私はこれがExcelが日付を解釈する方法に影響を与えると思う。

+0

私はロガーの出力形式を好きなものに設定できます。何もしたくないのは、Excelに数式を追加することです。基本的には、私はそれを開いてExcelで認識できると思っていました。結局のところ数字が認識されます:) 私のロケールは英国に設定されていますので、dd/mm/yyyy形式の作品 - 別の列を追加してMONTH(A2)のようなものを使用すると、 "7 "しかし、フィールドはまだテキストですので、" Short Date "ボタンを押してフォーマットすることはできません。 私はちょうどExcelを放棄し、XSLTを作成します。 – Cylindric

+1

@Cylindric、ああ、そうです。あなたはすでにこの時点で動いているかもしれませんが、あなたがする必要があるのは、適切なXMLスキーマDateTime単純データ型( "YYYY-MM-DDThh:mm:ss" )Excelの推奨フォーマットの1つではありません。私は例を試したところ、うまくいきました。 XMLでXSDファイルを参照しない場合、XMLスキーマが推測され、要素がXMLスキーマの仕様に従って適切なDateTimeとしてフォーマットされている場合、日付が含まれていることが推測されます。参照:http://www.w3schools.com/Schema/schema_dtypes_date.asp – devuxer

1

私はこのルートをしようとするだろう: のようなXML地図データソースを作成します(私たちは "entriesMap.xsd" と呼んでます)新しいExcelワークシートで

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> 
    <xs:element name="entries"> 
     <xs:complexType> 
     <xs:element name="entry"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="StartDate" type="xs:timeDate"/> 
        <xs:element name="Total" type="xs:integer"/> 
        <xs:element name="Connecting" type="xs:string"/> 
        <xs:element name="Disconnecting" type="xs:string"/> 
        <xs:element name="Queries" type="xs:string"/> 
       </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

  1. を"XMLソース" ペインを開きます( - > XML - データ> XMLソース)
  2. XMLソース]ペインで "XMLマップ..." ボタンを選択し、 "追加..." ボタンを選択し
  3. を選択し、XMLマップファイル(変更ファイルタイプ*の.xsd:私たちのはentriesMap.xsdである)を開き
  4. ドラッグマップ要素(開始日、合計、など)、独自のcolsまたはすべてを一度に
  5. 先頭の要素をドラッグします
  6. データの移動 - > XML - >インポート...
  7. 私はXSDファイルの権利を持っているが、私はあなたがこのルートを行けば、それがうまくいくと信じていた場合に必ず

XMLデータファイルを選択していません。

+0

これは適切な方法ですが、XMLではtype = "xs:timeDate"を使用するとISO8601の日付が要求され、残念なことにそれをサポートしていません - http://を参照してくださいoffice.microsoft.com/en-gb/excel-help/xml-schema-definition-xsd-data-type-support-HP001046225.aspx M $! – thedayofcondor

4

Excelの日付を推測するのがトリックです。日付をそのように扱うには、日付の値をUTC(iso8601)としてフォーマットし、 "Z"とその後ろのすべてを削除します(Excelはそれらをサポートしていません)。これに

1999-05-31T13:20:00Z-05:00 

1999-05-31T13:20:00 

ExcelはこれはXSDまたは何を使用せずに私のために働いたMSDN

+2

それは、XMLで標準のdateTime形式をサポートしないMicrosoft Excelを怒らせるものです。 – Andez

1

をチェックアウトするXML型を推論する方法の詳細については:

たとえば、これを回します
<StartDate>2009-07-14T01:02:35</StartDate> 

Excelは実際の地域の設定に従って表示しますtings:

07/14/2009 01:02 
1

また、XMLに接続してExcelを作成することもできます。 XMLデータが含まれているシートで、数式フィールドを使用して、日付値を作成するための式を使用する列を追加します。たとえば、 = DATEVALUE([datetime_txt])+ TIMEVALUE([datetime_txt])です。 Excelは接続を更新した後でも、これをdatetimesとして扱います。

関連する問題