I'm mencoba untuk mendapatkan data dari file Excel pada tombol klik acara. Saya koneksi string adalah:
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";
Ketika saya klik pada tombol, saya mendapat error berikut:
'Microsoft.ACE.OLEDB.12.0' penyedia tidak terdaftar pada mesin lokal.
Saya tidak memiliki petunjuk bagaimana untuk memperbaiki ini. Saya adalah sistem operasi Windows 7.
Nah, anda perlu menginstalnya. Anda'kembali mencari:
Versi 64-bit dari 'Microsoft Access Database Engine 2010 Redistributable' yang akan memungkinkan anda untuk menggunakan 'Microsoft.ACE.OLEDB.12.0' penyedia tersedia berikut ini:
http://www.microsoft.com/en-us/download/details.aspx?id=13255
Jika anda menggunakan download dari jawaban yang diterima, anda akan perlu untuk membangun untuk x86, seperti yang ditunjukkan oleh @backtestbroker.com.
tergantung pada aplikasi(32/64bit) dengan menggunakan koneksi anda hanya bisa menginstal
Ringkasan:
(Baru-Objek sistem.data.oledb.oledbenumerator).GetElements() | pilih SOURCES_NAME, SOURCES_DESCRIPTION
cerita panjang: string dapat ditemukan dengan http://live.sysinternals.com/strings.exe
misalnya. pada 64bit dengan Sistem 32 bit driver diinstal
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"
bahkan di kantor yang akan datang 2016
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL
anda akan menemukan string
Microsoft.ACE.OLEDB
Microsoft.ACE.Oledb.12.0
Office 2013 datang juga dengan csi.dll
c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll
yang berisi "Microsoft.ACE.OLEDB.15.0"
dan Office 2016
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll
yang memiliki "Microsoft.ACE.OLEDB.16.0" versi
Hal pertama yang perlu anda periksa adalah anda membangun konfigurasi aplikasi anda.
Setelah instalasi selesai, coba jalankan aplikasi anda, jika ini memecahkan masalah besar, jika tidak, lanjutkan ke langkah 2.
Setelah instalasi selesai, coba jalankan aplikasi anda, ini harus mengatasi masalah tersebut.
Saya membaca bahwa MS Access driver termasuk OLEDB Database sopir hanya bekerja di bawah platform x86 dan tidak kompatibel di bawah x64 atau AnyCPU platform. Tapi ini tampaknya tidak benar. Saya divalidasi aplikasi saya berjalan ketika membangun x86, maka saya menginstal Access Database Engine menggunakan pasif bendera.
Setelah 2 langkah-langkah saya berhasil menjalankan aplikasi setelah bangunan di x64 atau AnyCPU membangun konfigurasi. Hal ini muncul untuk memecahkan masalah saya.
Catatan: urutan langkah-langkah yang tampaknya untuk membuat perbedaan, jadi silakan ikuti sesuai.
Aku punya kesalahan ini/pengecualian pada Visual Studio 2010 ketika saya membangun di Manajer Konfigurasi kotak dialog dari "x86" untuk "Setiap CPU". Ini OLEDB database driver yang saya mengerti hanya bekerja di x86 dan 64 bit tidak kompatibel. Mengubah konfigurasi membangun kembali untuk x86 memecahkan masalah bagi saya.
Saya menginstal MS driver dan itu masih tidak't bekerja untuk saya. Kemudian saya menemukan posting blog ini yang memecahkan masalah. Baca sana, yang lain menggunakan dua gambar (terkait dari posting) sebagai TLDR sumamary:
Jika anda're menggunakan 64-bit tetapi masih mengalami masalah setelah menginstal AccessDatabaseEngine, lihat post ini, ia memecahkan masalah bagi saya.
yaitu Anda perlu menginstal ini AccessDatabaseEngine
Untuk semua mereka yang masih terpengaruh oleh hal ini.
I've telah mendapatkan kesalahan...
OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
...seperti yang dijelaskan oleh OP, Shailesh Sahu.
Saya memiliki 64 bit Windows 7.
Masalah saya adalah sekitar PowerShell script, tetapi menggunakan koneksi string, mirip dengan OP's post, jadi mudah-mudahan temuan saya ini dapat diterapkan untuk C#, PowerShell dan bahasa lain yang bergantung pada "Microsoft.ACE.OLEDB" driver.
Saya mengikuti petunjuk pada MS thread forum: http://goo.gl/h73RmI
Saya pertama kali mencoba menginstal 64bit versi, kemudian menginstal 32bit versi AccessDatabaseEngine.exe dari halaman ini http://www.microsoft.com/en-us/download/details.aspx?id=13255
Tapi masih ada sukacita.
Aku kemudian berlari kode di bawah ini di PowerShell (dari SQL Panda's situs http://goo.gl/A3Hu96)
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
...yang memberi saya hasil ini (saya've dihapus sumber data lain untuk singkatnya)...
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
Seperti yang anda lihat, saya memiliki Microsoft.ACE.OLEDB.15.0 (lima belas) bukan Microsoft.ACE.OLEDB.12.0 (dua belas)
Jadi, aku telah diubah my string koneksi ke 15 dan bekerja.
Jadi, cepat PowerShell cuplikan untuk menunjukkan bagaimana untuk lembut-kode versi...
$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME
$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"
telah diubah untuk memilih terbaru ACE versi, jika lebih dari satu
Mudah-mudahan, siapapun yang menemukan ini sekarang dapat memeriksa untuk melihat apa yang OLEDB versi diinstal dan digunakan sesuai nomor versi.
Anda perlu untuk mengubah Platform Solusi dari "Setiap CPU" untuk "x86" atau "x64" berdasarkan bitness dari instalasi office.
Langkah-langkah yang diberikan di bawah ini:
Klik di Pengelola Konfigurasi.
Klik pada Active Platform Drop-down, jika x86 yang sudah ada kemudian pilih itu, yang lain klik New.
Mengkompilasi dan menjalankan aplikasi anda.
Meskipun banyak jawaban telah diberikan, masalah yang saya temui adalah belum disebutkan.
Skenario saya: Aplikasi 64-Bit, Win10-64, Office 2007 32-Bit yang diinstal.
Instalasi 32-Bit Installer AccessDatabaseEngine.exe seperti yang di-download dari MS laporan sukses, tapi TIDAK dipasang, seperti diverifikasi dengan Powershell Script dari salah satu postingan di atas di sini.
Instalasi 64-Bit installer AccessDatabaseEngine_X64.exe melaporkan mengejutkan pesan kesalahan:
Sangat sederhana solusi telah ditemukan di sini pada Autodesk situs. Hanya tambahkan parameter /pasif untuk commandline string, seperti ini:
AccessDatabaseEngine_X64.exe /pasif
Instalasi sukses, OleDb driver bekerja.
File Excel saya pengolahan dengan OleDb adalah xlsx jenis, diproduksi dengan EPPlus 4.5 dan dimodifikasi dengan Excel 2007.
Jika anda debugging proyek web, pastikan IIS Express berjalan baik 32 atau 64 bit tergantung pada pengaturan proyek.
Goto
Alat > Pilihan > proyek-Proyek dan Solusi > Proyek Web
dan dari sana centang (atau hapus centang) yang 'Menggunakan versi 64 bit IIS Express...'
Saya bisa memperbaiki ini dengan mengikuti langkah-langkah dalam artikel ini: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-machine
Titik kunci bagi saya adalah ini:
Ketika debugging dengan IIS,
secara default, Visual Studio menggunakan versi 32-bit. Anda dapat mengubah ini dari dalam Visual Studio dengan pergi ke Tools » Pilihan » proyek-Proyek Dan Solusi » Proyek Web » Umum, dan memilih
"Menggunakan versi 64 bit IIS Express untuk situs web dan proyek-proyek"
Setelah memeriksa pilihan itu, maka pengaturan platform target dari proyek saya kembali ke "Setiap CPU" (saya telah menetapkan untuk x86 di suatu tempat dalam proses pemecahan masalah), saya mampu untuk mengatasi kesalahan.
Pertama verifikasi yang versi dari microsoft.ace.oledb.12.0 terinstal di sistem anda.
Periksa di bawah jalan C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --64 bit diinstal
Periksa di bawah jalan C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --x86 bit diinstal
Jika (x86) diinstal kemudian menggunakan manajer konfigurasi mengubah solusi platform x86, untuk x64 perubahan untuk x64.
Jika tidak tersedia maka menginstal menggunakan link di bawah ini
https://www.microsoft.com/en-us/download/details.aspx?id=23734
syp_dino,
Solusi untuk saya seperti yang anda disarankan untuk "Microsoft.ACE.OLEDB.12.0' penyedia tidak terdaftar pada mesin lokal" kesalahan adalah untuk mengubah Aktif Platform Solusi dari "Setiap CPU" untuk "x86".
Ketika saya melakukan langkah-langkah tersebut, dibangun kembali solusi, meraih EXE dan ditempatkan dalam jaringan, semuanya bekerja dengan lancar pada Windows 7 64 bit mesin.
Saya memiliki masalah yang sama ketika kita membaca file Excel.
Sejarah dari masalah:
Kami baru saja bermigrasi aplikasi kami dari 32-bit ke 64-bit karena kebutuhan memori. Untuk itu kita bermigrasi kami windows 7 dari 32-bit ke 64-bit. Tapi masih kita instal office 32-bit pada mesin-mesin kami.
karena, ini kita punya masalah ini saat mengimpor data Excel ke dalam aplikasi.
Solusi,
Saya download versi 64-bit dari http://www.microsoft.com/en-us/download/details.aspx?id=13255 dan dipasang dengan argumen sebagai,
AccessDatabaseEngine_x64.exe /pasif
Tanpa kode mengubah masalah saya bisa diselesaikan.
Catatan:
Pada OS 64-bit dan 64-bit office, saya fungsi bekerja dengan baik tanpa perbaikan ini. Perbaikan ini hanya diperlukan saat kita aplikasi 64-bit yang berjalan pada OS 64-bit yang memiliki 32-bit office yang diinstal di atasnya.
lakukan ini 2 langkah:
var nama = string.Format("{0}", openFileDialog1.FileName); //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName); var adaptor = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); var ds = new DataSet();
adaptor.Fill(ds, TableNmae);
DataTable data = ds.Tabel[TableNmae]; dg1.Sumber data = data;