Java如何直接打印excel文件!

时间:2021-10-28 17:53:10
请教一下,在java中如何来直接打印一个excel文件,也就是不打开这个excel文件 直接打印,
在baidu+google搜索了很长时间没有什么发现,好像是不太好实现的,不知道有没有这方面经验的朋友介绍一下;有例子更好了
谢谢……

13 个解决方案

#1


java直接打印的话,如何体现出来是按excel的格式设计的呢,你直接打印出来,格式就是WEB网页的格式,跟直接打excel也没有什么两样

#2


你可以在后台打开啊,就是虽然打开,但是并没有显示出来。
如果不打开就打印,感觉上思路有些不对,因为这样的话,就意味着要自己写程序读Excel文件的格式了啊。

#3


多谢楼上两位朋友,我的意思就是要保证还是excel的格式,也就是通过java程序调用excel的打印功能,不知道可行不?
楼上朋友说后台打开,具体怎么操作能不能给个例子? 谢了

#4


感觉不打开EXCEL直接打印自己写方法还是很困难的,看有没有什么第3方的软件吧。
我印象中有能用JAVA编辑EXCEL的第3方控件。

#5


编辑读写excel的有,但是就不支持打印的功能,poi这个包我也没研究太明白,读写是没问题,好像打印也不行

#6


我也想知道,还有如何直接打印预览

#7


package myexcel.jxl.base;

import jxl.write.WritableWorkbook;
import jxl.Workbook;
import java.io.File;
import java.io.*;
import jxl.write.WritableSheet;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.*;
import jxl.format.UnderlineStyle;
import jxl.format.PageOrientation;
import jxl.format.PaperSize;
import java.sql.Date;
import jxl.biff.EmptyCell;

public class Creatxls {
    public Creatxls() {
    }

    public static void main(String[] args){
        WritableWorkbook myexcel=null;
        try {
            myexcel = Workbook.createWorkbook(new File("我的EXCEL.xls"));
        } catch (IOException ex) {
        }

        WritableSheet mysheet=myexcel.createSheet("第一页",0);

        //合并单元格
        try {
            mysheet.mergeCells(10, 10, 13, 13);
        } catch (WriteException ex4) {
        }

        //设置打印属性
        //第一个参数为方向,第二个为纸张大小,第三个为设置页眉的高度,第四个设置页脚的高度
        mysheet.setPageSetup(PageOrientation.LANDSCAPE,PaperSize.A5,1.5,2.0);

        Label mylabel=new Label(0,0,"wuwenjun");
        WritableFont font=new WritableFont(WritableFont.TIMES, 18,
                                         WritableFont.BOLD, true,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
        WritableCellFormat wcf=new WritableCellFormat(font);
        Label label=new Label(3,0,"彩色字",wcf);


        //设置日期格式
        jxl.write.DateFormat df=new DateFormat("yyyy-mm-dd");
        jxl.write.WritableCellFormat wcfD = new jxl.write.WritableCellFormat(df);
        Date dd=new Date(System.currentTimeMillis());
        DateTime mydate=new DateTime(5,5,dd,wcfD);


        //定义样式
        WritableCellFeatures ewcf=new WritableCellFeatures();
        ewcf.setComment("wuwenjun");
        WritableCellFormat ecf=new  WritableCellFormat();
        try {
            ecf.setBackground(Colour.RED);
        } catch (WriteException ex3) {
        }

        //blank
        jxl.write.Blank blank=new Blank(6,6);
        blank.setCellFeatures(ewcf);
        blank.setCellFormat(ecf);

        //emptycell
        EmptyCell emptycell=new EmptyCell(7,7);
        emptycell.setCellFeatures(ewcf);
        emptycell.setCellFormat(ecf);


        //设置数字格式
        jxl.write.NumberFormat nf = new jxl.write.NumberFormat("###,###,###,###,###.##");
        jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
        //设置单元格的边框样式
        try {
            wcfN.setBorder(Border.ALL, BorderLineStyle.THIN);
        } catch (WriteException ex1) {
        }

        Number mynumber=new Number(3,3,56566454.1212121,wcfN);


        try {
            mysheet.addCell(mylabel);
            mysheet.addCell(mynumber);
            mysheet.addCell(label);
            mysheet.addCell(mydate);
            mysheet.addCell(blank);
            mysheet.addCell(emptycell);

            myexcel.write();
            if(myexcel!=null)
                myexcel.close();
            }
          catch (WriteException ex2) {
          }
          catch (IOException ex2) {
          }
    }
}

#8


楼上朋友提供的也只是读写excel文件吧?JXL包支持直接打印吗?
下载了看看

#9


jxl

#10


如果这实现了,那么web打印估计就不成问题了...

#11


mark!

#12


wordml

#13


学习中。。。。。。。。。。。

#1


java直接打印的话,如何体现出来是按excel的格式设计的呢,你直接打印出来,格式就是WEB网页的格式,跟直接打excel也没有什么两样

#2


你可以在后台打开啊,就是虽然打开,但是并没有显示出来。
如果不打开就打印,感觉上思路有些不对,因为这样的话,就意味着要自己写程序读Excel文件的格式了啊。

#3


多谢楼上两位朋友,我的意思就是要保证还是excel的格式,也就是通过java程序调用excel的打印功能,不知道可行不?
楼上朋友说后台打开,具体怎么操作能不能给个例子? 谢了

#4


感觉不打开EXCEL直接打印自己写方法还是很困难的,看有没有什么第3方的软件吧。
我印象中有能用JAVA编辑EXCEL的第3方控件。

#5


编辑读写excel的有,但是就不支持打印的功能,poi这个包我也没研究太明白,读写是没问题,好像打印也不行

#6


我也想知道,还有如何直接打印预览

#7


package myexcel.jxl.base;

import jxl.write.WritableWorkbook;
import jxl.Workbook;
import java.io.File;
import java.io.*;
import jxl.write.WritableSheet;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.*;
import jxl.format.UnderlineStyle;
import jxl.format.PageOrientation;
import jxl.format.PaperSize;
import java.sql.Date;
import jxl.biff.EmptyCell;

public class Creatxls {
    public Creatxls() {
    }

