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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 5月 11日 (金) 16:00:36 JST


小林 (koichik) です.

Date:    Fri, 11 May 2007 12:58:06 +0900
From:    "o.h." <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:7588] Re: readXlsWriteDb でスペースを設定するには

> これなんですが、 Excel に引用符で囲んだ場合の処理を追加すること
> はできないでしょうか.
> そうすれば、文字列長を明示することができそうです.
> 
> 1. Cell の文字列を trim する
> 2. "" だったら null
> 3. 引用符で囲まれたら strip する(エスケープ文字を考慮して)

「エスケープ文字を考慮」とはどういう意味でしょう?
Excel には引用符で囲まれていたら〜 という意識はないはず
なので,例えば引用符を含んだ文字列を指定する場合でも
[" a"b "] と記述することで,[ a"b ] と解釈されれば
十分な気もします.

> ぐらいの処理になれば trimString の判断はいらないような気がします.
> 
> ・[  ] -> trim -> null
> 今まで通りの動作
> 
> ・["  "] -> trim -> 引用符取り除く -> [  ]
> スペースを返す

実装の都合なのですが,最後に返したスペースを全然別の
場所でもう一度 trim するところがあるのです.
上記のような処理をしている場所は Excel から読み込んだ
データを正規化している場所になります.
その後,正規化されたデータを適切な型に変換する
場所があります.その段階でも,文字列データは
trim され,空文字列は null になります.
この部分は DB から読み込んできたデータにも
適用されますし,互換性を損なう可能性が高いので
手を加えることは避けたいです.
そのため,なんらかの指定が必要となります.

なお,空文字列を null として解釈するのは Oracle が
そういう動作をすることに対応したものだと思います.


とりあえず,trimString が false の場合に限り,

1. Cell の文字列を trim する
2. 引用符で囲まれたら strip する
3. "" だったら null

という対処をました.
trimString が false なのに trim するのは
いかがなものか? という気のせいがするものの,
stripQuote のような引数をさらに追加するのは
避けたいのと,前述した後段の変換処理では
trim しないという意味になっているので
このままにしてあります.

以下に SNAPSHOT を置いたのでご確認ください.

http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-framework/2.4.13-rc2-SNAPSHOT/s2-framework-2.4.13-rc2-20070511.065300-4.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-extension/2.4.13-rc2-SNAPSHOT/s2-extension-2.4.13-rc2-20070511.065300-4.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-tiger/2.4.13-rc2-SNAPSHOT/s2-tiger-2.4.13-rc2-20070511.065409-4.jar


現在の XlsReader というか Dataset 機能は Oracle に
強く影響されているというか Oracle を手厚くサポート
している面があるので,他の RDBMS との組み合わせでは
不都合な点もあるかと思います.
要望等あればこの機会にお願いします>ALL
# 互換性もあるので要望に応えられるとは限りませんが.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




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