[Seasar-user:7587] Re: readXlsWriteDb でスペースを設定するには

o.h. [E-MAIL ADDRESS DELETED]
2007年 5月 11日 (金) 11:44:02 JST


長谷川です.

小林様ありがとうございます.

Koichi Kobayashi wrote:
> 
> XlsReader では文字列をトリミングしているため,
> 半角スペースのみのセルは null になってしまうのが
> 現在の仕様です.

> 
> XlsReader をちょっと修正して trim しないよう
> 指定できるようにしてみました.
> 
> readXlsWriteDb(path, false);
> 
> のように第 2 引数に false を指定すると Excel の
> 読み込み時に trim しなくなります.
> 以下に SNAPSHOT を置いたのでご確認ください.
> 
> http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-framework/2.4.13-rc2-SNAPSHOT/s2-framework-2.4.13-rc2-20070510.092454-3.jar
> http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-extension/2.4.13-rc2-SNAPSHOT/s2-extension-2.4.13-rc2-20070510.092454-3.jar
> http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-tiger/2.4.13-rc2-SNAPSHOT/s2-tiger-2.4.13-rc2-20070510.092652-3.jar
>

確認いたしました.ただ

>> Excelがたまに(?)空なのに半角スペースを返すことがあり、
>> それに対応するために、半角スペースをtrimしています。

のせいかも知れませんが、たまに固定長の長さを超える値を設定しようと
して例外となります.

具体的には、長さ2のフィールドに対して 'XX' を Excel に記述していた
場合に 'XX '(3文字)といった値を設定しようとする場合があるようです.

poi のせいなのか Excel フォーマットの関係なのか悩ましいです.
#これに対処するには JDBC 側から実際のメタデータを持ってくる
#しかないのかも

以上から trim 自体はしてもらうことにして、長さが 0 の場合でも null と
しないような動作にしていただくのが一番いいかなと思ったのですが、それ
だと null を設定したい場合に問題になりますね.
#ん〜、どうすればいいんだろう

> 
> ただし,SqlReader の方は対応していないので,
> テーブルを読み込むと trim されてしまいます.
> こちらについても必要であれば対応を検討しますが,
> ちょっと修正範囲が広くなってしまうのと,DataSet
> 機能全体の整合性が保てるか確認が必要なので
> 少々時間がかかるかもしれません.
> 
> 

こちらはに関しては、trim されること自体はあまり問題ありません.
アプリ側としては null じゃないことがわかればいい程度ですので.

以上.
-- 
_/_/
_/_/ mailto: [E-MAIL ADDRESS DELETED]
_/_/ (deprecated: [E-MAIL ADDRESS DELETED])
_/_/



Seasar-user メーリングリストの案内