`
tiansoft
  • 浏览: 176108 次
  • 性别: 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 web在线预览pdf、word、excel

    通过以上步骤,我们就可以实现一个完整的Java Web在线预览PDF、Word、Excel文件的服务。这个过程涵盖了后端开发、前端展示以及中间的数据转换,是Web开发中一项重要的技能。无论是在企业级应用还是个人项目中,这一...

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

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

    java打印Excel(与打印机通信、jacob)

    这个API提供了一系列接口和类,允许开发者控制打印任务,包括选择打印机、设置打印参数、预览和发送数据到打印机。然而,对于特定格式如Excel,Java Print Service API可能无法直接处理,这就需要引入像Jacob这样的...

    NOPI实现Excel的打印

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

    java打印Excel源码(jcom)

    在这个压缩包中,你可能会找到使用JCOM进行Excel打印的具体实现代码。 首先,我们需要理解Java中打印的基本概念。在Java中,打印主要是通过`java.awt.print`包中的类来实现的,如`PrinterJob`、`PageFormat`和`...

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

    在Java编程中,有时我们需要处理Excel文件,特别是涉及到打印页数的计算时。...在非Windows环境下,可能需要寻找其他替代方案,例如使用Python的pandas库,或者寻找支持计算Excel打印页数的Java库。

    jsp开发实现wordexcel的在线预览

    本文将深入探讨如何使用JSP技术来实现Word和Excel文档的在线预览功能,这对于许多Web应用程序来说是一项非常实用的功能,能够极大地提升用户体验。 首先,要实现在线预览,我们需要理解JSP的基础工作原理。JSP是由...

    java在线预览编辑打印集成ueditor,lodop

    它可以实现在浏览器中直接打印、预览文档,支持PDF、Word、Excel、图片等多种格式,无需安装额外的软件或插件。LODOP的API简单易用,对于Java开发者来说,可以通过调用其提供的HTTP接口与Java服务进行交互,实现远程...

    java 打印 EXCEL与PDF.rar

    Java打印Excel和PDF是软件开发中的常见任务,尤其在企业级应用中,数据报表和文档输出至关重要。这个压缩包文件“java 打印 EXCEL与PDF.rar”显然包含了一些资源和示例,帮助开发者理解如何在Java环境中处理这两种...

    Linux/win java预览word,并实现打印,各大主流浏览器都支持

    根据给定文件信息,以下是针对Linux/Windows环境下使用Java预览和打印Word文档,并确保主流浏览器支持的相关知识点。 首先,文档中提到的Java实现预览Word文档的思路是先将Word转换为PDF格式,然后利用iframe来预览...

    Java Jsp 调用ireport动态模板打印

    在这个场景下,我们主要讨论如何利用iReport创建动态模板,以及如何通过JSP和Java代码来调用这些模板实现热敏单的打印。 首先,我们需要了解iReport的基本使用。iReport允许开发者设计复杂的报表布局,包括表格、...

    利用java访问excel(用excel文件格式显示)

    确保在CSS中设置好打印样式,以便在打印预览中获得良好的布局。 4. **性能优化和安全考虑**: - 大文件处理:对于大型Excel文件,一次性加载所有数据可能导致内存问题。可以使用流式处理或分批读取数据。 - 错误...

    用 Java 打印表格 到A4纸的可用代码

    根据给定文件的信息,本文将深入探讨如何使用Java打印表格到A4纸上,并解析相关代码实现。这将涉及Java打印的基础知识、API介绍以及具体的代码实现细节。 ### Java打印基础知识 在Java中,打印功能主要通过`java....

    java实现word在线编辑及流转

    PageOffice是由北京思特奇信息技术股份有限公司开发的一款Java组件,专门用于处理Office文档的在线编辑、查看和打印等操作。它支持多种Office格式,包括Word、Excel和PowerPoint,能够无缝嵌入到Web应用中,提供用户...

    jacob打印机打印本地的excel和word

    总之,Jacob为Java开发者提供了便利,能够通过Java代码直接操作本地的Excel和Word,实现文档的打印功能。然而,这种方法仅限于Windows环境,对于跨平台应用可能不是最佳选择。在其他操作系统上,可以寻找替代方案,...

    实现jsp页面里的内容通过Excel打印输出来

    本篇文章将详细讲解如何在JSP页面中实现内容的Excel打印输出,以及相关的预览和定制打印规格功能。 首先,我们要了解JSP(JavaServer Pages)是一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码,从而在...

    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 文档...

    Java打印Excel文件所用的组件 jacob-1.14.3-x64

    可以指定是否打印预览、是否显示对话框等。 7. **关闭资源**:最后,记得关闭打开的工作簿和Excel应用程序,释放COM组件,防止资源泄漏。 在实际应用中,还需要注意以下几点: - `jacob`只支持Windows平台,因为它...

    java解析excel文档及jar包

    - 打印预览:允许用户在打印前查看Excel内容的打印样式。 - 自定义打印设置:如页边距、纸张大小、方向等。 - 多页打印支持:将大工作表分割成多页进行打印。 - 页眉和页脚:在打印的每一页上添加定制的页眉和页尾...

    BT打印示例

    6. **实例化和控制BarTender对象**:在Java程序中,首先需要创建BarTender的应用实例,然后通过这个实例来执行各种操作,如打开模板、设置数据源、预览和打印等。 7. **错误处理和日志记录**:在集成过程中,必须...

Global site tag (gtag.js) - Google Analytics