2

Visual Studio 2008 を使用して、c# でコンソール アプリケーションを作成しています。

アプリケーションは、Excel ファイル 97-2003 (.XLS) を「読み取り」ます。

私はジェットを使ってファイルを読んでいます:

OleDbConnection oConn = new OleDbConnection();
   oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + file_path  + " ;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";";    

しかし、プログラムを実行すると、「外部テーブルが期待される形式ではありません」というエラーが表示されます。

NPOI ライブラリを使用して Excel ファイルを読み込もうとしましたが、エラーが発生しました:

メッセージ = 「無効なヘッダー署名です。0x0010000000060809 を読み取り、0xE11AB1A1E011CFD0 が必要です」

そのため、何らかの形でファイルが無効になっているようです。

Windows を使用して Office Excel で Excel ファイルを開き、同じ拡張子 .xls で上書きして保存し、その後コンソール アプリケーションを実行すると、アプリケーションはエラーなしで正常に実行されます。

したがって、私がやりたいことは次のとおりです。C#コードを使用して、ファイルを開いて保存し、上書きして、アプリケーションがファイルを正常に読み取れるようにします。

次のようにファイルを開くことができると思います:

File.OpenWrite(file_path);

しかし、どうすればファイルを上書きできますか?

4

1 に答える 1

1

私が見る限り、それを開いて書き直す必要はありません。接続文字列が間違っています。あなたはそれがExcelファイルだと言っているわけではないので、デフォルトでは代わりにAccessデータベースを探しています(そして見つけられません)。

代わりにこれを試してください:

Provider=Microsoft.Jet.OLEDB.4.0; data source="YourFileName.xls"; Extended Properties=Excel 8.0;

他のタイプの接続については、ConnectionStringsを参照してください。

于 2013-06-03T23:57:18.663 に答える