DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ASP.NETでのEXCELの操作

  • 題名: ASP.NETでのEXCELの操作
  • 著者: いきゅう
  • 日時: 2006/04/27 16:51:42
  • ID: 15527
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[ASP.NET C#]
分類:[ASP.NET]

いつもお世話になっております。

環境 ASP.NET 2.0 C#

EXCELファイルのセルに文字列を更新する処理を行っていますが、
255文字を超える文字列を更新しようとすると
「定されたデータ量がフィールド サイズを超えています。・・・」
といったエラーがでてしまいます。
このエラーを回避する方法はないのでしょうか?
ご教授願いますm(..)m

EXCELファイルに名前の定義を追加し、そのセルを更新するといった処理です。

OleDbConnection conn = new OleDbConnection();

conn.ConnectionString = "Provider=Microsoft.jet.oleDB.4.0;Data source=?;Extended Properties=\"Excel 8.0;HDR=NO;ReadOnly=False;\"";

conn.Open();

OleDbCommand command = new OleDbCommand();
command.Connection = conn;



strQuery = "UPDATE [" + key + "] SET F1 = '" + strVal + "'";

command.CommandText = strQuery;
command.ExecuteNonQuery();
■No15527に返信(いきゅうさんの記事)
> EXCELファイルのセルに文字列を更新する処理を行っていますが、
> 255文字を超える文字列を更新しようとすると
> 「定されたデータ量がフィールド サイズを超えています。・・・」
> といったエラーがでてしまいます。
> このエラーを回避する方法はないのでしょうか?

ないです。

セル単位で発生するのであれば、有名なバイト制限です。
もし、Range で実行しているのであれば、Cell 単位に切り替えてみてください。

.............................................................................................................................
じゃんぬ @ わんくま同盟, Microsoft MVP for Visual Developer - C#
http://jeanne.wankuma.com/
http://blogs.wankuma.com/jeanne/
じゃんぬねっとさん ありがとうございます。

連休中で返事遅くなりましたm(..)m

レイアウト上、名前の定義がRangeなのですが、ためしにCELLで行ったところ、
同一現象が起こりました。

バイト制限のようです。

システムの仕様を見直したいと思います。

解決策はなしというとことで解決とします。

ありがとうございました。
解決済み!
全く違っていたら申し訳ありませんが、こちらはどうでしょうか?

[PRB] DTS: Jet 4.0LEDB からの転送がバッファのオーバーフロー エラーで失敗
http://support.microsoft.com/kb/281517/ja
解決済み!
  • 題名: Re[4]: ASP.NETでのEXCELの操作
  • 著者: いっきゅう
  • 日時: 2006/05/09 16:07:35
  • ID: 15679
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
> [PRB] DTS: Jet 4.0LEDB からの転送がバッファのオーバーフロー エラーで失敗
> http://support.microsoft.com/kb/281517/ja
>

管理人さん ありがとうございます。
アクセスしてみてみましたがよくわかりませんでした^^;

これはテーブル(一覧)をエクスポートなどする時に、
最初の8行でその列の型を判断してしまうため起こってしまうエラーなような気がします。

型というところに目をつけて、
更新したいセルにあらかじめ256文字以上の文字列を入力しておき、
256文字以上の文字列を更新したところ、
エラーが起きずに更新できました。

更新するセルの型の違いでバイト制限されているみたいですね。
(空白はchar(255)にでもなるのかな?)

OleDbで更新時にセルの型を指定できればよいのですが・・・・
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板