Salah satu cara menggunakan excel di asp adalah dengan menghubungkan file excel sebagai database, kemudian pengoperasiannya mirip dengan operasi akses database. Namun, metode ini tidak selalu berguna karena Excel bukan database relasional. Untuk format tetap, yang memiliki penggabungan sel yang kompleks, gaya garis batas, pola, hubungan rumus antar sel, dll, menurut saya cara termudah untuk memahaminya adalah dengan membuka pengaturan yang ada di latar belakang. Buat file template, lalu masukkan data di mana dibutuhkan, disimpan, dan dikeluarkan...
Cara yang disebutkan di sini adalah dengan membuat objek excel secara langsung, yang memudahkan untuk melakukan berbagai operasi pada dokumen excel di latar belakang.
Hal lain yang harus diatur di sisi server adalah izin pengoperasian komponen COM. Ketik "DCOMCNFG" pada baris perintah untuk masuk ke antarmuka konfigurasi komponen COM. Pilih Microsoft Excel dan klik tombol Properti. Pilih Kustom untuk ketiga opsi radio. Setelah menyimpan, restart server.
Ini sangat penting. Jika tidak diset, komputer lain tidak akan bisa menyelesaikan pembuatan objek excel.
Namun cara ini juga memiliki kekurangan, dalam pengoperasian saya sebenarnya, jika sudah ada file excel yang terbuka di server, lalu mengeksekusi file yang sama, akan terjadi kesalahan tempat-tempat yang belum diatur.
Selain itu, contoh format kode pada artikel yang dikutip di atas kurang lengkap, banyak jeda baris dan spasi yang formatnya tidak akurat. Jika kode sudah lengkap, salin saja kodenya dan akan berhasil dijalankan, lalu teliti perlahan dan memodifikasinya, dan akan mudah untuk memulai. Sekarang kode yang dimodifikasi adalah sebagai berikut (bagian yang menggambar grafik telah dihapus):
<%
Pada Kesalahan Lanjutkan Berikutnya
strAddr=Server.MapPath(".")
set objExcelApp=CreateObject("Excel.Aplikasi")
objExcelApp.DisplayAlerts=salah
objExcelApp.Application.Visible=salah
objExcelApp.Buku Kerja.Buka(strAddr&"TempletNull.xls")
atur objExcelBook=objExcelApp.ActiveWorkBook
setel objExcelSheets=objExcelBook.Lembar Kerja
set objExcelSheet=objExcelBook.Sheets(1)
objExcelSheet.Range("B2:k2").Value=Array("Minggu1", "Minggu2", "Minggu3", "Minggu4", "Minggu5", "Minggu6", "Minggu7 ")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54" ,"10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10" ,"10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36" ,"80")
objExcelSheet.Sel(3,1).Value="InternetExplorer"
objExcelSheet.Sel(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Lainnya"
objExcelSheet.Range("b2:k5").Pilih
SaveAs(strAddr&"TempExcel.xls")
objExcelApp.Keluar
setel objExcelApp=Tidak ada
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<KEPALA>
<TITLE>Dokumen Baru</TITLE>
<METANAME="Generator"CONTENT=" MicrosoftFrontPage5.0">
<METANAME="Penulis"CONTENT="">
<METANAME="Kata Kunci"CONTENT="">
<METANAME="Deskripsi"CONTENT="">
</KEPALA>
<TUBUH>
</BODI>
</HTML>
Setelah mengoperasikan file excel, Anda perlu mengeluarkan file tersebut. Untuk benar-benar melakukannya, gunakan metode pengalihan ke excel ASP. Kadang-kadang dibuka langsung di IE, dan kadang-kadang jendela "Unduh, Buka, Simpan" muncul jika Anda membutuhkannya untuk membukanya langsung di IE, Cukup gunakan FSO untuk memuat file excel lalu output di IE.
<%
Redupkan Fso,FileExt,strFilePath,Mime
strFilePath = "f:aspxuexi.doc"
Setel Fso=Server.CreateObject("Scripting.FileSystemObject")
FileExt = Fso.GetExtensionName(strFilePath)
Setel fso=Tidak Ada
Pilih Kasus FileExt
Kasus "dokter"
Mime="Aplikasi/msword"
Kasus "xls"
Mime="Aplikasi/msexcel"
Akhir Pilih
Keluaran Panggilan(strFilePath,Mime)
'######################################### # #############
Keluaran Fungsi (strFilePath, Mime)
Response.ContentType = Mime
Konstan adTypeBinary = 1
Setel objStream = Server.CreateObject("ADODB.Stream")
objStream.Buka
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Respon.BinaryWrite objStream.Baca
objStream.Tutup
Setel objStream = Tidak Ada
Fungsi Akhir
'################################################# ## ###
%>
dalam aplikasi praktis. Saat server menjalankan program excel atau ACCESS, klien mengirimkan untuk membuat excel. Objek aplikasi tidak dapat berhasil. Dalam situasi lain, ketika klien mengajukan permintaan, permintaan tersebut tidak berakhir, dan permintaan yang diajukan oleh klien lain tidak dapat berhasil! Mungkin ada solusi lain untuk masalah ini, tapi setidaknya solusi ini tidak stabil.
Kebetulan ada contoh sukses terkait di intranet departemen kami. Ketika saya menggalinya, saya menemukan bahwa mereka membuat Excel di klien. aplikasi. Dengan cara ini, tidak akan ada lagi konflik di sisi server. Untuk klien, karena berjalan di LAN, tingkat keamanan IE klien dapat diatur rendah dan aktif yang relevan (Investigasi), bahkan jika tidak ada pengaturan, IE akan memunculkan jendela peringatan: "Apakah Anda diizinkan untuk menjalankan activeX?"
Kode yang diterapkan mirip dengan log sebelumnya, dan sederhananya sebagai berikut:
<skrip bahasa="vbscript">
setel objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=true
objExcelApp.WorkBooks.Open(" http://XXX.XXX.XXX/XXX.xls ")
'File xls dari alamat jaringan lengkap. File ini telah diformat dan dicetak serta disimpan di server.
atur objExcelBook=objExcelApp.ActiveWorkBook
setel objExcelSheets=objExcelBook.Lembar Kerja
atur objExcelSheet=objExcelBook.Sheet(1)
'====Berikut adalah pernyataan untuk mengisi data di sel excel. Jika data diekstraksi dari database, pernyataan ini dapat dihasilkan oleh program latar belakang.
'Misalnya: respon.tulis "objExcelSheet.Range(""B2"").Value="""&rs("XXX")&""""
'atau objExcelSheet.Range("B2").Value="<%=rs("XXX")%>"
objExcelSheet.Range("B2:k2").Value=Array("Minggu1","Minggu2"," Minggu3", "Minggu4", "Minggu5", "Minggu6", "Minggu7")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54" ,"10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10" ,"10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36" ,"80")
objExcelSheet.Sel(3,1).Value="InternetExplorer"
objExcelSheet.Sel(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Lainnya"
'===
'objExcelApp.Keluar
'set objExcelApp=Tidak ada
</script>
Dalam kode di atas
'objExcelApp.Keluar
'set objExcelApp=Tidak ada
yang dijadikan pembatalan, karena jangan tutup aplikasi excel di sini, jika tidak excel akan ditutup setelah data diisi. Saat ini, file excel yang dibuka di klien perlu dimodifikasi atau dicetak oleh klien. Pada saat yang sama, objek objexcelapp juga memiliki metode untuk pengaturan pencetakan dan memasuki antarmuka pratinjau cetak. Silakan merujuk ke informasi terkait excel yang relevan.