    public static void main(String[] args){
        WritableWorkbook myexcel=null;
        try {
            myexcel = Workbook.createWorkbook(new File("我的EXCEL.xls"));
        } catch (IOException ex) {
        }

        WritableSheet mysheet=myexcel.createSheet("第一页",0);

        //合并单元格
        try {
            mysheet.mergeCells(10, 10, 13, 13);
        } catch (WriteException ex4) {
        }

        //设置打印属性
        //第一个参数为方向,第二个为纸张大小,第三个为设置页眉的高度,第四个设置页脚的高度
        mysheet.setPageSetup(PageOrientation.LANDSCAPE,PaperSize.A5,1.5,2.0);

        Label mylabel=new Label(0,0,"wuwenjun");
        WritableFont font=new WritableFont(WritableFont.TIMES, 18,
                                         WritableFont.BOLD, true,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
        WritableCellFormat wcf=new WritableCellFormat(font);
        Label label=new Label(3,0,"彩色字",wcf);


        //设置日期格式
        jxl.write.DateFormat df=new DateFormat("yyyy-mm-dd");
        jxl.write.WritableCellFormat wcfD = new jxl.write.WritableCellFormat(df);
        Date dd=new Date(System.currentTimeMillis());
        DateTime mydate=new DateTime(5,5,dd,wcfD);


        //定义样式
        WritableCellFeatures ewcf=new WritableCellFeatures();
        ewcf.setComment("wuwenjun");
        WritableCellFormat ecf=new  WritableCellFormat();
        try {
            ecf.setBackground(Colour.RED);
        } catch (WriteException ex3) {
        }

        //blank
        jxl.write.Blank blank=new Blank(6,6);
        blank.setCellFeatures(ewcf);
        blank.setCellFormat(ecf);

        //emptycell
        EmptyCell emptycell=new EmptyCell(7,7);
        emptycell.setCellFeatures(ewcf);
        emptycell.setCellFormat(ecf);


        //设置数字格式
        jxl.write.NumberFormat nf = new jxl.write.NumberFormat("###,###,###,###,###.##");
        jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
        //设置单元格的边框样式
        try {
            wcfN.setBorder(Border.ALL, BorderLineStyle.THIN);
        } catch (WriteException ex1) {
        }

        Number mynumber=new Number(3,3,56566454.1212121,wcfN);


        try {
            mysheet.addCell(mylabel);
            mysheet.addCell(mynumber);
            mysheet.addCell(label);
            mysheet.addCell(mydate);
            mysheet.addCell(blank);
            mysheet.addCell(emptycell);

            myexcel.write();
            if(myexcel!=null)
                myexcel.close();
            }
          catch (WriteException ex2) {
          }
          catch (IOException ex2) {
          }
    }
}

#8


楼上朋友提供的也只是读写excel文件吧?JXL包支持直接打印吗?
下载了看看

#9


jxl

#10


如果这实现了,那么web打印估计就不成问题了...

#11


mark!

#12


wordml

#13


学习中。。。。。。。。。。。