ExcelファイルをADOでMSHFlexGridに表示する時

解決


永遠の初心者  2004-02-20 21:23:19  No: 82195  IP: [192.*.*.*]

いつも参考にさせて頂いております。早速ですが質問させて頂きます。

ExcelファイルをADOでMSHFlexGridに表示しているのですが、1つのセルに
256文字以上入っているとカットされ読み込んでくれません。
256文字以上読み込むような方法はあるのでしょうか?

又は、別の方法でもいいのですがExcelのデータはプログラムのコードなので
' "" ; , 等が使用してある為にCSV等で読み込むにはちょっとやっかいかな
と思うのですが。
何かいい方法があればご教授願います。

編集 削除
Kaz  2004-02-20 21:59:24  No: 82196  IP: [192.*.*.*]

ADO自身はOLEDBプロバイダをActiveX経由でラップするだけのオブジェクトですから、実際の問題はOLEDBプロバイダに何を使っているかによります。

一応わかる範囲だけ・・・

256文字の問題については、Excel自身がハンドリングする文字の最大長が、
1セルあたり256文字のようです。
データとしては保持していても表示・印刷されないなどのトラブルを
経験したことがあります。
Excelファイルをデータソースとして利用する場合の制限事項として
あきらめた方がよろしいかと。
ActiveX経由でExcel.Application自身を立ち上げて操作してやれば
データを取得することはおそらく可能ですが、Excelが入っているマシンでしか
動作しないという点と、速度面が問題になります。

カンマやダブルクォートについては、一度ExcelやAccessでCSV出力してみれば
速攻でわかりますが、これらのアプリではある程度のエスケープ処理が行われています。
・各フィールド(セル)はダブルクォートで囲まれ、ダブルクォート間のカンマはフィールド区切りのカンマとは区別されます。
・ダブルクォート(")のみエスケープ処理されて("")という形になります。

私自身はADO経由でCSV用のDBプロバイダを利用したことがないので
何ともいえませんが、一度実際に試してみてはいかがでしょうか。
その上で問題点を質問された方が話が進みやすいと思います。

編集 削除
永遠の初心者  2004-02-20 22:15:49  No: 82197  IP: [192.*.*.*]

早速の回答ありがとうございます。
Excelの方の制限事項だったのですね、表示しているし、保存・読み込みでも
カットされることがないので、てっきりADOの方と思ってしまいました。
もう一度方法を検討します。ありがとうございました。

編集 削除