エクセルからxmlに書き出す
vbaで書き出すようにしてしまうことが多かったが、
単純なxml構造であれば、エクセル標準の機能で書き出せるようなので試してみた。
しかし、その方法はわかればシンプルな物の、割と複雑であった・・
(特に1のxmlの内容をどう作るかがよくわからなかった)
1
書き出したいイメージのxmlを作る。
以下のような、「同じ作りの2つ以上の構造を持たせる」ことで、連続したデータと認識されるようで、
通常、そういった作りにする必要があると思います。
(1つだと、エクセルに関連づけたとき、1つのデータしか書き出すことが出来ない)
2
1で作ったxmlを、エクセルに関連付けする。
http://www.dougamanual.com/blog/32/261/e1626.html 参照。
(※エクセル2007以降だと、「開発」タブの「ソース」ボタンをクリックで出てくる)
3
1で作ったxmlを、セルに対応付けする
http://www.dougamanual.com/blog/32/261/e1628.html 参照。
4
エクスポートする
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に持って行った際に、
以下のようなエラーも起こったのでメモとして残しておきます。
「データとサービス」→「データとサービスに接続」から、
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 "".
というエラーが出て入れ込めなかった。(ダブルクォーテーションで囲え、と言うことか?)
ただ、仮に数字のみのデータなどに置き換えて、ここを突破してしまえば、
その後ファイルを入れ替えて、日本語込みのデータを読み込むことは出来る。