ATGrid + JSP + Javascript + XML 开发Web控件打印

JFreeChart开发股票K线图  在JAVA的图形开发中,JFreeChart提供源代码及DEMO代码,详细的API工具,如果遇到问题还可以到http://www.jfree.org/phpBB2这个论坛一问究竟,全面的技术支持使图形开发起来得心应手!下面的例子是用JFreeChart开发股票K线图,附有注释 import java.sql.*;import java.text.SimpleDateFormat; 阅读详情

 ATGrid  是国内的一款提供WEB打印解决方案的插件,最近由于项目需要,花了几天研究了下,并用这个插件实现了WEB打印,方案如下~ 因为是摸索,希望大家多多指教~


插件的下载

 ATGrid控件下载地址: http://www.etcell.com/ATGrid/ATGrid.dll
 ATGrid控件WEB运行包下载地址: http://www.etcell.com/ATGrid/ATGrid.cab
下载包中包括 winTable 报表模板设计器,ATGrid发行包,ATGrid帮助文档,还有一些例子。


插件安装

安装完系统后,会在安装目录下存在JavaLib文件夹,此文件夹下存在两个类文件,
分别为:ATGrid.jar和JavaATGrid.dll

设置方法如下:
(1)JavaATGrid.dll文件复制到System32文件夹下;
(2)把ATGrid.jar文件复制到jdk安装目录下的lib目录下;
(3)把ATGrid.jar文件复制到Tomcat安装目录下的common/lib目录下;
(4)环境变量->系统变量->在变量CLASSPATH的值中添加
“.;%JAVA_HOME%/lib/ATGrid.jar;”

(5)配置tomcat或者weblogic服务器的web.xml,便于能让xxx.et文件能下载
在web.xml文件中增加下面的内容:
<mime-mapping>
<extension>et</extension>
<mime-type>et</mime-type>
</mime-mapping>

(6)重启WEB服务器

下面开始设计

ATGrid WEB 开发主要以以下步骤,首先用winTable设计报表模板,然后在网页中用<object>标签引入模板,在用JS输出XML将数据注入模板。
下面以我开发时的例子来说明。
项目案例 : a.jsp中有一个FORM表单,里面包含一个table表格,做成的效果就是点击a.jsp下面的打印,然后弹出网页b.jsp,运行ATGrid插件,然后在b.jsp进行打印。
说明:当前的系统是基于struts 2.0 的
下面给出代码:
在a.jsp中,涉及到对一个表单的二次提交,那么“打印”按钮的方法如下

   < INPUT  class =button  type ="button"  value ="    打印    "   onclick ="toPrint();" >

相应的javascript代码为

< script language = " javascript " >
function  toPrint() {
    window.document.myform.target
="_blank";
    window.document.myform.action
="SCQY_HTZXDGL_ImpleSheetSearchDetailPrint.action";
    window.document.myform.submit();
    window.document.myform.target
="_self";
    window.document.myform.action
="SCQY_HTZXDGL_ImpleGoodsValidity.action";
}

</ script >


这个JS中,将打开一个新页面,并将FORM中的内容提交的action中,这个action再定位到b.jsp,也就是打印页面。下面是打印页面

首先引入控件

< object  classid ="clsid:D0CB6A0C-E656-4BF4-BD2D-6AE5EC183D7C"  id ="ATGrid1"  width ="100%"  height ="95%" >
  
< param  name ="FileName"  value ="impleSheet.eT" >
  
< param  name ="Ruler"  value ="true" >
</ object >


另外,我将a.jsp中的form的全部内容都传递到b.jsp,并设置为隐藏,这样就可以在javascript中引用这些动态的数据。(因为控件活动在浏览器端,所有控制控件的代码都必须写到javascript中)
下面是b.jsp中的js代码,用于输出XML,并将xml中定义的数据添加到控件模板

< script language = ' JavaScript ' >  

var  appCoName  =  document.all.appCoName.value;
var  headApprover  =  document.all.headApprover.value;
var  coSymbol  =  document.all.coSymbol.value;
var  LXConformer  =  document.all.LXConformer.value;
var  date  =  document.all.date.value;

var  strXML;

strXML 
=   " <?xml version='1.0' encoding='UTF-8'?> " ;
strXML
+=   " <EtCell> " ;
strXML
+=   "
asp.net的网页ftp上传下载源代码 已经调试好的建立iis用C#的asp.net操作远程的服务器的ftp上传下载源代码 立即下载

相关推荐

ATGrid报表控件/插件V2.1.7.711

