読者です 読者をやめる 読者になる 読者になる

エクセルからxmlに書き出す

vbaで書き出すようにしてしまうことが多かったが、

単純なxml構造であれば、エクセル標準の機能で書き出せるようなので試してみた。

しかし、その方法はわかればシンプルな物の、割と複雑であった・・

(特に1のxmlの内容をどう作るかがよくわからなかった)

書き出したいイメージのxmlを作る。

以下のような、「同じ作りの2つ以上の構造を持たせる」ことで、連続したデータと認識されるようで、

通常、そういった作りにする必要があると思います。

(1つだと、エクセルに関連づけたとき、1つのデータしか書き出すことが出来ない)

1で作ったxmlを、エクセルに関連付けする。

http://www.dougamanual.com/blog/32/261/e1626.html 参照。

(※エクセル2007以降だと、「開発」タブの「ソース」ボタンをクリックで出てくる)

1で作ったxmlを、セルに対応付けする

http://www.dougamanual.com/blog/32/261/e1628.html 参照。

エクスポートする

http://www.dougamanual.com/blog/32/261/e1629.html 参照。

という手順でした。

内容は書き換えていますが、以下が、書き出したxmlのサンプルになります。

1

1

1

1

aaaaa

aaaaa

aaaaa

aaaaa

aaaaa

aaaaa

1

1

2

2

bbbbb

bbbbb

bbbbb

bbbbb

bbbbb

bbbbb

1

1

3

3

ccccc

ccccc

ccccc

ccccc

ccccc

ccccc

以下、上記の流れの中で起きたエラー

※エクセルで、書き出そうとしたとき、

「data 対応付け は、以下のデータが含まれているため、エクスポートできません。

・対応付けられた要素と他の要素のリレーションシップは保持されません」

と出るときがあった。

これは、エクセルで書き出したくない列があり、

その列を飛ばしてxmlに書き出そうとしているのを、連続した列に調整したら出なくなった。

(例・ABCDE列を書き出し、1列、F列を空けてG列を書き出し、とやるとこのエラーが出た。

G列をF列にコピーし書き出すと(要は1行埋めた)このエラーは起こらなかった。)

※また、Flash Builder4.0.1に持って行った際に、

以下のようなエラーも起こったのでメモとして残しておきます。

「データとサービス」→「データとサービスに接続」から、

ローカルのxmlを読む場合、日本語が混じっているxmlだと

org.dom4j.DocumentException: Error on line 1 of document : The element type "testTag" must be terminated by the matching end-tag "". Nested exception: The element type "testTag" must be terminated by the matching end-tag "".

というエラーが出て入れ込めなかった。(ダブルクォーテーションで囲え、と言うことか?)

ただ、仮に数字のみのデータなどに置き換えて、ここを突破してしまえば、

その後ファイルを入れ替えて、日本語込みのデータを読み込むことは出来る。