11、借助POI实现Java生成并打印excel报表(2)

POI 打印功能

11.1、常用模块形式:

1         HSSFPrintSetup printSetup = sheet.getPrintSetup();
2         printSetup.setVResolution((short) 600);        //打印质量600点
3         printSetup.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);        //A4纸张打印
4         printSetup.setLandscape(true);       //横向打印

11.2、常用参数设置方法

1、页面设置

1.1、方向:

纵向(T):HSSFPrintSetup#setLandscape(false); [默认状态]

横向(L):HSSFPrintSetup#setLandscape(true); 

1.2、缩放:

缩放比例(A):HSSFPrintSetup#setScale((short) 100); [默认状态]

调整(F):   页宽  HSSFPrintSetup#setFitWidth((short) 1);

页高  HSSFPrintSetup#setFitHeight((short) 0);

1.3、纸张大小(Z):HSSFPrintSetup#setPageSize(HSSFPrintSetup.LETTER_PAPERSIZE);

纸张大小定义说明:

public static final short LETTER_PAPERSIZE = 1;  

public static final short LEGAL_PAPERSIZE = 5;  

public static final short EXECUTIVE_PAPERSIZE = 7;

public static final short A4_PAPERSIZE = 9;  

public static final short A5_PAPERSIZE = 11;  

public static final short ENVELOPE_10_PAPERSIZE = 20;  

public static final short ENVELOPE_DL_PAPERSIZE = 27;  

public static final short ENVELOPE_CS_PAPERSIZE = 28;  

public static final short ENVELOPE_MONARCH_PAPERSIZE = 37; 

1.4、打印质量(Q):  HSSFPrintSetup#setVResolution((short) 300);

1.5、起始页码(R):  HSSFPrintSetup#setPageStrart((short) 0); [默认状态]

2、页面距

2.1、上(T):  HSSFSheet#setMargin(HSSFSheet.TopMargin,(short) 0.6);

2.2、下(B):  HSSFSheet#setMargin(HSSFSheet.BottomMargin,(short) 0.6); 

2.3、左(L):  HSSFSheet#setMargin(HSSFSheet.LeftMargin,(short) 0.6);  

2.4、右(R):  HSSFSheet#setMargin(HSSFSheet.RightMargin,(short) 0.2); 

2.5、页眉(A):  HSSFPrintSetup#setHeaderMargin((double) 0.2); 

2.6、页脚(F):  HSSFPrintSetup#setFooterMargin((double) 0.6); 

2.7、居中对齐方式:  水平(Z)  HSSFSheet#setHorizontallyCenter(false); 

垂直(V)  HSSFSheet#setVerticallyCenter(false); 

3、页眉/页脚

3.1、页眉:HSSFHeader#setLeft(HSSFHeader.date();

