0

(自己回答、タイマーが許せば受け入れます)

XLS/XLSXファイルからデータをインポートするための簡単なライブラリを作成しました。コードはWinFormsアプリで完全に実行されますが、ASP.Netから実行すると例外がスローされることがあります。「時折」の部分はファイルサイズに基づいているようです。私のテストファイルは約16,000行18列で、XLSXファイルとして合計約4MBです。行をドロップすると(約12,000まで)機能する、列をドロップすると(約12まで)機能する、これらの特定の組み合わせ(14,000x14など)が機能します。これは、私がどこかでメモリの制約に遭遇している可能性があると私に信じさせます。以下は、機能していない蒸留コードです。

Dim dsn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""c:\test.xlsx"";Extended Properties=Excel 12.0"
Using Con As New System.Data.OleDb.OleDbConnection(dsn)
    Con.Open()'Exception thrown here
    Con.Close()
End Using

私が得ている例外は次のとおりです。

外部テーブルが予期された形式ではありません

これの検索はすべてDSNを正しくすることについて話します、そしてそれはデスクトップで動作するので私はそれが正しいことを知っています。

私のテストマシンは、 Microsoft Access DatabaseEngine2010再頒布可能パッケージがインストールされたWindows764ビットです。(私のマシンにはOffice 2010 32ビットがインストールされているため、32ビットADEがインストールされています。64ビットをインストールできません。)必要な32ビットアプリケーションを許可するようにIISアプリプールを設定しました。そもそもADEを機能させるためです。私はv4フレームワークを実行していますが、私の知る限り、IIS設定はほぼ標準です。

私が言ったように、コードはWinFormsアプリを介して実行するたびに機能しますが、同じマシン上のASP.netを介して失敗することがあります。何か案は?

4

1 に答える 1

1

modeさて、 DSNにいくつかの属性を追加することで、ようやく自分のマシンで動作するようになりました。

Dim dsn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""c:\test.xlsx"";Extended Properties=Excel 12.0;Mode=Share Deny Write;"
于 2012-04-18T23:21:27.017 に答える