ATGrid报表控件/WEB插件[专业版],对EtCell进行了进行了全面的改革,将会彻彻底底的解决你的报表问题,让你开发达到从未有过的轻松和喜悦...... <br>是专业的报表工具,提供了丰富的报表分析方法,具有可视化的报表设计器WinTable,更好的支持WEB报表打印,连续打印、报表套打,对aspx.net、asp、Java报表、jsp、pphp提供了专门的类库,方便WEB报表开发人员进行快速开发.<br>支持的报表功能如下: <br>1、支持主从报表 <br>2、交叉报表 <br>3、支持分组报表:小计、汇总自由设置 <br>4、支持的套打报表,让套打简单灵活 <br>5、支持分组报表的每组打印控制 <br>6、支持连续打印,解决了票据打印的难题 <br>7、支持自定义报表 <br>8、支持MIS开发的各种开发工具:如VC、VB、Delphi、C++Bulider、InterDev <br>9、支持WEB开发,FrontPage、InterDev、ASP.NEt、C# <br>10、EtCell内置支持VBScript脚本包括事件 <br>11、在WEB上支持VBScript、JavaScript脚本 <br>12、支持URL连接 <br>13、支持的WEB服务器:NT的WEB服务器、Linux、Unix、WebLogic、TOMCAT、IIS; <br>14、在MIS开发中直接支持数据库,让程序开发更方便快捷<br>15、WEB插件和浏览器紧密融合,完全成为浏览器的一个分子!<br>16、一个页面安放多个ATGrid报表插件,再也不会出现其他控件的闪烁变动的效果!<br>17、完全支持XML,后台程序可以通过XML控制报表的每一部分!<br>18、让WEB开发变的更加简单,在WEB页[html]可以不用写一行代码.......<br>19、报表的单元格类型多大几十种,如:Text,Num,Button,Radio,CheckBox,Combox.....<br>20、不但实现报表展示功能,更重要突破了报表在线编辑功能........<br>21、和后端服务器程序的交互更加简单...............<br>22、可以把多个ATGrid控件的数据打印到一起,在也不用担心页眉和页脚问题......<br>功能多多,肯定会让你满意,不必再为选择报表控件发愁!!!<br>

HTML table表格编辑器

一个表格编辑器,可上移下移,还可对单元格数据进行编辑

ATGrid报表控件 wintable报表设计器

ATGrid报表控件<br>----------------------------------------<br>是国产报表控件领航者,技术完全自主知识产权。开发语言:JSP、ASP、ASP.NET、C#、PHP、ISAPI等等;<br>支持脚本:VBScript、JavaScript脚本;<br>只要能运行Flash动画的地方就可以运行ATGrid;<br>支持HTTP协议,带有异步同步交互接口,可以和后台程序轻松交互;<br>支持XML: 通过XML和后台数据库进行绑定,设定打印属性、样式等;<br>内嵌支持脚本语言开发: 使开发更灵活方便; <br> 普通报表,套打报表,财务报表,分组报表,主从报表,交叉报表,多行显示,自定义等WEB报表; <br><br>wintable报表设计器<br>------------------------------------<br>·界面类似于Excel软件,会Excel就会WinTable;<br>·可以制作各种复杂报表;<br>·完全解决数据统计、查询的繁琐问题;<br>·无需编程实现所见即所得的打印;<br>·方便的转换为EXCEL、HTML格式;<br>·支持XML: 可以和任何第三方软件进行轻松接口;<br>·功能实现接口开放,可以自定义WinTable功能;<br>·支持脚本:内嵌支持VBScript脚本,使程序更灵活; <br>·制作的报表式样可以在ATGrid控件中方便引用;<br>·普通报表,套打报表,财务报表,分组报表,主从报表,交叉报表,多行显示,自定义等报表; <br><br>下载最新版本试用版请到<br>http://www.etcell.com/download.asp?ID=51<br><br>

ATGrid报表控件_插件 V2.1.7.926.

ATGrid报表控件_插件 V2.1.7.926与华表有类似的功能,感兴趣的网友可以研究一下

ATGrid报表打印控件

用于web开发,动态打印支持导出多种格式如:excel,word等

EtCell报表控件/插件

EtCell报表组件v3.2面世了! 更新时间 2002.11.12 制表工具WinTable下载地址: http://www.etcell.com/download/WinTable23.zip 网站有详细介绍,最好从网站下载:http://www.etcell.com/ EtCell组件是开发B/S和C/S比较好的选择,可以B/S模式的应用具有C/S模式的一操作性并且让程序员完全从繁杂的打印中解脱出来,开发出来的产品及具有特色。 如果你想自定义自己的报表系统,那你选择EtCell是没错的 让你在2天之内拥有自己的报表系统! 要想知道更多信息,可以到 http://www.etcell.com/ 在线试用!!!!!绝对新鲜!!! 利用EtCell开发的一个网络报表平台例子: http://www.etcell.com/WebEtCell/ 利用EtCell开发的Internet进销存系统: http://www.etcell.com/Sales/ 昂利万报表套件是济南昂利万软件开发有限公司精心设计开发的自主软件产品,主要包括制表平台、EtCell组件、EtCell插件等一系列的COM组件。昂利万报表不单能轻轻松松的制作各种复杂报表,更重要的让软件开发(数据库开发)的界面设计和程序设计完全分离,实现软件集成!你想制作自己的自定义报表吗?你想提高软件开发效率吗?你想轻松的维护你的软件吗?如果是的话,那你还犹豫什么......

