Один из способов использования Excel в ASP — связать файл Excel с базой данных, и тогда операция будет аналогична операции доступа к базе данных. Однако этот метод не всегда полезен, поскольку Excel не является реляционной базой данных. Я думаю, что для фиксированного формата, который имеет сложное объединение ячеек, стили линий границ, шаблоны, связи формул между ячейками и т. д., я думаю, что самый простой способ понять это — открыть существующую настройку в фоновом режиме. Создайте файл шаблона, а затем вставьте туда данные. необходимо, сохранить и вывести...
Упомянутый здесь метод заключается в непосредственном создании объекта Excel, что упрощает выполнение различных операций с документом Excel в фоновом режиме.
Еще одна вещь, которую необходимо установить на стороне сервера, — это разрешение на работу COM-компонента. Введите «DCOMCNFG» в командной строке, чтобы войти в интерфейс настройки компонента COM. Выберите Microsoft Excel и нажмите кнопку «Свойства». Выберите «Пользовательский» для всех трех переключателей. Во время редактирования добавьте «Все» ко всем разрешениям. После сохранения перезапустите сервер.
Это очень важно. Если он не установлен, другие компьютеры не смогут завершить создание объектов Excel.
Однако у этого метода также есть недостаток. В моей реальной работе, если на сервере уже есть открытый файл Excel, а затем выполнить тот же файл, произойдет ошибка, я до сих пор не понимаю, почему. места, которые не были установлены.
Кроме того, формат кода в приведенной выше статье не является полным, а многие разрывы строк и пробелы имеют неправильный формат. Если код завершен, просто скопируйте его, и он будет работать успешно, а затем медленно исследуйте его. и измените его, и начать будет легко. Теперь измененный код выглядит следующим образом (часть, рисующая диаграмму, удалена):
<%
При ошибке Возобновить Далее
strAddr=Server.MapPath(".")
set objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=false
objExcelApp.Application.Visible = false
objExcelApp.WorkBooks.Open(strAddr&"TempletNull.xls")
set objExcelBook=objExcelApp.ActiveWorkBook
set objExcelSheets=objExcelBook.Worksheets
set objExcelSheet=objExcelBook.Sheets(1)
objExcelSheet.Range("B2:k2").Value=Array("Неделя1","Неделя2","Неделя3","Неделя4","Неделя5","Неделя6","Неделя7 ")
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.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Другое"
objExcelSheet.Range("b2:k5").Выберите
SaveAs(strAddr&"TempExcel.xls")
objExcelApp.Quit
set objExcelApp=Ничего
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<ГОЛОВКА>
<TITLE>Новый документ</TITLE>
<METANAME="Generator"CONTENT=" MicrosoftFrontPage5.0">
<METANAME="Автор"CONTENT="">
<METANAME="Ключевые слова"CONTENT="">
<METANAME="Описание"CONTENT="">
</HEAD>
<ТЕЛО>
</ТЕЛО>
</HTML>
После работы с файлом Excel вам необходимо вывести файл. Чтобы это сделать, используйте метод перенаправления ASP в Excel. Иногда он открывается непосредственно в IE, а иногда, если вам нужно, появляется окно «Загрузить, открыть, сохранить». чтобы открыть его непосредственно в IE, просто используйте FSO, чтобы загрузить файл Excel, а затем вывести его в IE.
<%
Dim Fso,FileExt,strFilePath,Mime
strFilePath = "f:aspxuexi.doc"
Set Fso=Server.CreateObject("Scripting.FileSystemObject")
FileExt = Fso.GetExtensionName(strFilePath)
Установить fso=Ничего.
Выбрать регистр FileExt.
Дело "док"
Mime="Приложение/msword"
Чехол "xls"
Mime="Приложение/msexcel"
End Select
Call OutPut(strFilePath,Mime)
'##################################### # #############
Функция OutPut(strFilePath,Mime)
Response.ContentType = Мим
Константа adTypeBinary = 1
Установите objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
Установить objStream = Ничего
Конечная функция
'############################################### ###
%>
в практических приложениях. Когда на сервере запущена программа Excel или ACCESS, клиент отправляет команду на создание Excel. Объект приложения не может завершиться успешно. В другой ситуации, когда клиент отправляет запрос, он не завершается, и запрос, отправленный другим клиентом, не может быть выполнен! Могут быть и другие решения этой проблемы, но по крайней мере это нестабильно.
В интранете нашего отдела случайно оказались похожие успешные примеры. Когда я их откопал, то узнал, что они создают Excel на клиенте. приложение. Таким образом, на стороне сервера больше не будет конфликтов. Для клиента, поскольку он работает в локальной сети, уровень безопасности IE клиента может быть установлен на низкий уровень и соответствующий активный (расследование), даже если настройка отсутствует, в IE появится всплывающее окно с предупреждением: «Разрешено ли вам запускать activeX?»
Реализованный код аналогичен предыдущему журналу и выглядит следующим образом:
<script Language="vbscript">
set objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=true
objExcelApp.WorkBooks.Open(" http://XXX.XXX.XXX/XXX.xls ")
«Файл xls с полным сетевым адресом. Этот файл был отформатирован, распечатан и сохранен на сервере.
set objExcelBook=objExcelApp.ActiveWorkBook
set objExcelSheets=objExcelBook.Worksheets
set objExcelSheet=objExcelBook.Sheets(1)
'====Вот инструкции для заполнения данных в ячейках Excel. Если данные извлекаются из базы данных, эти инструкции могут быть созданы фоновой программой. Столбцы в ASP:
'Например: response.write "objExcelSheet.Range(""B2"").Value="""&rs("XXX")&""""
'или objExcelSheet.Range("B2").Value="<%=rs("XXX")%>"
objExcelSheet.Range("B2:k2").Value=Array("Week1","Week2"," Неделя3","Неделя4","Неделя5","Неделя6","Неделя7")
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.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Другое"
'==================
'objExcelApp.Quit
'set objExcelApp=Ничего
</script>
В приведенном выше коде
'objExcelApp.Выход
'set objExcelApp=Ничего не
используется в качестве отмены, поскольку не закрывайте здесь excel.application, иначе Excel закроется после заполнения данных. В это время файл Excel, открытый на клиенте, должен быть изменен или распечатан клиентом. В то же время объект objexcelapp также имеет методы для настройки печати и входа в интерфейс предварительного просмотра. См. соответствующую информацию, связанную с Excel.