巧用asp实现web数据统计报表和打印
Web系统页面打印技术实现与分析
Web系统页面打印技术实现与分析1 Web页面打印概述应用WEB化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于WEB 的应用,客户端的规则很简单,容易学习,容易维护,容易发布。
在WEB系统中,打印的确是个烦人的问题。
要么自己开发打印控件,如果项目时间紧,肯定来不及。
这对程序员来说,因为浏览器的局限性,却要面对很多挑战。
怎么样来进行基于WEB的套打,就是这么一个令多数程序员头痛不已的问题。
基于WEB的套打,难度在于要将浏览器中呈现的HTML,精确地打印到票据中,而且能够实现对分页位置的控制。
本文将介绍常用的Web打印与套打方案,同时提供一些免费的打印控件,供大家学习参考。
2 常用Web页面打印方案2.1 浏览器的打印功能这种方案的优势是不需要对浏览器作任何扩充,是最简单的办法,但问题也最多,如:1. 不能精确分页。
浏览器一般是根据用户设置的页面大小,web页面的内容多少,来自行决定分页位置,程序员很难控制。
会有页脚页眉干扰。
2. 不能准确对齐边边距及打印文字。
3. 不能解决连续打印。
比如,不是仅打印一张票据,而是连续一次打印若干个票据。
2.2 使用PDF文件用这种方式,就是从服务器端下载一个pdf文件流,在IE中用adobe插件打开,然后用adobe 的打印菜单进行打印,虽然这种方案,也能实现精确套打,但需要下载adobe插件。
这是国外报表工具经常推荐的一种打印方法,但在pdf不那么普及的中国,这种方案不是最好选择。
2.3 采用Applet方式采用Applet方式,分页或精确打印,都可以做到完美,但缺点也很明显,表现在:1. 安装Applet成本巨大。
需要下载十几M的文件。
Applet本身可能并不大,但运行Applet所需的jre一般至少10几M(jre1.4.2 ,15.45M)。
用户需要极大的耐心,来进行打印。
2. 打印报表时,需要重新向服务器检索数据,效率低。
因为Applet方案,一般采用html方式呈现数据,打印时Applet必须向服务器检索同一张票据的数据,看上去,是打印了当前页的票据,实际上,Applet根本不会用当前html页的数据来打印,而是向服务器下载数据到Applet中来打印。
Web系统页面打印技术实现与分析V1.0
Web系统页面打印技术实现与分析V1.0目录1 WEB页面打印概述 (1)2 常用WEB页面打印方案 (2)2.1浏览器的打印功能 (2)2.2使用PDF文件 (2)2.3采用A PPLET方式 (3)2.4IEW EB B ROWSER+J A V ASCRIPT (3)2.5利用WORD或EXCEL来实现 (3)2.6使用第三方控件 (3)3 WEB打印控件介绍 (4)3.1S CRIPT X (4)3.2DLP RINTER (4)3.3墙外打印控件 (4)3.4L ODOP (5)3.5W EB P RINT(商业) (5)4 WEB页面打印应用实例 (6)4.1J A V ASCRIPT自带函数 (6)4.2IEW EB B ROWSER组件 (6)4.3通过E XCEL实现页面打印 (7)4.4使用S CRIPT X控件 (8)5 WEB页面打印技巧 (10)5.1隐藏打印的W EB元素 (10)5.2实现简单的页面局部打印 (12)5.2.1 Javascript实现 (12)5.2.2 WebBrowser实现 (12)5.3禁止出现页眉页脚 (14)1Web页面打印概述应用WEB化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于WEB的应用,客户端的规则很简单,容易学习,容易维护,容易发布。
在WEB系统中,打印的确是个烦人的问题。
要么自己开发打印控件,如果项目时间紧,肯定来不及。
这对程序员来说,因为浏览器的局限性,却要面对很多挑战。
怎么样来进行基于WEB的套打,就是这么一个令多数程序员头痛不已的问题。
基于WEB的套打,难度在于要将浏览器中呈现的HTML,精确地打印到票据中,而且能够实现对分页位置的控制。
本文将介绍常用的Web打印与套打方案,同时提供一些免费的打印控件,供大家学习参考。
2常用Web页面打印方案2.1浏览器的打印功能这种方案的优势是不需要对浏览器作任何扩充,是最简单的办法,但问题也最多,如:1. 不能精确分页。
基于ASP .NET的自定义SQL报表系统设计与实现
基于的自定义SQL报表系统设计与实现摘要:利用编程技术,通过对自定义SQL语句查询结果的分析,结合的特点,将SQL语句涉及的列保存起来,并根据需要设置对应的格式,在展现时生成对应的控件呈现在用户面前,用户更改控件值,发起查询请求后,系统将根据控件类型自动生成带条件的SQL语句,最后把执行结果呈现在表格控件中,实现了自定义SQL报表的管理与展现。
关键词:;;SQL;自定义报表0 引言在企业日常数据维护中,经常会遇到从各个系统提取数据的情况。
一般来说,数据管理员会登录PL/SQL Developer、SQL Server Management Studio等软件,来连接数据库,编写具体的查询SQL语句,执行SQL语句并导出为Excel文件,然后交给需求者。
在每天的工作中,需要几次甚至几十次地重复上述操作,工作效率非常低。
为解决此问题,本文提出了一个可行的解决方案,开发了基于数据源的自定义SQL查询系统。
1 关键技术1.1 数据库访问技术[1]是.Net Framework提供的针对数据库访问的通用解决方案,提升了底层数据库访问的扩展性、安全性,并优化了执行效率。
它通过网络对数据库进行访问。
这种数据库访问机制能够以连接池的形式管理数据库连接,合理分配数据访问请求,同时能够提供数据缓存,改进数据共享机制,所以它的出现使得数据库编程更加容易。
包含两个主要成员:DataSet和Data Providers[2],Data Set主要负责对数据的操作,而Data Providers则主要负责数据访问。
DataSet是数据在内存中的表示形式。
它包括一个或者多个DataTable对象,DataTable对象由数据行(Data Row)、数据列(Data Column)、主键、外键、约束以及有关Data Table对象组成。
DataSet 能够被所有的Data Providers调用。
Data Providers是数据库和应用程序之前的纽带,接收到命令后,从数据源读取数据返回结果,向数据源提交数据,在数据源上执行一系列的命令。
利用VBA实现自动打印报表
利用VBA实现自动打印报表自动化报表打印是许多企业和机构所面临的一个重要任务。
为了提高工作效率和准确性,利用VBA(Visual Basic for Applications)编程语言可以实现报表的自动打印和批量处理。
本文将介绍如何使用VBA编写自动打印报表的程序。
一、编写VBA代码前的准备工作在开始编写VBA代码之前,我们需要确保计算机已安装Microsoft Office 套件,并打开需要进行自动打印报表的Excel文件。
在Excel文件中,我们需要确保报表数据已准备好,并已按照需要的样式进行整理。
二、进入VBA编辑器在Excel文件中,按下“Alt”和“F11”键,即可打开VBA编辑器界面。
在左侧的项目窗格中,双击需要编写代码的工作表(Sheet)或工作簿(Workbook)。
三、编写VBA代码1. 设置打印区域:在VBA编辑器中的代码窗格中,输入以下代码:```vbaSub SetPrintArea()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1") '替换为需要打印的工作表名With ws.PageSetup.PrintArea = .UsedRange.AddressEnd WithEnd Sub```上述代码中,“Sheet1”是需要打印的工作表名称,你可以根据实际情况进行替换。
2. 自动打印报表:在VBA编辑器中的代码窗格中,输入以下代码:```vbaSub AutoPrint()Dim ws As WorksheetDim LastRow As LongDim i As LongSet ws = ThisWorkbook.Worksheets("Sheet1") '替换为需要打印的工作表名LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).RowWith wsFor i = 1 To LastRowIf .Cells(i, 1).Value <> "" Then.PrintOut '直接打印当前工作表End IfNext iEnd WithEnd Sub```上述代码中,“Sheet1”是需要打印的工作表名称,请根据实际情况进行替换。
Web报表工具FineReport自定义打印方法汇总
Web报表工具FineReport自定义打印方法汇总简述:在使用报表软件进行打印的时候,对于打印的需求总是灵活多变的,文章主要介绍了Web报表工具FineReport自定义打印的几种方法。
JS调用FineReport打印方法•问题描述•调用方法•报表内置打印方法•示例▪Flash打印为例效果▪实现代码1. 问题描述报表集成到项目里面,不需要预览模板就能够直接打印报表;或者自定义Web页面里面,使用自定义打印按钮直接调用FineReport 内部打印方法。
2. 调用方法先引入FineReport内部的js文件,然后调用js文件中定义好的内部打印方法,如Flash打印方式调用方法如下:1. <script type="text/javascript" src="/WebReport/ReportS erver?op=emb&resource=finereport.js"></script> //调用报表内部finereport.js文件2. <link rel="stylesheet" type="text/css" href="/WebRepor t/ReportServer?op=emb&resource=finereport.css" /> //定义弹出打印对话框的样式3. <script type="text/javascript">4. FR.doURLFlashPrint(url); //url为打印的报表路径5. </script>3. 报表内置打印方法FineReport提供了三种客户端打印方式,各自的调用方法如下(三种方法传入的参数是一致的):具体三种打印效果的介绍可参考文档各打印方式的对比介绍。
在ASP中怎么把页面中的数据导出到EXCEL
使用asp怎样将数据导出到excel文件 Web注意:两个函数中的“data“是网页中要导出的table的 id<input type="hidden" name="out_word" onclick="vbscript:buildDoc" value="导出到word" class="notPrint"><input type="hidden" name="out_excel" onclick="AutomateExcel();" value="导出到excel" class="notPrint">导出到Excel代码<SCRIPT LANGUAGE="JavaScript"><!--function AutomateExcel(){// Start Excel and get Application object.var oXL = new ActiveXObject("Excel.Application");// Get a new workbook.var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;var table = document.all.data;var hang = table.rows.length;var lie = table.rows(0).cells.length;// Add table headers going cell by cell.for (i=0;i<hang;i++){for (j=0;j<lie;j++){oSheet.Cells(i+1,j+1).Value = table.rows(i).cells(j).innerText;}}oXL.Visible = true;erControl = true;}//--></SCRIPT>导出到Word代码<script language="vbscript">Sub buildDocset table = document.all.datarow = table.rows.lengthcolumn = table.rows(1).cells.lengthSet objWordDoc = CreateObject("Word.Document")'objWordDoc.Application.Documents.Add theTemplate, FalseobjWordDoc.Application.Visible=TrueDim theArray(20,10000)for i=0 to row-1for j=0 to column-1theArray(j+1,i+1) = table.rows(i).cells(j).innerTEXTnextnextobjWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("综合查询结果集") //显示表格标题objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("") Set rngPara = objWordDoc.Application.ActiveDocument.Paragraphs(1).Range With rngPara.Bold = True //将标题设为粗体.ParagraphFormat.Alignment = 1 //将标题居中 = "隶书" //设定标题字体.Font.Size = 18 //设定标题字体大小End WithSet rngCurrent = objWordDoc.Application.ActiveDocument.Paragraphs(3).RangeSet tabCurrent = ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,row,column)for i = 1 to columnobjWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.InsertAfter theArray(i,1)objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.Paragraph Format.alignment=1nextFor i =1 to columnFor j = 2 to rowobjWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.InsertAfter theArray(i,j)objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.Paragraph Format.alignment=1NextNextEnd Sub</SCRIPT>在ASP中怎么把页面中的数据导出到EXCEL直接读SQL库,我想也可以用来解决你的问题,(同理:页面上显示的内容当然也是读库的,除非你是静态的那算了)<!--#include file="../opendb.asp"--><!--写链接的事不用我弄了吧?--><title>生成报表</title><%dim conn,strconnset conn=server.CreateObject("adodb.connection")conn.Open ConnStrdim rs,sql,filename,fs,myfile,xSet fs = server.CreateObject("scripting.filesystemobject")filepath=Request.ServerVariables("APPL_PHYSICAL_PATH")filename = filepath&"temp_xls\"&year(now)&month(now)&day(now)&".xls"if fs.FileExists(filename) thenfs.DeleteFile(filename)end ifset myfile = fs.CreateTextFile(filename,true)Set rs = Server.CreateObject("ADODB.Recordset")sql = "select * from jdxx"rs.Open sql,conn,1,1if rs.EOF and rs.BOF thenelsedim strLine,responsestrstrLine=""For each x in rs.fieldsstrLine = strLine & & chr(9)Nextmyfile.writeline strLineDo while Not rs.EOFstrLine=""for each x in rs.FieldsstrLine = strLine & x.value & chr(9)nextmyfile.writeline strLiners.MoveNextloopend ifrs.Closeset rs = nothingremotefile="http://xxx.xxx.x.xxx/temp_xls/"&year(now)&month(now)&day(now)&".xls" response.write "<font size=2 color=blue>报表巳生成,<a href="&remotefile&">请点击这里下载该报表!</a></font>"%>在ASP中怎么把页面中的数据导出到EXCEL<%@ LANGUAGE="VBSCRIPT" CODEPAGE="950"%><%'關鍵所在Response.ContentType = "application/vnd.ms-excel"Set conn=Server.CreateObject("ADODB.Connection")Set rs=Server.CreateObject("ADODB.Recordset")strconn = "Provider = SQLOLEDB; Data Source = 192.168.0.2; Uid=gt_bbs;Pwd=gt_bbs;DataBase=gt_bbs"conn.open strconnSQL="Select top 100 id,uid,uer,bm,zw,zb,gxrq,ip,be From Gt_user order by id desc"rs.Open SQL,conn,3,1if rs.eof and rs.bof thenResponse.Write"<div align=center><br>沒有任何記錄</div>"else%><TABLE cellSpacing=0 cellPadding=0 width="100%" border=1><TR><TD width=12% height="25" class=borderon> 代 </TD> <TD width="11%" class=borderon> 名</TD><TD width="11%" class=borderon> 部門</TD><TD width="14%" class=borderon> </TD><TD width="6%" class=borderon> 別</TD><TD width="16%" class=borderon> 登</TD><TD width="16%" class=borderon> 登 IP</TD> </TR></TABLE><TABLE width="100%" border=1 cellPadding=0 cellSpacing=0><%do while (Not RS.Eof) and (I<RS.PageSize)%><TR bgcolor=<%=bg2%>><TD class=all width=12% height=20 > <%=rs(1)%></TD> <TD width="11%" class=all> <%=rs(2)%></TD><TD width="11%" class=all> <%=rs(3)%></TD><TD width="14%" class=all> <%=rs(4)%></TD><TD width="6%" class=all> <%=rs(5)%></TD><TD width="16%" class=all> <%=rs(6)%></TD><TD width="16%" class=all> <%=rs(7)%></TD></TR><%Rs.MoveNextLoopend IFSet Conn = NothingSet Rs = Nothing%></TABLE>。
ASP.NET实现打印的方法小结
实现打印的⽅法⼩结⽹络打印概述◆B/S结构导致了Web应⽤程序中打印的特殊性。
◆程序运⾏在浏览器中,打印机在本地,⽽⽂件却可能在服务器上,导致了打印控制不是很灵活。
◆格式如何控制和定制等,是我们开发中可能会⾯对的问题。
打印⽂档的⽣成1、客户端脚本⽅式⼀般情况下,主要使⽤JS可以分析源页⾯的内容,将欲打印的页⾯元素提取出来,实现打印。
通过分析源⽂档的内容,可以⽣成打印⽬标⽂档。
优点:客户端独⽴完成打印⽬标⽂档的⽣成,减轻服务器负荷;缺点:源⽂档的分析操作复杂,并且源⽂档中的打印内容要有约定。
2、服务器端程序⽅式利⽤后台代码从数据库中读取打印源,⽣成打印⽬标⽂档。
当的页⾯⽣成时,还应适当考虑使⽤CSS来实现强制分页控制。
优点:可以⽣成内容⾮常丰富的打印⽬标⽂档,⽬标⽂档的内容的可控性强。
由于打印内容是从数据库中获取的,所以⽣成操作相对简单;缺点:服务器端负载⽐较⼤。
页⾯设置◆页⾯设置主要是指设置打印⽂档的页边距、页眉、页脚、纸张等内容。
页⾯设置将直接影响到打印⽂档版⾯的⽣成效果,所以它和打印⽂档的⽣成有着密切的关系。
⽐如:表格的⾏数、⼤⼩、位置、字体的⼤⼩等。
现有的技术是利⽤IE 6.0内置的打印模板⽅式来控制页⾯设置,其可以对打印⽬标⽂档产⽣⾮常⼤的影响。
打印模板可以控制页边距、页眉、页脚、奇偶页等内容,并可以将⽤户的设置取得,还可以将设置发送到服务器端。
打印模板技术可以⾃定预览窗⼝和打印格式,最⼤限度地影响⽬标⽂档和打印效果。
IE直接打印直接调⽤window.print或者webrower控件的ExecWB⽅法来打印。
优点:⽅便快捷,客户端⽆需任何设置即可。
缺点:打印控制不是很灵活。
如果直接调⽤。
window.print来打印页⾯,页⾯上别的元素也会被打印处理,页头页尾的格式也不好控制。
常⽤⽅法:⼤部分情况会把查询的结果绑定到DataGrid上来,然后打印DataGrid。
这种情况的打印⼀般来说格式⽐较固定简单,确定后基本不会再作更改。
asp各种关于打印的代码
Font f = new Font("宋体", 12);
Brush b = new SolidBrush(Color.Black);
protected System.Web.UI.WebControls.DataGrid MyDataGrid;
protected System.Web.UI.WebControls.Button btnSubmit;
protected System.Web.UI.HtmlControls.HtmlForm Form1;
g.DrawString(baseExpense, f, b, 219, 202);
g.DrawString(fine, f, b, 372, 202);
g.DrawString(upExpense, f, b, 486, 202);
string GetdSquery;
string id;
private void Page_Load(object sender, System.EventArgs e)
{
{
string date = lblDate.Text; //当前日期
string flowId = lblFlowId.Text; //流水号
string payDate = PayDate.Year.ToString() + "年" + PayDate.Month.ToString() + "月"; //应收年月
shineseExpense,
string payDate,
楚琳Web打印控件的使用说明修改版
楚琳Web打印控件的使用说明本报表控件为Activex控件,通过JavaScript语言进行调用。
本报表控件包含在PrintActivex.exe文件中,其报表预览和打印基本上可以达C/S架构的报表效果。
本报表控件提供了ASP,,PHP,JSP语言的示例,用户可以参照示例进行开发。
这些示例中核心为三个函数,为TableToStr、FileToStr、TablePictureToStr。
在实际开发中,请把此三个函数拷贝至程序中。
TableToStr函数是把数据集的内容转化为报表控件所需的XML字符串,对于JSP示例则需要修改一下JavaBean类中所对应的连接字符串。
FileToStr函数是把报表文件或图片转化为报表控件所需的字符串。
TablePictureToStr则把数据集中所对应的图片文件转化为报表控件所需的字符串。
报表控件的名称为WebPrint.WebPrintUnit,Version属性为版本号,有此属性便于用户自动检测更新。
ReportFileName属性,用于调用DesignReport函数编辑报表之前,指定报表的名称,以便上传服务器。
PrinterList属性,获取客户端本地已经安装的打印机列表,各打印机名称之间以“;”分隔。
此属性便于在网页上设置指定的打印机进行打印(有示例)。
Printer属性,可以指定打印时的打印机名称,对于打印预览方式,系统则把指定打印机设为首选打印机;对于直接打印,系统则把打印任务直接分配给指定打印机。
若为空则为默认打印机。
指定的打印机必须是客户端电脑已安装好的,本地打印机和网络打印机都可以,对于网络打印机的名称,注意“\”改为“\\”,比如:ObjPrintMange.Printer='\\\\192.168.1.88\\Epson LQ-300K'; ,若指定的打印机不存在,则还是默认的打印机。
pbPrint属性,为0则打印预览时隐藏按钮;pbLoad属性,为0则打印预览时隐藏按钮;pbSave属性,为0则打印预览时隐藏按钮;pbExport属性,为0则打印预览时隐藏按钮;pbZoom属性,为0则打印预览时隐藏按钮;pbFind属性,为0则打印预览时隐藏按钮;pbOutline属性,为0则打印预览时隐藏按钮;pbPageSetup属性,为0则打印预览时隐藏按钮;pbNavigator属性,为0则打印预览时隐藏按钮;pbExportQuick属性,为0则打印预览时隐藏按钮;LeftMargin属性,设置页面设置的左边距,单位为毫米;RightMargin属性,设置页面设置的右边距,单位为毫米;TopMargin属性,设置页面设置的上边距,单位为毫米;BottomMargin属性,设置页面设置的下边距,单位为毫米;PageSetURL属性,设置此属性,则在报表预览时,单击了按钮,在弹出的页面设置窗口后点击“确定”按钮时,通过Http的Post方式直接提交到所设置的URL页面,用户可以在URL处理用户所设置的页面设置的左边距、右边距、上边距、下边距。
asp.net生成Excel并导出下载五种实现方法
⽣成Excel并导出下载五种实现⽅法通过GridView(简评:⽅法⽐较简单,但是只适合⽣成格式简单的Excel,且⽆法保留VBA代码),页⾯⽆刷新aspx.cs部分复制代码代码如下:using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Text; public partial class DataPage_NationDataShow : System.Web.UI.Page { private Data_Link link = new Data_Link(); private string sql; protected void Page_Load(object sender, EventArgs e) { Ajax.Utility.RegisterTypeForAjax(typeof(DataPage_NationDataShow)); } protected void btnExcel_Click(object sender, EventArgs e) { string strExcelName = "MyExcel"; strExcelName = strExcelName.Replace(@"/", ""); Data_Link link = new Data_Link(); string strSQL = this.hidParam.Value; DataSet ds = new DataSet(); ds = link.D_DataSet_Return(strSQL);//获得想要放⼊Excel的数据 gvExcel.Visible = true; gvExcel.DataSource = null; gvExcel.DataMember = ds.Tables[0].TableName; gvExcel.DataSource = ds.Tables[0]; gvExcel.DataBind(); ExportToExcel(this.Page, gvExcel, strExcelName); } protected void gvExcel_RowDataBound(object sender, GridViewRowEventArgs e) { } public override void VerifyRenderingInServerForm(Control control) { } /// <summary> /// ⼯具⽅法,Excel出⼒(解决乱码问题) /// </summary> ///<param name="page">调⽤页⾯</param> /// <param name="excel">Excel数据</param> /// <param name="fileName">⽂件名</param> public void ExportToExcel(System.Web.UI.Page page, GridView excel, string fileName) { try { foreach (GridViewRow row in excel.Rows) { for (int i = 0; i < row.Cells.Count; i++) { excel.HeaderRow.Cells[i].BackColor = System.Drawing.Color.Yellow; } } excel.Font.Size = 10; excel.AlternatingRowStyle.BackColor =System.Drawing.Color.LightCyan; excel.RowStyle.Height = 25; page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName); page.Response.Charset = "utf-8"; page.Response.ContentType = "application/vnd.ms-excel"; page.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");excel.Page.EnableViewState = false; excel.Visible = true; excel.HeaderStyle.Reset(); excel.AlternatingRowStyle.Reset(); System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); excel.RenderControl(oHtmlTextWriter);page.Response.Write(oStringWriter.ToString()); page.Response.End(); excel.DataSource = null; excel.Visible = false; } catch (Exception e) { } } }aspx部分复制代码代码如下:<head runat="server"> <script type="text/javascript"> //Excel DownLoad function excelExport(){ var hidText = document.getElementById("hidParam"); hidText.value = "some params"; document.getElementById("ExcelOutput").click(); } </script> </head> <body onload="pageInit()"> <form id="form1"runat="server"> <input type="button" value="EXCEL下载" style="width:100px;" onclick="excelExport()" id="excelBut" /><input id="hidParam" type="text" runat="server" style="display:none;"/> <asp:Button runat="server" ID="ExcelOutput"style="display:none" Text= "EXCEL出⼒" Width="0px" onclick="btnExcel_Click" UseSubmitBehavior="false"/><asp:GridView ID="gvExcel" runat="server" Height="95px" OnRowDataBound="gvExcel_RowDataBound" Visible="False"> </asp:GridView> </form> </body>在刚才的aspx.cs代码中复制代码代码如下:foreach (GridViewRow row in excel.Rows) { for (int i = 0; i < row.Cells.Count; i++) { excel.HeaderRow.Cells[i].BackColor = System.Drawing.Color.Yellow; } }这部分是给表头添加样式。
Access如何进行报表的生成和打印
Access如何进行报表的生成和打印Access是一个流行的关系型数据库管理系统,可以用来存储数据并生成报表。
在Access中,用户可以通过查询和报表功能轻松地生成各种类型的报表,并且可以通过打印功能将报表输出到纸质格式。
下面将详细介绍在Access中如何进行报表的生成和打印。
1.数据准备首先,生成报表之前需要做好数据准备工作。
用户可以在Access中创建数据表或导入外部数据源,确保数据的准确性和完整性。
此外,还可以在数据表中添加计算字段或者进行数据清洗工作,以便生成更加准确和有用的报表。
2.查询数据在生成报表之前,用户需要先确定报表所需要的数据,然后使用查询功能从数据库中检索出这些数据。
在Access中,用户可以通过“查询设计”工具来创建查询,选择所需的表和字段,并设置适当的条件和排序规则。
通过查询可以方便地过滤出需要的数据,准备好生成报表所需的数据源。
3.创建报表一旦数据准备好,就可以开始创建报表了。
在Access中,用户可以使用“报表设计”工具来创建报表。
在报表设计视图中,用户可以将查询的结果以表格、图表或其他方式展示出来,并根据需求添加标题、页眉、页脚、Logo等元素,美化报表的外观。
4.设置报表属性在创建报表的过程中,用户还可以设置报表的属性,包括页面大小、方向、边距、页码等选项。
通过设置报表属性,可以确保报表在打印时能够呈现出最佳的效果,并且符合用户的需求。
5.打印报表一旦报表设计完成并设置好属性,用户就可以使用打印功能将报表输出到纸质格式。
在Access中,用户可以通过“打印预览”功能先预览报表的打印效果,然后通过“打印”按钮将报表打印出来。
在打印设置中,用户可以选择打印的页数、打印机、纸张大小等选项,以便按需打印报表。
6.导出报表除了打印,用户还可以将报表导出为其他格式,如PDF、Excel、图片等。
在Access中,用户可以通过“另存为”功能将报表导出为不同格式的文件,以便与他人共享或者备份报表数据。
Access如何进行报表的生成和打印
Access如何进行报表的生成和打印报表生成和打印是企业管理中非常重要的一项工作,它涉及到数据的整合、分析和展示,为管理者提供决策参考。
在现代科技发达的时代,有许多软件和工具可以帮助我们进行报表的生成和打印,其中Access是一种非常常用且强大的数据库管理软件,今天我将为大家介绍如何在Access中进行报表的生成和打印。
首先,我们来了解一下报表的生成和打印的基本流程。
在Access 中,报表是用来从数据库中提取数据并以易于理解的形式进行展示的工具。
生成报表的过程通常包括以下几个步骤:1.设计报表:在Access中,我们可以通过报表设计视图来创建报表的结构和布局,包括选择要显示的字段、设置数据的分组和排序等。
2.运行查询:在生成报表之前,通常需要先运行查询来从数据库中提取需要的数据。
查询可以根据特定的条件和要求来筛选、计算和排序数据,以便生成报表时能够呈现出有意义的信息。
3.生成报表:一旦设计好报表的布局和结构,我们就可以利用查询的结果来生成报表。
在Access中,我们可以通过“创建”选项卡中的“报表”工具来新建报表,然后将查询的结果和报表的布局进行结合,生成最终的报表。
4.打印报表:最后,我们可以将生成的报表通过打印机或其他打印设备进行打印,以便在纸质上进行阅读、分发和存档。
下面我们将逐步介绍在Access中如何进行报表的生成和打印。
第一步:设计报表在Access中设计报表的过程通常包括以下几个方面:1.选择报表的数据源:在设计报表之前,我们首先需要确定报表要使用的数据源,即要从数据库中提取哪些数据来进行展示。
这通常是通过运行查询来实现的,可以根据实际需求来筛选、计算和排序数据。
2.设计报表的结构和布局:在设计报表时,我们需要确定报表的结构和布局,包括要显示的字段、数据的分组和排序方式等。
在Access中,我们可以通过报表设计视图来进行这些设定,可以通过拖放字段、设置排序和分组属性等来实现。
3.设计报表的样式和格式:除了基本的数据展示外,我们还可以通过设置报表的样式和格式来美化报表的外观。
巧用ASP实现Web数据统计、报表和打印
越 来 越 多 , 如 办 公 自动 化 、电 子 商 务 和 管 理 信 息 系 统 ( S MI) 等 。这 些 We 务 应 用 系 统 经 常 涉 及 到 数 据 的统 计 、报 表 和 b业
打 印 。 A P在 实 施 动 态 交 互 和 生 成 动 态 页 面 方 面 具 有 很 大 的优 S
s lt s l c - r m p r o n lwh r e a t e t= ~ & qs r= e e t k f0 es n e e e d p m n r
钮 ,然 舌 重 新 按 客 户 端 的 “ 始 连 接 ” 按 钮 ,测 试 两 端 发 送 数 开 据:
测 试 环 境 Wi9 n 8+P 6 5+V 6 0 B . B.一
图4
发 行 :将 编 译 好 的 程 序 和 m wnc .C 起 发 ,但 不 要 s i k OX s 忘 记 注 册 OX C: rgv3 msisk OX 件 所 在 的 路 径 \ wnc.C esr2 wnc . C 文 ms i k OX s 对 于 一 点 对 多 点 的 通 信 ,与 上 面 介 绍 的 大 同 小异 , 只要 在
< %
数 据 ,在页面上动态 生成报表 。 ( )在 客户 端 运 行 脚 本 ,使用 V Sr t 本 函数 Ce 3 B ei 脚 p r・ aOjt t be 在本地创建 wo 的 D c m n 对象 的实例 ,也就 是在 e c ou et
客 户 端 创 建 wod文 档 ,设 定 表 格 属 性 ,然 后 将 页 面 上 的报 表 r 数 据 填 人 本 地 Wod表 格 ,最 后 保 存 文 档 , 执 行 本 地 Wod打 r r
印。
h = / 设置 变量, 人数合计初始 值为 0 j0 / 总 / 以下 W hl / i e循环 按 部 门依 次 完 成 统 计 和 报 表
web 打印解决方案
web 打印解决方案
《Web打印解决方案》
随着互联网的发展,越来越多的工作和业务都向网络化转移,这就意味着更多的文件和资料需要进行打印。
而在互联网上进行打印的需求也日益增加。
为了满足这一需求,出现了许多Web打印解决方案。
Web打印解决方案是针对互联网上打印需求而开发的服务平台,用户可以通过网页或移动端来上传需要打印的文件,选择打印方式和纸张规格等,然后在指定的地点进行取件,完成打印任务。
这种方式不仅方便快捷,而且可以减少许多不必要的环节,提高工作效率。
在Web打印解决方案中,常见的服务包括线上打印、线下取件和快递邮寄等。
用户可以选择自取,也可以选择邮寄到指定地址,方便快捷。
同时,一些Web打印平台还提供了在线编辑、文档格式转换、文件加密等功能,让用户能够更方便地处理文件。
Web打印解决方案的出现,不仅满足了用户对多样化打印需求的要求,也使得打印行业更加智能化、便捷化。
打印行业将会朝着更加网络化、定制化的方向发展,为用户提供更加个性化的服务。
总的来说,《Web打印解决方案》的出现,为用户提供了更便捷、更快速的打印方式,满足了现代社会的多样化需求。
随
着科技的不断发展,相信Web打印解决方案将会不断更新和完善,为用户带来更多便利和惊喜。
ASP.NET中自制Web报表的研究
【】 3。
印的格式 、线条 、颜色等 ,还可以很轻松地实现报表数 据的排
技 巧 ,就 可 以实 现 多 层 表 头 。 在 打 印 成 绩 报 表 时 ,假 定 需 要 打 印 学 生 姓 名 、语 文 、数 学 、英 语  ̄ l 课 程 ,并 需要 将 所 有 的课 程 定 义 一 个 表 头 。这 时 -' J
大的 . E rm Wok N T Fa e r,对系统 软硬件要求 较高 ,安装 、维护
维普资讯
A P E 中 自制 we S. T N b报 表的研 究
f _ _
红
胡A P N T中 自带 的数据 显 示控 件 ,创 建 We S. E b报表 的方 法 ,对 几种 常 见报 表 ,结合 实际例 子 介 绍 其 实现 方 法, 对 于 “ 国式 ”报 表 的 一些 特 殊情 况 中
t></r T >< D 语 文 </ D T >数 学 </ D T > d t >< R T > T >< D T >< D 英 语 </ D </ R 。 T > T >
中 自带的 一些 数据显 示控件 ,实现 自制 We 表的方法 。 以 b报 下结合报表样例 ,对各种常 见类型报表的实现方法分别进行 阐
D t on a B u d事件 ,在事件 处理程序 中计算 并显示 即可 ,该事件 a 的编程方法参见文献 [】 4。
对 于 多 层 表 头 ,A P N T没 有 提 供 直 接 实 现 方 法 ,但 由 S. E 于 A P N T的 D t r S.E a Gi 际 本 质 上 是 一 个 H ML表 格 ,那 么 a d实 T
分享ASP.NET使用Lodop控件实现Web打印功能
分享使⽤Lodop控件实现Web打印功能Lodop控件可以打印Web页⾯内某个控件的内容,下⾯,还是通过⼀个实例来说明下吧,医院系统有个模块,是院内感染模块,它需要填写各种报卡, 并且填写完以后,要将它打印出来,⽽且打印出来的效果要和纸制的报卡近乎⼀致.额,这个要求就⽐较⾼喽,如图-1所⽰,这是其中⼀张报卡的纸制扫描效果图,我们打印出来的效果要和这个⼏乎⼀样.图-1现在我们来分析⼀下这⾥的打印展⽰类型.类型1:患者姓名,卡⽚编号等,直接取⾃Db栏⽬值,不需要额外加⼯.不过,有的需要增加下划线功能.类型2:出⽣⽇期,需要对⽇期进⾏拆分,增加汉字:年,⽉和⽇类型3:户籍属于,全部复选框,将其中某⼀数据选中类型4:户籍地址,是Db中多个栏⽬拼接⽽成.⽽且都是将数据值替换为显⽰值OK,经过以上的分析,上述这些打印类型是可以通过配置的⽅式实现.新建⼀XML配置⽂件,如图-2所⽰图-2字段说明:字段描述描述itemname打印模板中被替换关键字,同时也是Db表中某列名称itemparename若打印类型是comboitem这种组合⽅式,它⽤来定义包括哪些⼦itemnameprintstyle打印类型,⽬前包括:textbox,dropdownlist,datetime,checkboxlist和comboitem(组合⽅式,即由其他多个字段组合⽽成)printformat打印格式,⽇期型的输出格式在此处定义bottomline是否对⽂字增加下划线datasource下拉菜单等的数据源,专门测试使⽤然后我们看看打印模板⽂件是如何制作的,如图-3所⽰图-3现在,我们就要通过编码的⽅式来实现将这些关键字替换掉,简单说,是根据不同的打印格式分别处理.⽐较核⼼的代码如图-4所⽰图-4经过上述代码的编写,我们看看最终的效果图,如图-5所⽰图-5打印控件本⾝⾮常强⼤,可以连续打印.在我提供的⽰例⽂件中,已经提供代码实现⽅式.⼤家可以直接参考.再说明⼀点,这个控件,是在客户端需要安装的.好了,有什么问题欢迎留⾔!⽰例代码。
ASP打印代码大全
ASP开发必备:WEB打印代码大全这篇文章主要介绍了如何使用ASP控制Web的各种打印效果,它能够控制纵打、横打和页面边距等。
1、控制"纵打"、 "横打"和"页面的边距"。
(1)<script defer>function SetPrintSettings() {// -- advanced featuresfactory.printing.SetMarginMeasure(2) // measure margins in inchesfactory.SetPageRange(false, 1, 3) // need pages from 1 to 3factory.printing.printer = "HP DeskJet 870C"factory.printing.copies = 2factory.printing.collate = truefactory.printing.paperSize = "A4"factory.printing.paperSource = "Manual feed"// -- basic featuresfactory.printing.header = "This is MeadCo"factory.printing.footer = "Advanced Printing by ScriptX"factory.printing.portrait = falsefactory.printing.leftMargin = 1.0factory.printing.topMargin = 1.0factory.printing.rightMargin = 1.0factory.printing.bottomMargin = 1.0}</script>(2)<script language="javascript">function printsetup(){// 打印页面设置wb.execwb(8,1);}function printpreview(){// 打印页面预览wb.execwb(7,1);}function printit(){if (confirm('确定打印吗?')) {wb.execwb(6,6)}}</script></head><body><OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"height=0 id=wb name=wb width=0></OBJECT><input type=button name=button_print value="打印"onclick="javascript:printit()"><input type=button name=button_setup value="打印页面设置"onclick="javascript:printsetup();"><input type=button name=button_show value="打印预览"onclick="javascript:printpreview();"><input type=button name=button_fh value="关闭"onclick="javascript:window.close();">------------------------------------------------关于这个组件还有其他的用法,列举如下:WebBrowser.ExecWB(1,1) 打开Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口Web.ExecWB(4,1) 保存网页Web.ExecWB(6,1) 打印Web.ExecWB(7,1) 打印预览Web.ExecWB(8,1) 打印页面设置Web.ExecWB(10,1) 查看页面属性Web.ExecWB(15,1) 好像是撤销,有待确认Web.ExecWB(17,1) 全选Web.ExecWB(22,1) 刷新Web.ExecWB(45,1) 关闭窗体无提示2、分页打印<HTML><HEAD><STYLE>P {page-break-after: always}</STYLE></HEAD><BODY><%while not rs.eof%><P><%=rs(0)%></P><%rs.movenext%><%wend%></BODY></HTML>3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号(1)ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉,打印就不出来了。
用ASP如何生成excel报表
用ASP如何生成excel报表生成报表是做系统经常遇到的事,一些企业或者单位往往要求EXCEL格式的报表!第一种方式利用FSO生成文本文件。
程序代码:Set fs = server.CreateObject("scripting.filesystemobject")'--假设你想让生成的EXCEL文件做如下的存放filename = "c:\online.xls"'-创建EXCEL文件set myfile = fs.CreateTextFile(filename,true)rs.Open sql,connif rs.EOF and rs.BOF thenelsedim strLine,responsestrstrLine=""For each x in rs.fieldsstrLine= strLine & & chr(9)Next'--将表的列名先写入EXCELmyfile.writeline strLineDo while Not rs.EOFstrLine=""for each x in rs.FieldsstrLine= strLine & x.value & chr(9)next'--将表的数据写入EXCELmyfile.writeline strLiners.MoveNextloopend ifSet fs=Nothing这方法的好处是不管有多少条记录速度上是没问题但是有一个很严重的缺点就是生成的EXCEL文件的格式不能得到很好的控制例如单元格的格式不能改变等第二种方法用EXCEL组件+EXCEL模板原理是打开一个存在的EXCEL模板文件然后写入数据后在另存为所要的报表文件优点:格式能很好的控制缺点:速度上很慢 (因为控件接口很费资源)看了微软的说明又想到了用数组做中转的方法只要打开一个接口写入所有数据,于是问题得到了解决,可是新的问题出来了,100万或者更高的记录时数组就的空间分配就成了问题了.工夫不负有心人 ,经过几天努力终于完美解决就是记录多时分批写入~~~~~~~~~程序代码:sub writetoarr(lines,begin_rs,begin_exl)'====================================== ======================================== '过程writetoarr(lines,begin_rs,begin_exl)写入EXCEL'lines:要写入的记录条数'begin_rs:从第几条记录开始'begin_exl:要写入的EXCEL开始位置'====================================== ======================================== redim temparr(lines-1,11)'--将表的列名存放到数组'--将表的数据存放到数组ii=1For i = begin_rs To begin_rs+lines-1j=0'response.write ii&"<br>"For each x in rs.fieldstemparr(ii-1,j)=x.valuej=j+1Nextii=ii+1rs.movenextNextobjExcelSheet.Range("A"&begin_exl).Resize(lines, 12).Value = temparrredim temparr(0,0)response.write "从A"&begin_exl&"开始写到A"&begin_exl+lines&"<br>"response.write "从第"&begin_rs&"条到"&begin_rs+lines&"条记录<br>"response.write "共写入"&lines&"行<br>"response.write "-------------------------<br>"end submaxk=rs.recordcountbeginrs=1 '从第几条记录开始,一般是1beginexl=2 '从excel的第几行开始写,一般是2liness=200 '每次操作多少条记录,不建议超过10万do while maxk>0if maxk>liness thencall writetoarr(liness,beginrs,beginexl)beginrs=beginrs+linessbeginexl=beginexl+linessmaxk=maxk-linesselsecall writetoarr(maxk,beginrs,beginexl)exit doend ifloop。
使用ASP实现基于WEB的表格打印
/i / 表示单元格底部线条为 l il宽,ak x s b c 为线条颜色 pe l
b r e-et oi lc ; od rlf.1sl ba k d
/背景色 /
解决 问 题 , 利用 X ML可 以非 常 容易 地定 义 打印 目标 的 文
{
b cgon : ht; akru d w i e
b re-o tm :1sl lc od rb t o 0i ba k d
本、 表格等内容的格式。但对程序员的开发要求高, 难度 比
O 引言
随着世界范 围内 Itnt n re的普及 , e 全球进 入 了一 个以 网 络为 中心的时代 。we 模型是在传 统的 C S 型 的基础上 b /模
发展起 来 的一种 新 的 Bo srSre 模 式 。B w e/evr rw e/ e r v o r srSre
而且使用灵活 , 可控性强。对于开发者来说 比较方便 。对于 用户来说 , 一般是要首先 看到打印 的内容 , 即首先生成 打印 文档 , 然后进行页面设置 , 印预览 , 打 最后才进行打 印操作 。
维普资讯
山西电子技术
20 0 6年第 3期
应 用 实践
使 用 A P实现基 于 WE S B的表格打 印
张宇杰 李 向民
( 中北大学现代教育技术与信息中心, 山西 太原 0 05 ) 30 1
摘 要: 近年来 BS应用系统越来越多, / 但他在打印表格方面确实与C S的应用系 / 统差距较大, 难以实现。讨
为了打印方便 打印文 档的 上部应 该有 几个操 作按钮 。 如 : 印设置 , 打 打印预览 , 打印等 。这些按钮的实现方法是利
c#Aspose.Cells通过Excel模板生产excel数据再打印
c#Aspose.Cells通过Excel模板⽣产excel数据再打印多的不说,我们先来利⽤Northwind做两个⼩demo。
先说说Aspose.Cells的模板语法:1. &=DataSource.Field,&=[DataSource].[Field]是对DataTable和⼏何类型的引⽤,将会从当前⾏开始竖直向下⽣成多⾏数据。
2. &=$data:是对变量或数组的引⽤。
数组存在skip,horizontal等属性,具体参见3. &=&=动态公式计算;{r}当前⾏,{c}当前列,{-n},{n}当前⾏或列的偏移量前n或后n。
4. &==是动态计算,如excel,if等语句。
(if(logic_test,true_value,false_value))还有其他更为复杂的汇总计算的表达式,这⾥也不在这节多讲,有兴趣的朋友,可以去官⽹看看。
我们先来个简单的例⼦,光说,总是不⾏的,还是要代码实践才能说明⼀切:代码如下:App_Code.SqlDbHelper help = new App_Code.SqlDbHelper();var s = Aspose.Cells.CellsHelper.GetVersion();var sql = "select WL_TZ,WL_CL,RPCJH_SL,WL_MC,RPCJH_JHKGRQ,RPCJH_JHID,RPCJH_JHID asRPCJH_JHID1,RPCJH_GXID,U_RPCJH_KH,(select rtrim((cast(GYLX_GXID as char(2)))+' '+ltrim(GYLX_GXMC)) from GYLX whereGYLX_GYLXID=wo.WO_GYLXID and GYLX_GXID=RPCJH_GXID) as gxmc from RPCJH left join wl on RPCJH_WLID=WL_WLID left join wo on wo.WO_WOID=RPCJH_WOID where RPCJH_JHID='JHA1909152' and RPCJH_BZGXID!='888' ";var dt = help.ExecuteDataTable(sql);dt.TableName = "Customers";Workbook workBook = new Workbook(@"E:\KaBoProject\GTDB\GTDB\bin\Debug\机加作业计划卡.xls");WorkbookDesigner designer = new WorkbookDesigner(workBook);//数据源designer.SetDataSource(dt);//报表单位designer.SetDataSource("RPCJH_JHID", dt.Rows[0]["RPCJH_JHID"].ToString().Trim());designer.SetDataSource("U_RPCJH_KH", dt.Rows[0]["U_RPCJH_KH"].ToString().Trim());designer.SetDataSource("RPCJH_JHID1", "计划编号:" + dt.Rows[0]["RPCJH_JHID1"].ToString().Trim() + " 领卡⼈:");designer.SetDataSource("RPCJH_JHKGRQ", "派⼯⽇期:" +Convert.ToDateTime(dt.Rows[0]["RPCJH_JHKGRQ"].ToString().Trim()).ToShortDateString());designer.SetDataSource("WL_MC", "名称:" + dt.Rows[0]["WL_MC"].ToString().Trim());designer.SetDataSource("WL_TZ", dt.Rows[0]["WL_TZ"].ToString().Trim());designer.SetDataSource("WL_CL", dt.Rows[0]["WL_CL"].ToString().Trim());designer.SetDataSource("RPCJH_SL", dt.Rows[0]["RPCJH_SL"].ToString().Trim());designer.Process();workBook.Save(@"E:\KaBoProject\GTDB\GTDB\bin\Debug\2.xls", SaveFormat.Xlsx);designer = null;⽣成的excel如下打印代码如下:Workbook workbook = new Workbook(@"E:\KaBoProject\GTDB\GTDB\bin\Debug\2.xls");//Get the worksheet to be printedWorksheet worksheet = workbook.Worksheets[0];//获取该Excel⽂档的第⼀个⼯作表//PageSetup pageSetup = worksheet.PageSetup;//pageSetup.Orientation = ndscape;//pageSetup.LeftMargin = 0;//pageSetup.RightMargin = 0.1;//pageSetup.BottomMargin = 0.3;//pageSetup.PrintArea = "A2:J29";//Apply different Image / Print options.Aspose.Cells.Rendering.ImageOrPrintOptions options = new Aspose.Cells.Rendering.ImageOrPrintOptions(); //Set the Printing page property//options.PrintingPage = PrintingPageType.IgnoreStyle;//Render the worksheetSheetRender sr = new SheetRender(worksheet, options);System.Drawing.Printing.PrinterSettings printSettings = new System.Drawing.Printing.PrinterSettings();string strPrinterName = printSettings.PrinterName;//send to printer//System.Drawing.Image map = sr.ToImage(0);sr.ToPrinter(strPrinterName);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
巧用ASP实现Web数据统计、报表和打印
1、引言
随着Internet的飞速发展,基于Web开发的业务应用系统越来越多,如办公自动化、电子商务和管理信息系统(MIS)等。
这些Web业务应用系统经常涉及到数据的统计、报表和打印。
ASP在实施动态交互和生成动态页面方面具有很大的优势,但在处理复杂数据统计、报表和打印时却遇到不小的麻烦。
本文阐述一种利用ASP实现Web数据统计、报表的基本思路和实现方法,同时提供一种巧妙调用Word打印报表的解决方案。
2、应用实例
假设有一家公司利用网络MIS系统对公司员工进行管理,必然会涉及到各部门的员工统计。
为了简单起见,假设最终的统计报表如下:公司员工统计表部门合计员工姓名市场部2张三李四研发部3王五赵六刘七员工合计5 与传统单机MIS系统相比,在网络MIS系统中使用ASP实现以上数据统计、报表和打印会遇到以下问题:(1)数据统计时需要按部门进行分类统计,同时要记下各部门员工的具体名单。
(2)报表生成时需按具体要求动态绘制几行几列表格,同时在适当的地方保持空白。
(3)表格打印可以简单地按网页打印,但效果不好,而且不容易控制。
3、实现方法
简述基于Web的业务应用一般采用三层结构,客户端是普
通的Web浏览器,中间业务逻辑应用层存放于Web服务器上,由Web服务器上的数据库接口访问后台数据库。
利用ASP实现Web数据统计、报表和打印的过程如图所示:浏览器HTML VBScript 统计报表Word 对象Web服务器业务逻辑实现数据库访问接口数据库Word本地打印(1)客户端向Web服务器发送数据统计请求。
(2)Web服务器执行SQL语句,从后台数据库取得统计数据,在页面上动态
生成报表。
(3)在客户端运行脚本,使用VBScript脚本函数CreateObject在本地创建Word的Document对象的实例,也就是在客户端创建Word文档,设定表格属性,然后将页面上的报表数据填入本地Word表格,最后保存文档,执行本地Word打印。
4、实现过程分析
(1)数据库连接首先建立数据库(data.mdb),简单的员工资料表(personnel)结构如下:personnel:department,文本;name,文本;然后建立一个ODBC数据源(DSN),利用DSN指向ODBC数据库。
(2)程序代码分析(在此只分析统计报表程序tongji.asp)//以下显示表格标题和输出
表头公司员工统计表//注意:此处标明表格的id为data 部门合计员工姓名//如果flag为0,表示该部门是首次出现,
表格此处就应该输出部门名称,部门员工合计人数//如果flag不为0,表示该部门不是首次出现,表格此处就应该输出空白//无论该部门是否首次出现,此处输出员工姓名//表格最后一行输出总人数合计员工合计打印"> //点击“打印”按钮,调用vbscript函数buildDoc生成本地Word文档,实现本地打印。
//以下VBScript代码实现buildDoc函数
5、结束语
以上程序在Windows2000及IIS5.0下运行通过,数据库采用Access2000。
执行打印之前,需要将浏览器的安全级别设为低,或在中级安全级别下将ActiveX控件设为启用。
该方法的优点在于实现统计报表十分简单,调用Word打印非常方便,并且可以按用户要求对表格属性进行设置;不足之处是需要调节浏览器的安全设置,且不支持图片和特殊字体的打印,同时客户端必须安装Microsoft Word软件。