告别手动烧录!给STM32H750外挂Flash制作Keil专用下载算法(保姆级避坑指南)

本文详细介绍了为STM32H750外挂Flash开发Keil专用下载算法的全过程,从原理到实战操作,特别针对QSPI Flash的配置和优化提供了保姆级避坑指南。通过定制下载算法,开发者可以告别手动烧录,实现一键下载到外部Flash,大幅提升开发效率。

weixin_42567497的博客 252

Globus数据下载全攻略:从零配置到批量下载大文件(附常见问题解决)

本文详细介绍了Globus数据下载的全流程,从零配置到批量下载大文件的实用技巧,包括环境准备、高级传输策略、性能优化及常见问题解决方案。Globus作为科研数据的高效传输工具,通过并行流传输和自动校验技术,显著提升大规模数据传输的效率和可靠性。

u9v0w的博客 663

23数字图像置乱技术(matlab程序)

所谓“置乱”,就是将图像的信息次序打乱,a像素移动到b像素位置上,b像素移动到c像素位置上,……,使其变换成杂乱无章难以辨认的图片。数字图像置乱技术属于加密技术,是指发送发借助数学或者其他领域的技术,对一幅有意义的数字图像做变换,使之变成一幅杂乱无章的图像用于传输。在图像传输过程中,它通过对图像像素矩阵的重排,破坏了图像矩阵的相关性,使非法截获者无法从杂乱无章的图像中获得原图像信息,以此实现信息的加密。接收方经去乱解密可恢复原图像。

m0_57943157的博客 1209

自动化学报Ctex+texstudio配置方法

自动化学报Latex的模板win10使用方法(CTEX+texstudio)

zxy15924462502的博客 7379

Dobot Magician机械臂二次开发指南:如何利用Python脚本和I/O接口实现自动化任务

本文详细介绍了Dobot Magician机械臂的二次开发方法,重点讲解如何通过Python脚本和I/O接口实现高级自动化任务。内容包括开发环境搭建、运动控制API解析、I/O接口应用以及典型场景实现,帮助开发者充分发挥Dobot Magician的潜力,适用于工业自动化、教育科研等领域。

weixin_26968079的博客 267

提示工程架构师干货:AI上下文工程在社交媒体舆情溯源中的应用

在舆情溯源中,“上下文”不是单一的“文本内容”,而是多维度、多源的信息集合溯源时间:从事件爆发到找到源头,只用了24小时(传统方法需要3-5天);溯源准确性:100%(通过人工验证确认);后续行动:品牌X发布了澄清声明,揭露了品牌Y的恶意行为,舆情在48小时内平息。社交媒体舆情溯源是一个“复杂的系统工程”,需要结合数据、模型、上下文理解。AI上下文工程的出现,让我们从“被动应对”转向“主动溯源”,从“模糊判断”转向“精准分析”。

Java大师兄的博客 813

如何学习总线技术

如何学习总线技术 以形象生动的比喻来描绘了总线技术的基本思想,指出了总线的基本分类和总线传输的基本原理,以及在学习过程中应当掌握的最基本的知识,对初学者有起到抛砖引入的作用。 0引言   如果一座只能容一个人来往的独木桥,两端的人都想要过桥,为了不拥挤、阻塞,那我们就得采取有效的办法。比如规定某段时间哪端的人过桥,另一端的人就等着该他过桥的时间段的到来,同时也还可以规定人多时要按先来后到或年

ce123的技术博客 8529

如何通过 Python 爬虫抓取并分析政府开放数据

通过本文的介绍,我们展示了如何使用Python 爬虫抓取并分析政府开放数据。通过requests获取政府开放数据的 API 接口数据。使用和pandas进行数据清洗与存储。使用matplotlib对数据进行可视化。你可以根据不同的政府开放平台和数据集进行调整,应用于不同领域的数据分析,如公共健康、交通、环保等。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1078

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 利用 POI 从JSP表格中生成excel文件
下一篇: TOMCat 端口占用问题
TopestCoder
博客等级 码龄19年 12粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值