ireport直接打印报表,不预览精编版

ireport直接打印报表,不预览精编版
ireport直接打印报表,不预览精编版

(转)ireport直接打印报表,不预览

2011年02月23日星期三下午 02:06

打印类代码如下:

package com.sofn.struts.report.actions;

import java.io.File;

import java.io.ObjectOutputStream;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import javax.naming.Context;

import javax.naming.InitialContext;

import https://www.360docs.net/doc/962067203.html,NotFoundException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.sql.DataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperPrintManager;

import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import com.lowagie.text.ExceptionConverter;

import https://www.360docs.net/doc/962067203.html,erInfoDTO;

import https://www.360docs.net/doc/962067203.html,erInfo;

import https://www.360docs.net/doc/962067203.html,erSessionOperate;

public class ReportViewAction extends Action {

(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response)

throws Exception {

//已编译文件路径和格式

String fp =this.getServlet().getServletContext().getRealPath("/")+ "report\\jasper\\"+ request.getAttribute("rdoc")+ ".jasper";

File reportFile = new File(fp);

// System.out.println("报表路径!!!!!!!"+reportFile);

Map parameters = (Map) request.getAttribute("paras");

byte[] bytes = null;

List list = new ArrayList();

DataSource ds = null;

JasperPrint jasperPrint=null;

//参数传递

UserSessionOperate uso = new UserSessionOperate();

String user = uso.getUser(request);

UserInfo eidr = new UserInfo();

UserInfoDTO eidrdto = null;

String deptname = "物流部门";

String username = "陈云刚";

parameters.put("marker", username);

parameters.put("bumen", deptname);

//数据库连接

try {

String source = "java:comp/env/jdbc/posuse";

Context ic = null;

if (ic == null)

ic = new InitialContext();

ds = (DataSource) ic.lookup(source);

if (ds == null) {

System.out.println("Reportview----22222!");

}

} catch (NameNotFoundException nfe) {

nfe.toString());

} catch (Exception ne) {

ne.printStackTrace();

}

//使用数据源

if (request.getAttribute("datasource") != null) {

list = (List) request.getAttribute("reportlist");

JRBeanCollectionDataSource jds =new JRBeanCollectionDataSource(list); //使用数据源

}

//使用SQL查询

try {

jasperPrint

=JasperFillManager.fillReport(reportFile.getPath(),parameters,ds.getConnection());//填充报表数据生成JasperPrint对象

JasperPrintManager.printReport(jasperPrint, false);//2008-08-25 直接打印,不用预览PDF直接打印 true为弹出打印机选择.false为直接打印.

} catch (JRException jre) {

//System.out.println("Reportview----JRException88888");

jre.printStackTrace();

} catch (ExceptionConverter ec) {

ec.getLocalizedMessage());

ec.printStackTrace();

} catch (NullPointerException npe) {

npe.getLocalizedMessage());

npe.getMessage());

npe.toString());

System.err);

} catch (Exception ee) {

ee.printStackTrace();

}

//输出

response.setContentType("application/octet-stream");

ServletOutputStream ouputStream = response.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(ouputStream);

oos.writeObject(jasperPrint);//将JasperPrint对象写入对象输出流中

oos.flush();

oos.close();

ouputStream.flush();

ouputStream.close();

return mapping.findForward("view"); //转向

}

}

使用技术:Jsp+Struts+Jdk1.6.7+Tomcat5.5+SQLServer2000+iReport2.0.5

从中遇到过两个问题:一是弹出打印机选择;二是弹出自动下载框.

代码中已解决

Java实现打印功能

Java实现打印功能 用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。 下面代码实现了简单的打印功能: import java.awt.BasicStroke; import java.awt.Color; import https://www.360docs.net/doc/962067203.html,ponent; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Toolkit; import java.awt.RenderingHints; import java.awt.font.FontRenderContext; import java.awt.font.LineBreakMeasurer; import java.awt.font.TextAttribute; import java.awt.font.TextLayout; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; import java.awt.print.Book; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.text.AttributedString; import javax.swing.JApplet; public class PrintTest implements Printable{ /** * @param Graphic指明打印的图形环境 * @param PageFormat指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595×842点) * @param pageIndex指明页号 **/

JavaPrintService_Java打印API_用户手册_中文版

目录 第一章介绍 Java平台打印的历史 JDK 1.3 JDK 1.2 JDK 1.1 Java Print Service API能做什么 Java Print Service 构架 javax.print包 发现打印服务 指定打印数据格式 创建打印工作 javax.print.event包 应用程序如何使用JPS 一个基本的例子 第二章属性 属性的类别和值 属性角色 属性集 如何指定属性 标准属性 OrientationRequested Copies Media MediaSize MediaPrintableArea Destination SheetCollate Sides Fidelity 使用JPS属性 第三章指定文档类型 用户格式打印数据 预定义数据格式的MIME类型 文本数据 页面描述语言文档 图像数据 自适应打印数据 表示类 字符编码的重要性 服务格式打印数据 怎样使用DocFlavor 第四章打印及流化文档

