この質問には回答と投稿が12個ありますが、何も私には当てはまりません。'Microsoft.ace.oledb.12.0'はサーバー(IIS7)の.xlsxファイルからすべての行を読み取っていません
私はMVC4アプリケーションを持っており、IIS7に私のサーバーとVisual Studioがインストールされていないもう1台のマシンに展開しました。
バルク入力を行うために/からエクセルにインポート/エクスポートデータを実行しています。
Office 2007の.xlsx形式(ファイルはExcelワークブックとして保存)で1枚のデータに約20000のデータがあります。
次のコードを使用してデータを読み取ると、4000-5000行だけのデータが読み取られます。このコード全体以下
は、私は、コードを実行すると「.XLSのExcel 97-2003ワークブック」からすべての20000行のデータを読んで、私のローカルマシン で細かい作業が、.xlsxのでExcelワークブック」で作業していません"
private void FillDataSet(HttpPostedFileBase file, DataSet ds)
{
using (
var con =
new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" File Path";Extended Properties=Excel 12.0"))
{
con.Open();
var dtSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
var strSheetName = "";
strSheetName = dtSchema.Rows[0]["TABLE_NAME"].ToString();
var cmd = new OleDbCommand();
var da = new OleDbDataAdapter();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM [" + strSheetName + "]";
da = new OleDbDataAdapter(cmd);
da.Fill(ds);
}
}
私は以下の手順と解決策を完了しましたが、それは私にとっては効果がありません。
- Microsoft Access Database Engine 2010再配布可能ファイルのインストール。 2007 Office Systemのドライバ-Installing
:データ接続コンポーネントを
それは私のローカルマシン上で作業し、サーバー上で動作していない、なぜ私たちは混乱しています。 [プロパティ]をクリックします -fromソリューションエクスプローラのプロジェクトを右クリックします。
私が試してみました
何..この問題の任意のアイデアやソリューションを提供してください。 - [ビルド]タブをクリック -Change Platform target from:任意のCPUからx86 |任意のCPUからx64 - ソリューションの再ビルド - アドバンス設定でIISで32ビットアプリケーションを有効/無効に変更しました。
- このリンクからすべての接続文字列も試しました。 https://www.connectionstrings.com/ace-oledb-12-0/
更新のためのTanayありがとうございます。 しかし、それは私の問題を解決していません。 私はこのリンクによって与えられた接続を通過しましたが、いずれの場合も20000レコード全体を読み取ることはありません ちょうど.xlsx形式の4000-5000レコードを読み込んでいます https://www.connectionstrings.com/ace-oledb -12-0/ –
これは正しくありません。 IMEX = 1は、プロバイダが混合された列をテキストとして扱い、すべてをテキストとして扱わないことを意味します。悲しいことに、プロバイダは最初の8行をスキャンして、列のデータ型を決定します。 IMEX = 1がなければ、それは決済されないデータ型に評価されなかったものすべてに対してNullを返します。とにかくテキストに評価されれば問題ではありませんが、数字であると考えると、テキストセルにNullが付きます。この場合、IMEX = 1は、列の最初の8つのセルにデータ型が混在している列のテキストを返します。 –