6

OLEDB (C#) を使用して Excel ファイルに書き込んでいます。必要なのは RAW データ形式だけです。

すべてのセル (ヘッダーと値) の前にアポストロフィ (') が付いていることに気付きました

すべてのテキストセルにそれらを追加しないようにする方法はありますか?

ここに私の接続文字列があります:

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  
 filePath + ";Extended Properties='Excel 8.0;HDR=Yes'";

次のように IMEX=1 を使用してみました。

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  
   filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";

しかし、その後、以下のエラーが表示されます:

Microsoft Jet データベース エンジンは、オブジェクト 'C:\Temp\New Folder\MF_2009_04_19_2008-11-182009_DMBHCSAM1118.xls' を見つけることができませんでした。
オブジェクトが存在すること、およびその名前とパス名のつづりが正しいことを確認してください。

最後に、次のように IMEX=0 を使用してみました:

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  
   filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=0\"";

今回は例外は発生しませんでした。

残念ながら、アポストロフィにはまだ問題があります (そのため、私の値は次のようになります: '123、'abc など...)

何か案が?

4

8 に答える 8

7

http://support.microsoft.com/kb/257819には、ADO を介して Excel にテキストを挿入する場合、この動作は避けられない可能性があるという趣旨の声明があります。

ADO を使用して Excel データを編集する場合の注意 : ADO を使用してテキスト データを Excel に挿入すると、テキスト値の前に一重引用符が付きます。これにより、後で新しいデータを操作する際に問題が発生する可能性があります。

データは明示的にテキストですか?数値形式に強制される可能性がありますか? (ストローを握りしめて…)

于 2009-04-22T15:35:31.153 に答える
1

テンプレート ファイルでアポストロフィが付加されている列にダミーの値を挿入します。たとえば、Name 列にこのダミー名のようなものを入力し、age 列に 99 を入力します。テンプレートに新しい行を挿入する代わりに、行を更新するだけです (Update..... where Name = 'dummyname' and age =99)。

これは私のために働いています..

それがあなたにとってもうまくいくことを願っています!

于 2010-06-17T08:24:53.603 に答える
0

レジスターHkey_Local_Machine/Software / Microsoft / Jet / 4.0 / Engines / Excel/TypeGuessRowsを確認してください

これにより、列の形式を決定する前にスキャンする行数が決定されます。デフォルトは8で、0を指定すると、適切なデータ型を選択する前に、ADOがすべての列値をスキャンするように強制されます。

于 2009-04-20T21:34:46.330 に答える
0

Excel にデータを入力するときに、先頭にアポストロフィを付けると、簡単にテキスト フィールドにできることを知っています。データに実際にアポストロフィが含まれていないことを確認しますか? 入力時にデータに追加された場合、唯一のオプションは、インポート時にそれらをキャッチし、カスタム コードで処理することです。

于 2009-04-20T08:03:54.827 に答える
0

接続文字列から IMEX=1 を削除します。

http://www.connectionstrings.com/excel

于 2009-04-19T01:44:32.673 に答える
0

特に Excel シートでフォーマットを設定する必要がある場合は、要件に合わない可能性がありますが、データを CSV ファイルに書き出して .XLS 拡張子で保存することを検討したことはありますか?

もう 1 つは、データをロードする前に、Excel シートのターゲット セルの書式データ型を明示的に「テキスト」に設定することです ([書式] > [Excel 内のセル] を使用)。デフォルトでは、セルは「General」タイプになり、ドライバーはアポストロフィを追加して、データをテキストで表示するように強制する場合があります。

于 2009-04-22T10:32:08.247 に答える
-1

問題を解決するには、次のハックを試してください。指示に従ってテンプレートを変更します

  1. ヘッダー行のすぐ下の最初のデータ行。必要な形式で列をフォーマットします。
  2. 文字にはスペース、数値には 0 などのダミーの値を入力します。
  3. ダミー値を持つ最初のデータ行を非表示にして、テンプレートを保存します

ADO.net を使用して挿入スクリプトを実行します。

-ベンカット・コラ

于 2009-07-22T20:03:15.460 に答える