`
tiansoft
  • 浏览: 174045 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

java实现Excel和图片的打印预览

    博客分类:
  • java
 
阅读更多
今天忙了一天,终于把打印预览的功能给实现了,因为昨天写了两个打印的方法,感觉到既然打印要预览才可以的
一:Excel打印预览:
首先还是一样,引入JCom.jar,并把bin文件放入JDK/bin目录下才可以
代码如下:
/**
* 引入JCom操作Excel的jar
*/
import jp.ne.so_net.ga2.no_ji.jcom.ReleaseManager;  
import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelApplication;  
import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelWorkbook;  
import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelWorkbooks;  
import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelWorksheet;  
/**
* 预览Excel的类
* @author tianmaochun
*
*/
public class PrintViewExcel{

    /**
     * 实线Excel预览的类
     * @param fileName[图片的路径]
     *
     */
public void getExcelView(String fileName){
ReleaseManager rm = new ReleaseManager();  
        try{
        //创建可加载的组件
        ExcelApplication excel = new ExcelApplication(rm);  
             //创建工作薄对象
        ExcelWorkbooks xlBooks = excel.Workbooks();
        //打开工作薄
             ExcelWorkbook xlBook = xlBooks.Open(fileName);
             //打印
             ExcelWorksheet xlSheet = excel.ActiveSheet();
         //显示Excel
             excel.Visible(true);
             //输出页面
         xlSheet.PrintOut(1,1,1,true);   
         //关闭
         xlBook.Close(false,  null,  false);
         excel.Quit();
    }catch  (Exception  e)  {
         e.printStackTrace();
            
    }finally  {
         rm.release();
    }
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PrintViewExcel prview = new PrintViewExcel();
prview.getExcelView("f:/tian.xls");

}

}
二:打印预览图片:
package com.gyhq.soft;

import java.awt.BasicStroke;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 打印预览窗体类
* @author tianmaochun
*
*/
public class PrintViewImage extends JDialog implements Printable,ActionListener{

//初始化页面的大小和方向
private PageFormat pf = null;
private double sca =1;
//初始化一个img对象
private Image img = null;
//定义一个Button
private JButton but = null;
//定义一个图片的路径
String fileName = null;
/**
* 构造方法
*/
public PrintViewImage(String fileName){
this.fileName = fileName;
initFrame();
}
public void getView(){
//实例化
pf = new PageFormat();
//获取预览图片的路径
img = Toolkit.getDefaultToolkit().getImage(fileName);
}
/**
* 初始化页面的方法
*/
private void initFrame() {
//定义一个容器
        Container container = this.getContentPane();
        this.setTitle("打印预览");
        this.setResizable(false);
        but = new JButton("打印");
        but.setBounds(600, 715, 100, 30);
        but.addActionListener(this);
        this.add(but);
        //实例化预览类
        PreviewCanvas priView = new PreviewCanvas();
        //添加到容器之中去
        container.add(priView);
        //显示
        this.pack();
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        //关闭
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
/**
* 预览类
* @author tianmaochun
*
*/
private class PreviewCanvas extends JPanel {
        //private static final long serialVersionUID = 20110208L;
        /**
         * 构造方法
         */
        public PreviewCanvas() {
        //设置窗体的大小
            this.setPreferredSize(new Dimension(800, 750));
        }

        /**
         * 画预览区域
         */
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D) g;
            g2.translate(10, 10);
            //获取页面宽度
            double width = pf.getWidth();
            //获取页面的高度
            double height = pf.getHeight();
            //返回左上方X
            double imageableX = pf.getImageableX();
            //返回左上方Y
            double imageableY = pf.getImageableY();
            //返回页面可成像区域的宽度
            double imageableWidth = pf.getImageableWidth();
            //返回页面可成像区域的高度
            double imageableHeight = pf.getImageableHeight();
            if (width > 800 || height >700) {
                double scaleWidth = (double) 800 / width;
                double scaleHeight = (double) 700 / height;
                sca = scaleWidth < scaleHeight ? scaleWidth : scaleHeight;
                width = width * sca;
                height = height * sca;
                imageableX = imageableX * sca;
                imageableY = imageableY * sca;
                imageableWidth = imageableWidth * sca;
                imageableHeight = imageableHeight * sca;
            }
            //画一个实线的矩形
            g2.drawRect(0, 0, (int) width+200, (int) height);
            float[] dash = { 5f, 5f };
            //定义虚线类型
            g2.setStroke(new BasicStroke(1f, BasicStroke.CAP_ROUND,
                    BasicStroke.JOIN_ROUND, 10f, dash, 0f));
            //画虚线矩形
            g2.drawRect((int) (imageableX - 1), (int) (imageableY - 1),
                    (int) (imageableWidth + 2)+200, (int) (imageableHeight + 2));
            try {
            //画相应的图片在框中
PrintViewImage.this.print(g2, pf, 0);
} catch (PrinterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        }
    }
/**
* 复写Printtable的方法
*/
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
//获取最左X坐标
double imageableX = pageFormat.getImageableX();
//获取最左Y坐标
double imageableY = pageFormat.getImageableY();
//获取图片的宽度
        int imgWidth = img.getWidth(this);
        //获取图片的高度
        int imgHeight = img.getHeight(this);
        //判断图片的大小是否大于页面的宽度
        if(imgWidth>800||imgHeight>750){
        //规定大小画图片在框中
        graphics.drawImage(img, (int) (imageableX * sca),(int) (imageableY * sca), 610,
                    570,  this);
        }else{
        //根据图片大小预览
        graphics.drawImage(img, (int) (imageableX * sca),(int) (imageableY * sca), (int) (imgWidth * sca),
                     (int) (imgHeight * sca),  this);
        }
        if (pageIndex == 0) {
        //从print页面中返回
            return Printable.PAGE_EXISTS;
        } else {
        //返回呈现的页面
            return Printable.NO_SUCH_PAGE;
        }

}
/**
* 按钮事件
*/
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==but){
//实例化相应的类并调用打印相应的方法
PrintImage dp = new PrintImage();
dp.drawImage(fileName);
}

}  
/**
* 主函数的方法
* @param args
*/
public static void main(String[] args){
new PrintViewImage("img/tt.gif").getView();
}
}







分享到:
评论

相关推荐

    java 实现Excel报表打印输出 一看就会用 而且高效率,有注释

    我整理的利用java代码导出数据库的数据 并保存到Excel表格当中 常用的 移植性高

    NOPI实现Excel的打印

    NPOI,顾名思义,就是POI的.NET...NPOI是构建在POI 3.x版本之上的,本月发布的NPOI 1.2是对应于POI 3.2 final的,所以它支持Excel文件读写,但由于人手和精力原因,还没有实现读写Word, PowerPoint, Visio的文件格式。

    java调用vbs获取获取excel各sheet页打印总数

    poi无法直接获取excel各sheet页打印页数,调用vbs脚本获取excel各sheet页打印预览总页数。

    一个简易的POI操作EXCEL表页面打印格式的java方法类

    java POI 如何操作EXECL表的打印页面设置,应用较少,但用好了可收到“一键预览打印的格式效果”,各打印页面要素设置方法汇集于这里,亲测成功,方法齐全,共大家参考。

    Java平台Excel文档处理类库API-Free Spire.XLS for Java

    1.功能:该API为适用于Java平台下,通过后端程序代码调用API接口操作Excel文档。通过方法可实现如下功能: 1.1 文档格式转换:Excel转PDF/图片/HTML/XPS/SVG/XML/CSV/TIFF/ET/ETT/OFD/、XML转Excel等。 1.2 文档...

    JasperReport与Java程序,导出不同格式的报表,包括pdf,excel,html,报表打印等功能

    使用开源报表jasperReport,并结合irport前端报表设计器,使用Java程序实现报表的不同格式的导出,包括pdf,excel,html,打印预览等功能,程序包含所需Jar包,并有详细的注释

    flutter_file_preview:用于Flutter App的PDF,Word,Excel和PowerPoint Viewer

    支持同时支持本地和在线PDF、Word、Excel、PowerPoint等文件预览。Android使用的是iOS使用的是原生WKWebView使用方法pubspec.yaml中添加file_preview: git: url: git://github.com/aliyoge/flutter_file_preview.git...

    封装好的一套javascript操作Excel的javabean

    实现javascript操作Excel进行报表输出的javabean接口类,通过调用bean的方法快速生成客户端的javascript来操作Excel,实现读取Excel模板,添加记录,打印设置,打印预览,自动保存文件等功能,本人多年的web开发经验...

    很好用的java编辑office所需库文件

    实现在web网页里打开、编辑、打印预览、打印Word、Excel、PowerPoint等Office文档,又不影响网页布局美观。 在线只读安全浏览Word、Excel、PowerPoint、PDF等Office文档,防复制粘贴、下载、打印等。

    账单管理及报表

    JAVA Swing 作的账单管理系统,往来单位管理,账单管理,下拉框联动技术;按日期进行报表查询,Ireport报表预览和打印,excel报表打印,数据库备份等。

    久其表格OCX控件(共享版)

    8. 提供打印预览功能,并允许用户在线调整打印效果; 9. 录入方式灵活,支持下拉列表、日期编辑框、下拉树形控件等多种编辑控件; 10. 结合久其ezReport报表开发组件使用,可以提供客户端报表展示和...

    NTKO文档在线编辑控件独立安装包4.0.6.5(适合TA2009\2010\2011版本)

    另外支持OfficeXP和Office2003中Excel的打印预览。 ★ 轻量级,只有不足60K 使用C语言直接开发COM接口,简洁高效,对内核函数的直接调用使得无需其它动态链接库的支持,兼容性极好! ★ 在下载和上载Office文档时...

    SOAOFFICE - 微软 OFFICE 中间件

    6. 需要在html页面中显示复杂报表,并要求精确打印预览及打印的; 7. 需要动态生成中国式复杂格式报表的; 8. 需要在html页面中输入复杂票据的; 9. 使用COM服务器自动化技术调用Word/Excel经常产生死进程或系统不...

    NTKO文档在线编辑控件4.0.1.2

    另外支持OfficeXP和Office2003中Excel的打印预览。 23 轻量级 使用C语言直接开发COM接口,简洁高效,对内核函数的直接调用使得无需其它动态链接库的支持,兼容性极好! 24 在下载和上载Office文档时不会产生临时...

    锐浪报表Grid++Report5.3

    提供独有的报表查询显示功能,让报表查询显示、打印、打印预览及数据导出等功能集成一体化实现。轻松实现表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、表中表及各种特殊报表等,是中式报表的最佳开发...

    Crk Report 报表平台程序及功能简介

    2、Web Crk Report企业版ActiveX控件:支持打印预览、打印等功能,并提供给第三方应调用的集成接口API,支持从报表外部传入复杂的查询条件,支持.Net(ASP),J2EE(Java)、PHP、HTML等网页界面中调用,该功能需要与Crk ...

Global site tag (gtag.js) - Google Analytics