1. Введение Печать отчетов обычно является важным модулем в информационной системе управления, а Excel широко используется при печати отчетов благодаря своим мощным функциям, гибкому применению и высокой универсальности.
Первоначальная информационная система управления была в основном разработана с использованием модели клиент/сервер (C/S). Однако с широким распространением WWW нынешняя информационная система управления постепенно начала переходить от модели C/S к модели браузер/сервер. Изменение режима (B/S). Режим B/S имеет множество функций, с которыми не может сравниться традиционный режим C/S, например, он более открыт, не зависит от программного и аппаратного обеспечения, удобен для расширения приложений, обслуживания и обновления системы и т. д. Теперь он стал предпочтительным режимом вычислений. для корпоративных сетей Первоначально он использовался в режиме C/S. Многие программы в Интернете начали переводиться в режим B/S. Из-за особенностей режима B/S функция печати отчетов Excel, которую относительно легко реализовать в режиме C/S, стала трудной в режиме B/S. В этой статье представлен лучший общий метод, основанный на опыте реальных проектов на примере ASP.
2. Реализация функции. Чтобы проиллюстрировать проблему, приведем пример. Платформа системы: Windows 2000+SQL Server 2000+IIS 5.0+ASP 3. Для составления отчета используется Excel. Необходимо сформировать отчет о статистике продаж книг в соответствии с заданным форматом отчета и иметь возможность его распечатать.
2.1 Создание шаблона отчета Excel Сначала создайте шаблон Excel (то есть форму отчета для печати) в соответствии с заданным форматом отчета. Разумеется, данные, полученные из динамической статистики в базе данных, следует оставить пустыми. Этот отчет сначала рисуется в Excel, затем сохраняется как шаблон и сохраняется здесь, здесь, как testbook1.xlt.
2.2 Формирование и печать отчетов Excel Здесь используется Прикладной компонент Excel, который устанавливается в систему при установке Excel. Наша деятельность также направлена на эту составляющую.
(1) Создайте объект Excel.Application.
set objExcel=CreateObject("Excel.Application")
(2) Откройте шаблон Excel.
objExcel.Workbooks.Open(server.mappath("test")&"book1.xlt") 'Открыть шаблон Excel
objExcel.Sheets(1).select 'Выберите рабочую страницу
setsheetActive=objExcel.ActiveWorkbook.ActiveSheet
(3) Обычные операции добавления Excel, такие какsheetActive.range("g4").value=date() 'Здесь добавляется время, конечно, это также могут быть любые указанные вами данные.
(4) Добавьте записи в базу данных Excel. Предполагается, что уже существует набор данных adoRset, в котором хранятся статистические данные, сгенерированные операциями Sql.
num=7 'Начинаем с седьмой строки Excel
do Until adoRset.EOF 'Цикл, пока данные в наборе данных не будут записаны
strRange="d"&num&":f"&num 'Установить область для заполнения содержимого
sheetActive.range(strRange).font.size=10 'Установить размер шрифта
sheetActive.range(strRange).WrapText=false 'Установить перенос текста
sheetActive.range(strRange).ShrinkToFit=true 'Установите, следует ли автоматически адаптироваться к размеру единицы таблицы
sheetActive.range(strRange).value=array(adoRset("bookid"),adoRset("bookname"),adoRset("author")) 'Заполняем данные в наборе данных в соответствующие единицы измерения
число=число+1
adoRset.MoveNext
петля
(5) Сохранение и обработка файлов временных отчетов Excel. В реальной работе следует отметить, что каждый раз, когда пользователь печатает отчет, вместо жесткого указания имени файла используется временный файл Excel, поскольку если имя файла фиксировано. используется только первый. После успешного создания последующие операции завершатся неудачно, поскольку файл с таким именем уже существует. Поэтому нам нужно каждый раз генерировать временное и неповторяющееся имя файла. Здесь мы можем использовать специальную функцию getTemporaryFile() для его создания, а затем сохранить его в переменной filename и использовать переменную filepos для представления путей к ним. временные файлы.
Кроме того, если эти временные файлы не обрабатываться, они со временем станут файловым мусором. Поэтому, когда каждый пользователь отправляет запрос на печать отчета Excel, все ранее созданные временные файлы печати во временном каталоге должны быть сначала удалены.
Основной код обработки временных файлов выглядит следующим образом:
функция getTemporaryFile(myFileSystem)
dimtempFile, dotPos
tempFile=myFileSystem.getTempName
dotPos=instr(1,tempFile,".")
getTemporaryFile=mid(tempFile,1,dotPos)&"xls"
конечная функция
set myFs=createObject("scripting.FileSystemObject")
filePos=server.mappath("test") & "tmp" 'Временный каталог для хранения временных файлов печати
fileName=getTemporaryFile(myFs) 'Получаем имя временного файла
myFs.DeleteFile filePos&"*.xls" 'Удалить все временные файлы печати, изначально созданные в этом каталоге
установить myFs=ничего
Код сохранения временных файлов Excel:
objExcel.ActiveWorkbook.saveas filePos&имя файла
(6) Выйдите из приложения Excel.
objExcel.quit
установить objExcel=Ничего
(7) Печать отчета Excel. На предыдущих шагах был создан отчет Excel. Для печати на следующем этапе существует две стратегии:
Вариант 1. Предоставьте пользователю ссылку на временный файл отчета Excel, созданного выше. Пользователь может напрямую щелкнуть, чтобы открыть отчет Excel в браузере, и распечатать его с помощью функции печати браузера. Он также может щелкнуть правой кнопкой мыши и сохранить. это локально для печати и т.п. разобраться.
Вариант 2. После создания отчета Excel загрузите его непосредственно в браузер на стороне клиента. Конечно, когда он не полностью загружен, он должен выдать сообщение «Загрузка, пожалуйста, подождите» и другие слова.
2.3 Конфигурация системы и меры предосторожности Хотя приведенный выше код очень прост, при неправильном использовании на практике часто возникают ошибки, поэтому конфигурация системы и меры предосторожности, упомянутые ниже, очень важны.
(1) Обязательно убедитесь в правильности ввода вышеуказанного кода, иначе при возникновении ошибки операции объект Excel останется в памяти, и его будет трудно удалить, что приведет к чрезвычайно медленному следующему вызову и возникновению ошибки Windows. что память не может быть прочитана или записана. Решение на данный момент — выйти из текущего пользователя. Если это не сработает, вы можете только выполнить сброс.
(2) Обязательно установите разрешения для файла asp, отвечающего за функцию печати. Способ следующий: в управлении IIS выберите файл asp, щелкните правой кнопкой мыши и выберите «Свойства»/«Безопасность файлов»/«Анонимный доступ и контроль аутентификации». Здесь IIS по умолчанию использует анонимный доступ, и вам следует выбрать доступ с проверкой подлинности (). вот базовая аутентификация. Можно использовать оба метода и встроенную аутентификацию Windows, но первая недостаточно безопасна), это крайне важно, иначе в приложении возникнут ошибки.
(3) Иногда отчет разделен на несколько страниц, и мы хотим, чтобы каждая страница имела один и тот же заголовок. Мы требуем, чтобы заголовок автоматически печатался на каждой странице, что можно установить в шаблоне Excel. Способ заключается в следующем: выберите меню «Файл»/«Параметры страницы»/«Рабочий лист», а затем введите количество строк в заголовке в поле «Верхняя строка заголовка» (например, если заголовок состоит из строк 1- 3, введите: $1:$3 ).
3. Подводя итог, мы привели пример формирования и печати отчетов EXCEL в режиме B/S, написанных на ASP, который хорошо применяется на практике. Факты также доказали, что хотя код этого примера написать несложно, необходимо уделять внимание конфигурации системы. Это также опыт, полученный после бесчисленных сбоев.