8

Excel スプレッドシートをプログラムにインポートし、次のコードを用意する必要があります。

string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;IMEX=1;HDR=NO;""", MyExcelFile.xls);

command.CommandText = "SELECT * FROM [Sheet1$]";

(注、上記のコードは実際のコードではありませんが、私が何をしているのかがわかります)

ファイルをインポートしています。唯一の問題は、255 文字を超える Excel シートの列が切り捨てられていることです。

これを回避する方法はありますか?

最初の8行以内の列に長いテキスト行があることを確認すると、メモフィールドとして扱われるため、切り捨てられませんが、うまくいかないようです。

何か案は?

グレアム

4

4 に答える 4

6

これに数回ぶつかった。幸いなことに、MSDN で説明されている修正すべきレジストリ ハックがあります: http://support.microsoft.com/kb/189897

事実上、Excel はデータの最初の 8 行のみを調べて、列の長さを決定します。長さが 255 文字以下の場合、255 がデフォルトです。上記で参照した MSDN の記事では、TypeGuessRows列の長さを決定するためにスキャンする行数を Excel に指示するレジストリ キー " " を追加する方法について説明しています。

于 2009-10-05T10:43:01.223 に答える
1

おそらく問題は簡単に解決できますが、最後の手段として、Excel ファイルを CSV テキスト ファイルとして保存し、JET エンジンの代わりに通常のファイルおよび文字列操作クラスを使用して処理してみてください。

于 2009-10-05T10:37:15.370 に答える
0

必要な正確な答えが見つからなかったので、誰かの役に立てばと思い、ここに残しておきます。

HKEY_LOCAL_MACHINE ► Software ► Wow6432Node ► Microsoft ► Office ► 12.0 ► Access Connectivity Engine ► Engines

TypeGuessRows = 0

ソース

于 2016-04-28T15:00:29.757 に答える
-1

It is usually best to import into an existing table. It is not too difficult to create a suitable table via code.

于 2009-10-05T10:59:04.170 に答える