Artikel ini menunjukkan bagaimana untuk permintaan dan update
informasi dalam spreadsheet Excel menggunakan ActiveX Data objek (ADO) dari
Active Server Pages (ASP) halaman. Artikel ini juga menjelaskan keterbatasan yang
terkait dengan aplikasi jenis ini.
PENTING: Meskipun
ASP/ADO aplikasi mendukung akses multi-user, Excel spreadsheet tidak.
Oleh karena itu, metode ini query dan memperbarui informasi tidak mendukung
multi-user akses bersamaan.
Untuk mengakses data dalam spreadsheet Excel Anda untuk ini
sampel, menggunakan pengandar ODBC Microsoft Excel. Membuat tabel untuk mengakses
data dengan membuat kisaran bernama pada Excel spreadsheet.
Langkah-langkah untuk membuat contoh aplikasi
- Membuat berkas Excel ADOtest.xls dengan data sebagai berikut
dalam sheet1:
Perkecil tabel iniPerbesar tabel ini
| column1 | column2 | column3 |
|---|
| RR | ini | 15 |
| BB | tes | 20 |
| ee | karya | 25 |
Catatan Jika kolom dalam Excel spreadsheet berisi teks dan
nomor, pengandar Excel ODBC dengan benar tidak menafsirkan tipe data yang
kolom harus. Pastikan bahwa semua sel dalam kolom yang
jenis data yang sama. Tiga kesalahan berikut dapat terjadi jika setiap sel dalam kolom
bukanlah yang sama jenis atau Anda memiliki jenis campuran antara "teks" dan
"umum":- Microsoft OLE penyedia DB untuk kesalahan driver ODBC
'80040e21'
Permintaan properti tidak akan didukung oleh
Pengandar ODBC ini.
- Microsoft OLE penyedia DB untuk kesalahan driver ODBC
'80004005'
Query tidak updateable karena itu
berisi kolom tidak dapat dicari untuk digunakan sebagai kunci penuh harapan.
- Microsoft OLE penyedia DB untuk kesalahan driver ODBC
'80004005'
Query berbasis update gagal. Baris untuk memperbarui
tidak dapat ditemukan.
- Membuat kisaran bernama, myRange1, dalam spreadsheet Anda:
- Menyoroti daerah row(s) dan column(s) di mana data Anda
tinggal.
- Pada Insert menu, arahkan ke nama, lalu klik
Menentukan.
- Masukkan nama myRange1 untuk kisaran bernama
Nama.
- Klik OK.
Kisaran bernama myRange1 berisi data sebagai berikut:
Perkecil tabel iniPerbesar tabel ini
| column1 | column2 | column3 |
|---|
| RR | ini | 15 |
| BB | tes | 20 |
| ee | karya | 25 |
Catatan ADO mengasumsikan bahwa baris pertama dalam Excel permintaan berisi
judul kolom. Oleh karena itu, kisaran bernama harus menyertakan judul kolom.
Ini adalah perilaku yang berbeda dari DAO.
Catatan Judul kolom tidak dapat beberapa. Pengandar Excel tidak dapat
menafsirkan mereka dan, sebaliknya, kembali sebuah sel referensi. Sebagai contoh, sebuah kolom
judul "F1" akan disalahartikan. - Membuat ODBC sistem Data sumber nama (DSN) menunjuk ke
berkas ADOTest.xls.
- Dari Panel kontrol, buka ODBC
Administrator.
- Pada sistem DSN tab, klik Tambah.
- Pilih Microsoft Excel Driver (*.xls) dan klik selesai.
Jika pilihan ini tidak ada, Anda perlu menginstal pengandar Microsoft ODBC
untuk Excel dari Excel setup.
- Memilih ADOExcel untuk nama sumber Data.
- Pastikan versi diatur ke versi yang benar
Excel.
- Klik "Pilih buku kerja...", browse ke ADOTest.xls
file, dan klik OK.
- Klik "pilihan >>" tombol dan jelas "Baca
Hanya"kotak centang.
- Klik OK dan kemudian klik OK sekali lagi.
- Mengatur hak akses pada ADOTest.xls file.
Jika Anda Active Server Page diakses secara anonim, Anda perlu
Pastikan bahwa Account anonim (IUSR_<machinename>) memiliki setidaknya
Baca/tulis (RW) akses ke spreadsheet. Jika Anda ingin menghapus informasi
dari lembar kerja, Anda perlu untuk memberikan izin yang sesuai.<b00></b00></machinename>
Jika Anda adalah otentikasi akses ke halaman Server Anda aktif, Anda perlu
memastikan bahwa semua pengguna mengakses aplikasi Anda memiliki yang sesuai
izin.
Catatan Jika Anda tidak menetapkan izin yang sesuai pada
spreadsheet, Anda mendapatkan pesan kesalahan mirip dengan berikut ini:
Microsoft OLE penyedia DB ODBC driver error '80004005'
[Microsoft][ODBC Excel Driver] Microsoft Jet
mesin database tidak dapat membuka file '(tidak diketahui)'. Itu sudah dibuka
secara eksklusif oleh pengguna lain, atau Anda memerlukan izin untuk melihat data.
- Buat halaman ASP baru dan paste kode berikut:
<!-- Begin ASP Source Code -->
<%@ LANGUAGE="VBSCRIPT" %>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "ADOExcel"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = objConn
objRS.CursorType = 3 'Static cursor.
objRS.LockType = 2 'Pessimistic Lock.
objRS.Source = "Select * from myRange1"
objRS.Open
%>
<br>
<%
Response.Write("Original Data")
'Printing out original spreadsheet headings and values.
'Note that the first recordset does not have a "value" property
'just a "name" property. This will spit out the column headings.
Response.Write("<TABLE><TR>")
For X = 0 To objRS.Fields.Count - 1
Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
Next
Response.Write("</TR>")
objRS.MoveFirst
While Not objRS.EOF
Response.Write("<TR>")
For X = 0 To objRS.Fields.Count - 1
Response.write("<TD>" & objRS.Fields.Item(X).Value)
Next
objRS.MoveNext
Response.Write("</TR>")
Wend
Response.Write("</TABLE>")
'The update is made here
objRS.MoveFirst
objRS.Fields(0).Value = "change"
objRS.Fields(1).Value = "look"
objRS.Fields(2).Value = "30"
objRS.Update
'Printing out spreadsheet headings and values after update.
Response.Write("<br>Data after the update")
Response.Write("<TABLE><TR>")
For X = 0 To objRS.Fields.Count - 1
Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
Next
Response.Write("</TR>")
objRS.MoveFirst
While Not objRS.EOF
Response.Write("<TR>")
For X = 0 To objRS.Fields.Count - 1
Response.write("<TD>" & objRS.Fields.Item(X).Value)
Next
objRS.MoveNext
Response.Write("</TR>")
Wend
Response.Write("</TABLE>")
'ADO Object clean up.
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
<!-- End ASP Source Code -->
- Simpan dan nama Anda Active Server Page dan melihatnya di
browser. Anda akan melihat berikut:
Original Data:
column1 column2 column3
-----------------------------
rr this 30
bb test 20
tt works 25
Data after the update:
column1 column2 column3
-----------------------------
change look 30
bb test 20
tt works 25
Catatan Pembaruan dilakukan pada baris pertama dari kisaran bernama
(setelah judul).
Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
190195
(http://support.microsoft.com/kb/190195/
)
Bagaimana ExtractInformation dari Excel Sheet dengan DAO