比较StreamPrintService与PrintService 定位服务 发现打印服务 发现流打印服务 获得一个打印工作 创建DOC 注册事件 打印服务事件 打印工作事件 PrintJobAttributeListener PrintJobListener 提交打印工作 向打印机提交打印工作 向流提交打印工作 打印服务提供商 第五章打印及流化2D图像 使用打印工作打印或流化图像 打印2D图像 流化2D图像 使用服务格式数据 打印服务格式数据 流化服务格式打印数据 示例:PrintPS.java 示例:PrintGIFtoStream.java 示例:Print2DPrinterJob.java 示例:Print2DGraphics.java 示例:Print2DtoStream.java 示例:PrintGIF.java Java Print Service 词汇表

java大作业编一个程序打印出公司月各员工工资

姓名:王镱澍 Java大作业 一、题目 白浪公司的雇员根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 雇员分为以下若干类: SalariedEmployee:拿固定工资的员工。 HourlyEmployee:按小时拿工资的员工。 SalesEmployee:销售人员,工资由月销售额和提成率决定。 BasePlusSalesEmployee:有固定底薪的销售人员,工资由底薪加上销售提成。 公司会给SalaryEmployee每月另外发放2000元加班费,给 BasePlusSalesEmployee发放1000元加班费。编一个java程序创建上述若干类,并实现确定月份以及该月不同员工的工作情况后打印出该公司该月各员工工资,公司总的工资支出情况。 二、程序功能说明 编一个java程序创建上述若干类,并实现确定该月不同员工的工作情况以及输入月份后打印出该公司该月各员工工资,公司总的工资支出情况。 三、类、属性、方法说明 程序中已给出详细解释在此只作简要说明: Employee:这是所有员工总的父类。 属性:员工的姓名和生日月份。 方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。 属性:月薪。 方法:每月工作超出160小时的部分按照倍工资发放。 HourlyEmployee:Employee的子类,按小时拿工资的员工。 属性:每小时的工资、每月工作的小时数。 SalesEmployee:Employee的子类,销售人员。 属性:月销售额、提成率。 方法:工资由月销售额和提成率决定。 BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员。 属性:底薪。 方法:工资由底薪加上销售提成部分。 四、程序代码 import .*; class MyException extends Exception {

打印java方法参数

打印Java方法参数 首先描述一下具体的需求就是,能不能不需要手动添加代码就能打印Java方法所有的参数,这有些时候在我们调试代码的时候有很重要的帮助。 按照这个需求,我们可以想一下我们大体需要一下什么信息,方法的名称,方法参数类型,方法参数的名字,方法参数的值。 如何实现不写代码就能够实现动态的打印这些信息呢,了解Java的这时候就都会想到动态代理。有了动态代理我们就可以不用写代码了,但是为了区分哪些方法需要打印,哪些方法不需要打印,我们这里还需要注解来辅助区分需要打印的方法。 如何获取需要打印的信息呢,这里我相信大家都会想到反射,但是反射这里有一个参数是拿不到的,哪个参数呢,方法参数的名字是拿不到的。这里我们采用的是asm的方式来获取方法参数的名字。 到这里功能已经描述清楚,需要用到的技术也描述清楚,接下来就是具体怎么实现了。 首先,我们设计了一个注解类如下: import https://www.360docs.net/doc/962067203.html,ng.annotation.ElementType; import https://www.360docs.net/doc/962067203.html,ng.annotation.Retention; import https://www.360docs.net/doc/962067203.html,ng.annotation.RetentionPolicy; import https://www.360docs.net/doc/962067203.html,ng.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public@interface MethodLog { } 接下来就是我们设计的最后要打印的数据的一个简单的封装类,如下: public class MethodInfo { private int index;//参数的索引 private Object parameterType;//参数的类型 private String parameterName;//参数的名称 private Object parameterValue;//参数的值 public MethodInfo(){} public MethodInfo(int index, Object parameterType, String parameterName, Object parameterValue) { super(); this.index = index; this.parameterType = parameterType; this.parameterName = parameterName; this.parameterValue = parameterValue; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; }

Java打印程序设计

Java打印程序设计 1 前言 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java提供的打印功能一直都比较弱。实际上最初的jdk根本不支持打印,直到jdk1.1才引入了很轻量的打印支持。所以,在以前用Java/Applet/JSP/Servlet设计的程序中,较复杂的打印都是通过调用ActiveX/OCX控件或者VB/VC程序来实现的,非常麻烦。实际上,SUN公司也一直致力于Java打印功能的完善,而Java2平台则终于有了一个健壮的打印模式的开端,该打印模式与Java2D图形包充分结合成一体。更令人鼓舞的是,新发布的jdk1.4则提供了一套完整的"Java 打印服务 API" (Java Print Service API),它对已有的打印功能是积极的补充。利用它,我们可以实现大部分实际应用需求,包括打印文字、图形、文件及打印预览等等。本文将通过一个具体的程序实例来说明如何设计Java打印程序以实现这些功能,并对不同版本的实现方法进行分析比较,希望大家能从中获取一些有益的提示。 2 Java中的打印 2.1 Java的打印API Java的打印API主要存在于java.awt.print包中。而jdk1.4新增的类则主要存在于javax.print 包及其相应的子包javax.print.event和javax.print.attribute中。其中javax.print包中主要包含打印服务的相关类,而javax.print.event则包含打印事件的相关定义,javax.print.attribute则包括打印服务的可用属性列表等。 2.2 如何实现打印 要产生一个打印,至少需要考虑两条: 需要一个打印服务对象。这可通过三种方式实现:在jdk1.4之前的版本,必须要实现java.awt.print.Printable接口或通过Toolkit.getDefaultToolkit().getPrintJob来获取打印服务对象;在jdk1.4中则可以通过javax.print.PrintSerivceLookup来查找定位一个打印服务对象。 需要开始一个打印工作。这也有几种实现方法:在jdk1.4之前可以通过java.awt.print.PrintJob(jdk1.1提供的,现在已经很少用了)调用print或printAll方法开始打印工作;也可以通过java.awt.print.PrinterJob的printDialog显示打印对话框,然后通过print方法开始打印;在jdk1.4中则可以通过javax.print.ServiceUI的printDialog显示打印对话框,然后调用print方法开始一个打印工作。 2.3 打印机对话框 2.3.1 Printable的打印对话框 开始打印工作之前,可以通过PrinterJob.printDialog来显示一个打印对话框。它给用户一个机会以选择应该打印的页码范围,并可供用户改变打印设置。它是一个本地对话框。

Java打印最

Java打印最大的改变来自于J2SE的发布带来的Java打印服务API。这个第三代Java打印支持接口突破了先前提到的使用javax.print包的PrintService和DocPrintJob接口的局限性。因为新的API就是以前两种旧的打印机制定义的功能函数的一个父集,它是目前我们常用的方法并且是这篇文章的焦点。 更深入来说,以下的步骤包含了怎么使用这个新的Java打印服务API: 1.定义打印机,限制那些返回到提供你要实现功能的函数的列表。打印服务实现了PrintService接口. 2.通过调用接口中定义的createPrintJob()方法创建一个打印事件,作为DocPrintJob 的一个实例。 3.创建一个实现Doc接口的类来描述你想要打印的数据, 你也可以创建一个PrintRequestAttributeSet的实例来定义你想要的打印选项。 4.通过DocPrintJob接口定义的printv()方法来初始化打印,指定你先前创建的Doc,指定PrintRequestAttributeSet或者设为空值。 现在你可以检查每一步并且试着完成它们。 注意 在这篇文章里,我将交替使用打印机和打印服务,因为在大部分情况下,打印服务不亚于一台真实的打印机。一般的打印服务反映了理论上可以发送到不仅仅是打印机的的输出。举例来说,打印服务也许根本不能打印东西但是可以往磁盘上的文件写数据。换句话说,所有的打印机可以看成是特殊的打印服务,但是并不是所有打印服务和打印机有联系。就像你一般把你的文本送到打印机那里一样,我有时候使用更为简便的打印机这个名词来代替技术上更精确的打印服务。 定义打印服务 你可以使用在PrintServiceLookup类中定义的三种静态方法中的一种来定义。最简单的一种就是lookupDefaultPrintService(),正如它的名字一样,它返回一个你默认的打印机: PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 虽然用这个办法很简单也很方便,用它来选择你的打印机意味着用户的打印机一直都支持你的程序所要精确传输的数据输出。实际上,你真正想要的是那种可以处理你想要的数据的类型并且可以支持你要的特征例如颜色或者两边打印。为了从列表中中返回你所要求的特殊功能支持的打印机,你可以使用剩下两个方法中的lookupPrintServices() 或者lookupMultiDocPrintServices()。

利用iText包实现Java报表打印

利用iText包实现Java报表打印 摘要:结合报表制作的两种情形介绍了iText的应用方法。一种是由程序对象动态产生整 个报表文件的内容,另一种是在已存在的PDF报表文档中填写数据域以完成报表。给出了Java 实现报表打印的控制方法。关键词: Java报表;iText包;动态报表;填充型报表;报表打 印 在信息系统应用中,报表处理一直起着比较重要的作用。Java报表制作中最常使用的是 iText组件,它是一种生成PDF报表的Java组件。本文讨论两种形式的PDF报表处理,一种 是通过程序对象生成整个PDF报表文档,另一种是利用制作好的含报表的PDF文档模板,通 过在模板填写数据实现数据报表。1 通过编程绘制实现报表的生成对于内容动态变化的 表格,适合使用程序绘制办法进行生成处理。这类表格中数据项和数据均是动态存在的。1.1 使用iText编程生成含报表的PDF文档的步骤[1] (1)建立Document对象。Document是 PDF文件所有元素的容器。 Document document = new Document(); (2)建立一个与 Document对象关联的书写器(Writer)。通过书写器(Writer)对象可以将具体文档存盘成需要 的格式,PDFWriter可以将文档保存为PDF文件。 PDFWriter.getInstance(document, new FileOutputStream("my.PDF")); (3)打开文档。如:document.open(); (4) 向文档中添加内容。所有向文档添加的内容都是以对象为单位的,iText中用文本块(Chunk)、 短语(Phrase)和段落(Paragraph)处理文本。 document.add(new Paragraph("Hello World"));//添加一个段落值得注意的是文本中汉字的显示,默认的iText字体设 置不支持中文字体,需要下载远东字体包iTextAsian.jar,否则不能往PDF文档中输出中文 字体[2]。 (5)关闭文档。如:document.close();1.2 表格绘制要在PDF文件中创建 表格,iText提供了两个类——Table和PdfPTable。Table类用来实现简单表格, PdfPTable类则用来实现比较复杂的表格。本文主要讨论PdfPTable类的应用。 (1)创建 PdfPTable对象创建PdfPTable对象只需要指定列数,不用指定行数。通常生成的表格 默认以80%的比例显示在页面上。例如定义3列的表格,每列的宽度分别为15%、25%和60%, 语句如下:float[] widths = {15f, 25f, 60f}; PdfPTable table = new PdfPTable(widths); 用setWidthPercentage(float widthPercentage)方法可设置表格 的按百分比的宽度。而用setTotalWidth则可设置表格按像素计算的宽度。如果表格的内容 超过了300 px,表格的宽度会自动加长。用setLockedWidth(true)方法可锁定表格宽度。通 过表格对象的系列方法可设置表格的边界以及对齐、填充方式。 (2)添加单元格表格 创建完成以后,可通过addCell(Object object)方法插入单元格元素(PdfPCell)。其中, Object对象可以是PdfPCell、String、Phrase、Image,也可以是PdfPTable对象本身,即 在表格中嵌套一个表格。通过单元格的方法可设定单元格的列跨度、边框粗细、对齐方式、 填充间隙等。 (3)合并单元格为了实现某些特殊的表格形式,需要合并单元格。 PdfPCell类提供了setColspan(int colspan)方法用于合并横向单元格,参数colspan为合 并的单元格数。但要合并纵向单元格需要使用嵌套表格的方法。将某个子表加入单元格,且 安排单元格所占列数为子表中列数,则其行跨度也就是子表中的行数。由于实际编程时, 经常出现各类结构的嵌套情形,可以将产生某种结构的表格模块进行封装,编制成方法,通 过传递方法参数完成表格特定模块的绘制。例如,可以将生成一个整齐行列表格的代码 编写成方法。方法返回表格,填充的数据通过二维对象数组传递。代码如下:public static PdfPTable creatSubTable(Object x[][]){ PdfPTable t= new PdfPTable(x[0].length); t.getDefaultCell ().setHorizontalAlignment (Element.ALIGN_CENTER); for (int k=0;k<x.length;k++) { for (int j=0;j<x[0].length;j++) t.addCell(new Phrase(x[k][j].toString(),FontChinese)); } return t;}

Java_实现iReport打印

iReport报表打印功能代码编写环境 系统:windows xp 开发工具:Myeclipes6.0 JDK版本:Java6(jdk6.0,jre6.0) 服务器:Tomcat5.5 Ireport版本:iReport-2.0.5 windows 安装版(iReport-2.0.5-windows-installer.exe) 实现步骤 一、iReport-2.0.5安装。选择安装路径默认安装(一直点击下一步)。 二、将iReprot的jasperreports-2.0.5.jar文件复制到Myeclipes中你工程的WEB-INF/lib目录下。 jasperreports-2.0.5.jar文件所在位置在你iReprot的安装路径下,我的是C:\Program Files\JasperSoft\iReport-2.0.5\lib。 三、要实现打印的Jsp文件编写,Jsp文件中打印按钮或者打印连接应该提交给一个javascript, 具体代码如: 打印 javascript代码如下 function print(oid){ if(!confirm("确定要打印该资格证吗?")) return ; window.showModalDialog('${ctx}/exam/exammanage/examprint_cert.jsp?oid=' +oid,'','dialogWidth:50px;dialogHeight:150px;dialogTop:1000px;dialogLef t:1000px'); document.forms[0].flg.value = "0"; document.forms[0].action="${ctx}/ExamPermitPrint.html"; document.forms[0].submit(); } 代码解释: 1、 window.showModalDialog('${ctx}/exam/exammanage/examprint_cert.jsp?oid=' +oid,'','dialogWidth:50px;dialogHeight:150px;dialogTop:1000px;dialogLef t:1000px'); 此段的功能是显示打印提示窗口,我的文件是WebRoot路径下/exam/exammanage/路径下的examprint_cert.jsp文件,而且需要传一个你所要打印的记录的唯一字段(数据库中唯一代表一条记录的字段),我这里用OID。 2.document.forms[0].action="${ctx}/ExamPermitPrint.html"; document.forms[0].submit(); 此代码是当你打印成功执行完之后要执行的代码,例如重新查询记录列表 四、打印提示窗口文件examprint_cert.jsp编写 examprint_cert.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

Java 打印事务

Java 打印事务 BufferedWriter和PrintWriter都可以写入数据,但BufferedWriter没有相关的格式化的方法,而PrintWriter可以在写入同时对写入的数据进行格式化。 JAVA屏幕大小获取方式 01.Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize(); 此语句可取得屏幕实际大小。如屏幕分辨率是1024*768时,scrSize.width的值为1024,scrSize.height的值为768。 02.Insets scrInsets=Toolkit.getDefaultToolkit().getScreenInsets(GraphicsEnvironment.getLocalGraphicsEnvironment() .getDefaultScreenDevice().getDefaultConfiguration()); 此语句用于取得屏幕已占用范围,如任务栏。scrInsets对象的left、right、top、bottom的值分别就是屏幕四边已占用的大小。 int w = this.getContext().getResources().getDisplayMetrics().heightPixels; int h = this.getContext().getResources().getDisplayMetrics().widthPixels; 关于JAVA的打印机设定 1、需要一个打印服务对象。这可通过三种方式实现: 在jdk1.4之前的版本,必须要实现java.awt.print.Printable接口 或通过Toolkit.getDefaultToolkit().getPrintJob来获取打印服务对象; 在jdk1.4中则还可以通过javax.print.PrintSerivceLookup来查找定位一个打印服务对象。 2、需要开始一个打印工作。 这也有几种实现方法: 在jdk1.4之前可以通过java.awt.print.PrintJob(jdk1.1提供的,现在已经很少用了)调用print或printAll方法开始打印工作; 也可以通过java.awt.print.PrinterJob的printDialog显示打印对话框,然后通过批print方法开始打印; 在jdk1.4中则可以通过javax.print.ServiceUI的printDialog显示打印对话框,然后调用print方法开始一个打印工作。 设置打印属性 使用如下方法可以获得PrintJob的实例用于控制打印操作: Toolkit.getPrintJob(Frame f, String jobtitle, Properties prop) 那么对于打印属性的设置可以通过对prop的属性设置来实现,打印属性包括: awt.print.destination: 可以是"printer"或"file" awt.print.printer: 打印机名 awt.print.fileName: 打印文件名

Java环境下实现JS Excel的自定制打印功能

Java环境下实现JS Excel的自定制打印功能 本文主要介绍了Java环境下如何实现SpreadJS(JS Excel)的自定制打印功能。 Spread.Sheets 提供了很多打印设置给用户,用来决定打印什么和如何打印。打印什么 以下内容是可以打印的。 ?在列头/行头/表单视图区域的可见行和可见列 ?单元格的文本 ?单元格的样式(包括背景图) ?单元格合并信息 ?单元格溢出文本 ?图片 以下内容无法被打印。 ?隐藏的行和列 ?浮动对象 ?备注 ?表单名称标签 ?滚动条 ?分组

?筛选按钮 ?校验按钮和高亮红色提示圈 ?活动状态 ?选择 ?冻结线 ?Spread的背景图 如何打印 1. 可以通过调用Workbook的print 方法来打印整个表单或打印指定表单。 2. 在每一个表单,你可以通过调用Worksheet的setRowPageBreak / Worksheet的setColumnPageBreak方法在指定行和指定列插入分页符。 3. 在每一个表单,你可以通过调用Sheet.printInfo方法来这是打印的详细设定。这里是一些可选项: 呈现: showGridLine: 是否打印网格线(默认是打印)。

showBorder: 是否打印控件的外边框线。 showColumnHeader / showRowHeader: 是否打印列头/行头,参数为PrintVisibilityType枚举值。 ?inherit: 继承自表单的设置((默认) 行头/列头可见)。 ?hide: 不打印。 ?show: 在每页中都显示。 ?showOnce: 显示一次(在第一页)。 打印一个区域: rowStart: 设定打印区域的开始行索引。 rowEnd: 设定打印区域的结束行索引。 columnStart: 设定打印区域的开始列索引。 columnEnd: 设定打印区域的结束列索引。

Java报表功能的三种实现方法

1概述 面对管理系统中复杂的数据,报表作为数据管理工具,帮助用户快速掌握原始数据中的基本关系,直观的让用户感受到数据的变化,使用户对事务最新的形势状况能够在第一时间掌握并做出正确的决策判断。传统处理报表的方式是使用Excel,Word等编辑软件进行人为的数据统计。这种人工统计数据、填写报表的方式不仅效率低下,还容易出错。为了提高单位工作人员协同办公效率,减少传统报表在生成和使用时所带来的不足之处。越来越多的单位选择使用信息化办公,即只向系统数据库录入一次数据,再根据数据库中已有数据集进行数据处理、报表打印。 2浏览器直接生成报表 利用浏览器自带的打印功能实现报表打印,无疑是所有实现打印报表功能方式中最直接的。客户端不用下载其他额外的插件,不需要多余的环境配置,便可以很方便的通过浏览器直接实现报表功能打印。 利用浏览器直接生成报表主要有以下4个步骤: 步骤一:建立数据库连接。 DBUil db=new DBUtil(); 步骤二:用JavaBean定义相应的数据操作语言,获取数据集。 public List getAlInfomationO{ List infomations=null://初始化报表数据集合 infomationsSuing sql="select*from infomations"; //生成数据库查询语句 infomations=db.getList(sql,null);//将数据集放入//集合infomations中retum infomations;} 步骤三:根据制作报表页面需要的样式。 //报表页面设计 </tite> <head>//设置网页标题 <body><body>//设计网页内容,例如:表格,div流//对象 </html> 步骤四:通过Jsp获取数据库中报表参数集并向前端传递。 <%ArayList infomations=(ArayListinfomations getAlInfomationO;//获取数据集 for(Object oinfomations){//遍历数据集,显示数据 Map m=(HashMap);%> <%=m.get"name");%> <%=}%> 这种实现报表打印功能有很大的局限性:一方面是使用浏览器打印报表需要对数据集的每个操作功能都写方法代码来进行获取,一旦所做的项目涉及到对多个相关数据源信息的操作,系统对数据库数据的操纵方法的实现代码就很繁复;另一方面是使用浏览器打印报表的控制不是很规范统一,例如:使用window.print()实现作者简介:邱泸谊(1999-),女,本科;黄俊杰(1998-),男,本科。 收稿日期:2018-11-05 Java报表功能的三种实现方法 邱泸谊,黄俊杰 (西华大学计算机技术与软件工程学院,成都610039) 摘要:在现代信息化管理系统中,报表担任着非常重要的数据分析和呈现工具的角色。可读性强的 报表系统可以把有效的信息转化为直观的图形化界面,方便使用者阅读数据信息,并为决策者提供精 准高效的决策依据,从而更好的进行企业市场需求分析和战略部署。随着web技术的发展,B/S架构模 式的信息管理系统越来越普遍,它的集成通用,灵活,低成本的报表生成方式是具有实际运用价值的。 主要介绍3种主流的报表功能的实现方案(浏览器、组件、拥有设计器的第三方软件)及其各自的优缺点,希望为读者在选择集成报表时提供一定的参考依据。 关键词:Java语言;Web 技术;报表打印 107 2019.02</p><h2>java表格打印的实现</h2><p>import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import javax.swing.table.TableModel; import java.awt.Font; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.BasicStroke; //------------------------打印类 class Print_V1 implements Printable { //@param Graphic指明打印的图形环境 //@param PageFormat指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595×842点) //@param pageIndex指明页号 String title;//表头 TableModel tm; int pound;//字体磅数 Printable printable; double base_with=0; int byte_count=0; int [] col_with; Print_V1(String title,TableModel tm,int pound) { this.title=title; this.tm=tm; this.pound=pound; } void getPrintable() { printable=new Print_V1(title,tm,pound); } //返回当前位置占的点数 double getlocal(int l) { double ww=0; for(int ll=1;ll<=l;ll++)</p><h2>java实现打印套打功能</h2><p>在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java提供的打印功能一直都比较弱。实际上最初的jdk根本不支持打印,直到jdk1.1才引入了很轻量的打印支持。所以,在以前用Java/Applet /JSP/Servlet设计的程序中,较复杂的打印都是通过调用ActiveX/OCX控件或者VB/VC程序来实现的,非常麻烦。实际上,SUN公司也一直致力于Java打印功能的完善,而Java2平台则终于有了一个健壮的打印模式的开端,该打印模式与Java2D图形包充分结合成一体。更令人鼓舞的是,新发布的jdk1.4则提供了一套完整的"Java 打印服务API" (Java Print Service API),它对已有的打印功能是积极的补充。利用它,我们可以实现大部分实际应用需求,包括打印文字、图形、文件及打印预览等等。本文将通过一个具体的程序实例来说明如何设计Java打印程序以实现这些功能,并对不同版本的实现方法进行分析比较,希望大家能从中获取一些有益的提示。 package test; import java.awt.print.*; import java.awt.*; /*实现套打,把套打的格式当成一张图片,将要填入的数据按其在图片在坐标来定位*/ public class PrintTest implements Printable { private String[] value = null;// 所要打印的数据{ "001", "002", "003"}; private int[][] position = null;// 每个数据在图片中的坐标{ { 10, 50 }, { 30, 70 }, { 50, 90 }}; /** * implements Printable * PageFormat类描述了页面的定位信息、它的尺寸以及每英尺可绘制的区域(单位1/72nd)。 */ public int print(Graphics g, PageFormat pf, int pageIndex) {</p><h2>java打印机API</h2><p>1EUC 可用于编码各种亚洲字符集中的字符。 2类DocFlavor 封装了一个对象,该对象指定提供给DocPrintJob的打印数据的格式。"Doc" 是一个简短、易于发音的术语,指“部分打印数据”。打印数据格式,即"doc flavor" 由两方面的内容组成: ?MIME 类型。这是一个多用途的Internet 邮件扩展(MIME) 媒体类型(在RFC 2045和RFC 2046中定义),指定了如何解释打印数据。文本数据的字符集应该是IANA MIME 优先名称,如果未指定优先名称,则使用其规范名称。另外也可识别较早Java 平台版本所支持的一些历史名称。有关Java 平台所支持的字符编码的更多信息,请参阅字符编码。 ?表示形式类名。这指定了提供实际打印数据的对象的完全限定类名,由Class.getName()方法返回。(因此byte[] 的类名是"[B",char[] 的类名是"[C"。) DocPrintJob 通过接口Doc(javax.print接口Doc)获得其打印数据。Doc 对象允许DocPrintJob 来确定客户端可以提供的doc flavor。Doc 对象还允许DocPrintJob 获得一个doc flavor 的表示形式类的实例,然后DocPrintJob 可从中获得实际的打印数据。 3客户端格式化打印数据 有两大类的打印数据:客户端格式的打印数据和服务格式的打印数据。 对于客户端格式的打印数据,客户端确定或知道该打印数据格式。例如,客户端可能有JPEG 编码的图像、HTML 代码的URL 或以某种编码形式包含纯文本的磁盘文件(可能从外部源获得),并且需要某种方式向打印服务描述数据格式。 doc flavor 的表示形式类是JPS DocPrintJob 的一个管道,可从客户端获得字符或byte 序列。doc flavor 的MIME 类型是标准的媒体类型之一,通知如何解释字符或byte 序列。有关标准媒体类型的列表,请参阅Internet 编号分配机构(IANA) 的媒介类型目录。接口Doc 提供两个实用操作:getReaderForText和getStreamForBytes(),用来帮助Doc 对象的客户端提取客户端格式的打印数据。 对于客户端格式化打印数据,打印数据表示形式类通常是以下之一(虽然也允许使用其他表示形式类): ?字符数组(char[]) -- 打印数据由数组中的Unicde 字符所组成。 ?String-- 打印数据由string 中的Unicde 字符组成。 ?字符流(java.io.Reader) -- 打印数据由从流中读取(一直读取到流的末尾)的Unicode 字符组成。 ?Byte 数组(byte[]) -- 打印数据由数组中的byte 所组成。这些byte 在doc flavor 的MIME 类型所指定的字符集中编码。如果MIME 类型未指定某个字符集,则默认的字符集是US-ASCII。 ?Byte 流(java.io.InputStream) -- 打印数据由从流中读取(一直读取到流的末尾)的byte 所组成。这些byte 在doc flavor 的MIME 类型所指定的字符集中编码。如果MIME 类型未指定某个字符集,则默认的字符集是US-ASCII。 ?统一资源定位符(URL) -- 打印数据由从URL 位置读取的byte 所组成。这些byte 在doc flavor 的MIME 类型所指定的字符集中编码。如果MIME 类型未指定某个字</p><h2>java实现调用打印机</h2><p>1.import java.io.File; 2.import java.io.FileInputStream; 3. 4.import javax.print.Doc; 5.import javax.print.DocFlavor; 6.import javax.print.DocPrintJob; 7.import javax.print.PrintService; 8.import javax.print.PrintServiceLookup; 9.import javax.print.ServiceUI; 10.import javax.print.SimpleDoc; 11.import javax.print.attribute.DocAttributeSet; 12.import javax.print.attribute.HashDocAttributeSet; 13.import javax.print.attribute.HashPrintRequestAttributeSet; 14.import javax.swing.JFileChooser; 15. 16. /** 17. * 建立与打印机的连接 18. * @author Administrator 19. * 20. */ 21.public class PrintDemo { 22. 23. public static void main(String[] args) { 24. JFileChooser fileChooser = new JFileChooser(); //创建打印作业 25. int state = fileChooser.showOpenDialog(null); 26. if(state == fileChooser.APPROVE_OPTION){ 27. File file = new File("D:/zkyzl.txt"); //获取选择的文件 28. //构建打印请求属性集 29. HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 30. //设置打印格式,因为未确定类型,所以选择autosense 31. DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 32. //查找所有的可用的打印服务 33. PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras ); 34. //定位默认的打印服务 35. PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); 36. //显示打印对话框 37. PrintService service = ServiceUI.printDialog(null, 200, 200, printService, 38. defaultService, flavor, pras); 39. if(service != null){ 40. try { 41. DocPrintJob job = service.createPrintJob(); //创建打印作业 42. FileInputStream fis = new FileInputStream(file); //构造待打印的文件流 43. DocAttributeSet das = new HashDocAttributeSet();</p></div> <div class="rtopicdocs"> <div class="coltitle">相关主题</div> <div class="relatedtopic"> <div id="tabs-section" class="tabs"> <ul class="tab-head"> <li id="14354022"><a href="/topic/14354022/" target="_blank">java实现打印功能</a></li> </ul> </div> </div> </div> </div> <div id="rightcol" class="viewcol"> <div class="coltitle">相关文档</div> <ul class="lista"> <li><a href="/doc/1d12802170.html" target="_blank">java大作业编一个程序打印出公司月各员工工资</a></li> <li><a href="/doc/5f8210757.html" target="_blank">Java_实现iReport打印</a></li> <li><a href="/doc/ab5052963.html" target="_blank">用Java实现打印</a></li> <li><a href="/doc/e29453358.html" target="_blank">java调用条码打印机</a></li> <li><a href="/doc/0e5586407.html" target="_blank">java打印机</a></li> <li><a href="/doc/333014074.html" target="_blank">Java打印最</a></li> <li><a href="/doc/6614452614.html" target="_blank">Java 打印事务</a></li> <li><a href="/doc/b410024532.html" target="_blank">java打印机API</a></li> <li><a href="/doc/e618296123.html" target="_blank">java打印功能开发手册</a></li> <li><a href="/doc/149416066.html" target="_blank">JavaPrintService_Java打印API_用户手册_中文版</a></li> <li><a href="/doc/5a5601761.html" target="_blank">Java实现打印功能教程文件</a></li> <li><a href="/doc/946333109.html" target="_blank">Java报表功能的三种实现方法</a></li> <li><a href="/doc/e63792431.html" target="_blank">java拖拽设计模板打印</a></li> <li><a href="/doc/f59381328.html" target="_blank">java大作业编一个程序打印出公司各员工工资</a></li> <li><a href="/doc/2416635878.html" target="_blank">Java打印程序设计</a></li> <li><a href="/doc/669190416.html" target="_blank">java文本打印机源码含打印预览</a></li> <li><a href="/doc/b65842759.html" target="_blank">java实现打印套打功能</a></li> <li><a href="/doc/e115422203.html" target="_blank">java编程 记事本 全部功能都实现</a></li> <li><a href="/doc/17101355.html" target="_blank">JAVA实现打印机的打印功能</a></li> <li><a href="/doc/3818722563.html" target="_blank">利用iText包实现Java报表打印</a></li> </ul> <div class="coltitle">最新文档</div> <ul class="lista"> <li><a href="/doc/0f19509601.html" target="_blank">幼儿园小班科学《小动物过冬》PPT课件教案</a></li> <li><a href="/doc/0119509602.html" target="_blank">2021年春新青岛版(五四制)科学四年级下册 20.《露和霜》教学课件</a></li> <li><a href="/doc/9b19184372.html" target="_blank">自然教育课件</a></li> <li><a href="/doc/3019258759.html" target="_blank">小学语文优质课火烧云教材分析及课件</a></li> <li><a href="/doc/d819211938.html" target="_blank">(超详)高中语文知识点归纳汇总</a></li> <li><a href="/doc/a419240639.html" target="_blank">高中语文基础知识点总结(5篇)</a></li> <li><a href="/doc/9d19184371.html" target="_blank">高中语文基础知识点总结(最新)</a></li> <li><a href="/doc/8a19195909.html" target="_blank">高中语文知识点整理总结</a></li> <li><a href="/doc/8519195910.html" target="_blank">高中语文知识点归纳</a></li> <li><a href="/doc/7f19336998.html" target="_blank">高中语文基础知识点总结大全</a></li> <li><a href="/doc/7119336999.html" target="_blank">超详细的高中语文知识点归纳</a></li> <li><a href="/doc/6619035160.html" target="_blank">高考语文知识点总结高中</a></li> <li><a href="/doc/6719035161.html" target="_blank">高中语文知识点总结归纳</a></li> <li><a href="/doc/4a19232289.html" target="_blank">高中语文知识点整理总结</a></li> <li><a href="/doc/3b19258758.html" target="_blank">高中语文知识点归纳</a></li> <li><a href="/doc/2619396978.html" target="_blank">高中语文知识点归纳(大全)</a></li> <li><a href="/doc/2b19396979.html" target="_blank">高中语文知识点总结归纳(汇总8篇)</a></li> <li><a href="/doc/1419338136.html" target="_blank">高中语文基础知识点整理</a></li> <li><a href="/doc/ed19066069.html" target="_blank">化工厂应急预案</a></li> <li><a href="/doc/bd19159069.html" target="_blank">化工消防应急预案(精选8篇)</a></li> </ul> </div> </div> <script> var sdocid = "91b4136809a1284ac850ad02de80d4d8d05a0142"; </script> <div class="clearfloat"></div> <div id="footer"> <div class="ft_info"> <a href="https://beian.miit.gov.cn">闽ICP备16038512号-3</a> <a href="/tousu.html" target="_blank">侵权投诉</a>  ©2013-2023 360文档中心,www.360docs.net | <a target="_blank" href="/sitemap.html">站点地图</a><br /> 本站资源均为网友上传分享,本站仅负责收集和整理,有任何问题请在对应网页下方投诉通道反馈 </div> <script type="text/javascript">foot()</script> </div> </body> </html>