说明:首先获得HSSFHeader对象,确定页眉的显示位置(如:左边显示页眉HSSFHeader#setLeft(显示内容))

可用:HSSFHeader#setLeft,setCenter,setRight

3.2、页脚:  HSSFFotter#setLeft(HSSFFotter.page()+”/”+HSSFFotter.numPages())

说明同页眉

4、工作表

4.1、打印区域

HSSFWorkbook#setPrintArea((int) sheetIndex,  (int) startColumn,  (int) endColumn,  (int) startRow,  (int) endRow);

参数说明: 

sheetIndex–从0开始的sheet的索引编号   startColumn-打印区域的开始列号   endColumn- 打印区域的结束列号   startRow-打印区域的开始行号   endRow- 打印区域的结束行号

4.2、打印标题

HSSFWorkbook#setRepeatingRowsAndColumns((int) sheetIndex,  (int) startColumn,  (int) endColumn,  (int) startRow,  (int) endRow); 

参数说明同上。 

使用说明:仅仅设置左端标题列:workbook.setRepeatingRowsAndColumns(0,0,1,-1,-1); 

仅仅设置顶端标题行:workbook.setRepeatingRowsAndColumns(0,-1,-1,0,4); 

同时设置左端和顶端标题:workbook.setRepeatingRowsAndColumns(0,-1,-1,-1,-1);

4.3、打印

网格线 (G):HSSFSheet#setPrintGridlines(false); 

单色打印(B)HSSFPrintSetup#setNoColor(false);

按草稿方式(Q):HSSFPrintSetup#setDraft(false);

行号列标(L):

批注(M):

错误单元格打印为(E):

4.4、打印顺序

HSSFPrintSetup#setLeftToRight(false);

11.3、程序示例:

 1  1package test;
 2  2
 3  3import java.io.FileOutputStream;
 4  4import java.io.IOException;
 5  5
 6  6import org.apache.poi.hssf.usermodel.HSSFCell;
 7  7import org.apache.poi.hssf.usermodel.HSSFCellStyle;
 8  8import org.apache.poi.hssf.usermodel.HSSFFont;
 9  9import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
10 10import org.apache.poi.hssf.usermodel.HSSFRichTextString;
11 11import org.apache.poi.hssf.usermodel.HSSFRow;
12 12import org.apache.poi.hssf.usermodel.HSSFSheet;
13 13import org.apache.poi.hssf.usermodel.HSSFWorkbook;
14 14
15 15public class ExcelTest {
16 16
17 17    public static void main(String[] args) throws IOException {
18 18        
19 19         // create a new file  
20 20         FileOutputStream out = new FileOutputStream("D:/workbook.xls");  
21 21         // create a new workbook  
22 22         HSSFWorkbook wb = new HSSFWorkbook();  
23 23         // create a new sheet  
24 24         HSSFSheet sheet = wb.createSheet();  
25 25           
26 26         //2.model  
27 27         HSSFRow row = sheet.createRow(2);  
28 28         row.setHeightInPoints(20);  
29 29         HSSFCell cell = row.createCell(2);  
30 30         HSSFFont cnFont = wb.createFont();  
31 31         cnFont.setFontHeightInPoints((short) 10);  
32 32         //font.setFontName("汉仪报宋简");  
33 33         cnFont.setFontName("隶书");  
34 34         HSSFCellStyle cnStyle = wb.createCellStyle();  
35 35         cnStyle.setFont(cnFont);  
36 36         cell.setCellStyle(cnStyle);  
37 37         HSSFRichTextString richText = new HSSFRichTextString("中文字体测试");  
38 38         cell.setCellValue(richText);  
39 39         HSSFCell enCell = row.createCell(3);  
40 40         HSSFFont enFont = wb.createFont();  
41 41         enFont.setFontHeightInPoints((short) 10);  
42 42         enFont.setFontName("Arial Black");  
43 43         HSSFCellStyle enStyle = wb.createCellStyle();  
44 44         enStyle.setFont(enFont);  
45 45         enCell.setCellStyle(enStyle);  
46 46         enCell.setCellValue(new HSSFRichTextString("English font test"));  
47 47         sheet.setColumnWidth(2, 4000);  
48 48         sheet.setColumnWidth(3, 4000);
49 49         
50 50         //3.output  
51 51         sheet.setDisplayGridlines(false);  
52 52         sheet.setPrintGridlines(false);  
53 53         HSSFPrintSetup printSetup = sheet.getPrintSetup();  
54 54         //A4纸
55 55         printSetup.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);  
56 56         wb.write(out);  
57 57         out.close(); 
58 58    }
59 59}
60 60

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户画像

Excel导出

14720
来自专栏吴伟祥

Apache POI总结 原

Apache POI  是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格...

14210
来自专栏海说

10、借助POI实现Java生成并打印excel报表(1)

10.1、了解 Apache POI 实际开发中,用到最多的是把数据库中数据导出生成报表,尤其是在生产管理或者财务系统中用的非常普遍。生成报表格式一般是EXC...

91900
来自专栏闻道于事

JavaWeb项目之电话本,两个版本,以及总结反思

使用技术: Oracle 数据库 前端后台: Servlet + jsp + JDBC + html + css + js 前端界面自定, 但一定实现需要的功能...

55650
来自专栏lgp20151222

生成验证码并校验

17910
来自专栏函数式编程语言及工具

Akka(39): Http:File streaming-文件交换

 所谓文件交换指的是Http协议中服务端和客户端之间文件的上传和下载。Akka-http作为一种系统集成工具应该具备高效率的数据交换方式包括文件交换和数据库表...

31990
来自专栏微信公众号:Java团长

Java POI 导出EXCEL经典实现

在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出...

63020
来自专栏面朝大海春暖花开

快递鸟电子面单打印功能基于java

快递鸟电子面单API地址:http://www.kdniao.com/api-eorder

32020
来自专栏GIS讲堂

Java中用Apache POI生成excel和word文档

最近在做项目的过程中遇到了excel的数据导出和word的图文表报告的导出功能,最后决定用Apache POI来完成该项功能。本文就项目实现过程中的一些思路与代...

32940
来自专栏别先生

统计各个数据库的各个数据表的总数,然后写入到excel中

1、最近项目基本进入最后阶段了,然后会统计一下各个数据库的各个数据表的数据量,开始使用的报表工具,report-designer,开源的,研究了两天,发现并不是...

30920

扫码关注云+社区

领取腾讯云代金券