1
import java.awt.Color;
2
import java.awt.Font;
3
import java.awt.Graphics;
4
import java.awt.print.PageFormat;
5
import java.awt.print.Printable;
6
import java.awt.print.PrinterException;
7
import java.awt.print.PrinterJob;
8
import java.sql.Connection;
9
import java.sql.DriverManager;
10
import java.sql.ResultSet;
11
import java.sql.Statement;
12
import java.text.SimpleDateFormat;
13
import java.util.Date;
14
15
/**
16
* 印刷
17
*/
18
public class Print implements Printable {
19
20
static ResultSet rs = null;
21
int positionCount = 0;
22
int employeeCount = 0;
23
int lineCount = 0;
24
String oldPosition = null;
25
String lastNo = null;
26
String lastName = null;
27
String lastPosition = null;
28
boolean flag = false;
29
30
public static void main(String[] args) {
31
try {
32
Class.forName("org.postgresql.Driver");
33
Connection con = DriverManager.getConnection(
34
"jdbc:postgresql:hellodb", "user", "pass");
35
Statement stmt = con.createStatement();
36
String sql = "SELECT * FROM TABLE ORDER BY POSITION, EMPLOYEE_NO";
37
rs = stmt.executeQuery(sql);
38
39
PrinterJob job = PrinterJob.getPrinterJob();
40
job.setPrintable(new Print());
41
if (job.printDialog()) {
42
job.print();
43
}
44
rs.close();
45
stmt.close();
46
con.close();
47
} catch (Exception e) {
48
e.printStackTrace();
49
}
50
}
51
52
public int print(Graphics g, PageFormat pf, int pageIndex)
53
throws PrinterException {
54
try {
55
lineCount = 0;
56
g.setFont(new Font("Arial", Font.PLAIN, 12));
57
g.setColor(Color.BLACK);
58
Date nowDate = new Date();
59
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
60
g.drawString("***EMPLOYEE INFO*** " + sdf.format(nowDate), 50, 50);
61
g.drawString("EMPLOYEE_NO EMPLOYEE_NAME POSITION", 50, 100);
62
63
if (flag) {
64
g.drawString(lastNo + " " + lastName + " " + lastPosition, 50,
65
200);
66
lineCount++;
67
flag = false;
68
}
69
while (rs.next()) {
70
String no = rs.getString("EMPLOYEE_NO");
71
if (oldPosition == null) {
72
oldPosition = no;
73
}
74
String name = rs.getString("EMPLOYEE_NAME");
75
String position = rs.getString("POSITION");
76
77
if (oldPosition.equals(no)) {
78
g.drawString(no + " " + name + " " + position, 50,
79
200 + lineCount * 50);
80
positionCount++;
81
lineCount++;
82
} else {
83
g.drawString("position_total:" + employeeCount, 50,
84
200 + lineCount * 50);
85
lastNo = no;
86
lastName = name;
87
lastPosition = position;
88
positionCount = 0;
89
flag = true;
90
return Printable.PAGE_EXISTS;
91
}
92
93
if (30 >= lineCount) {
94
lastNo = no;
95
lastName = name;
96
lastPosition = position;
97
flag = true;
98
return Printable.PAGE_EXISTS;
99
}
100
employeeCount++;
101
}
102
} catch (Exception e) {
103
e.printStackTrace();
104
}
105
g
106
.drawString("company_total:" + employeeCount, 50,
107
200 + lineCount * 50);
108
109
return Printable.NO_SUCH_PAGE;
110
}
111
}
112
import java.awt.Color;2
import java.awt.Font;3
import java.awt.Graphics;4
import java.awt.print.PageFormat;5
import java.awt.print.Printable;6
import java.awt.print.PrinterException;7
import java.awt.print.PrinterJob;8
import java.sql.Connection;9
import java.sql.DriverManager;10
import java.sql.ResultSet;11
import java.sql.Statement;12
import java.text.SimpleDateFormat;13
import java.util.Date;14

15
/**16
* 印刷17
*/18
public class Print implements Printable {19

20
static ResultSet rs = null;21
int positionCount = 0;22
int employeeCount = 0;23
int lineCount = 0;24
String oldPosition = null;25
String lastNo = null;26
String lastName = null;27
String lastPosition = null;28
boolean flag = false;29

30
public static void main(String[] args) {31
try {32
Class.forName("org.postgresql.Driver");33
Connection con = DriverManager.getConnection(34
"jdbc:postgresql:hellodb", "user", "pass");35
Statement stmt = con.createStatement();36
String sql = "SELECT * FROM TABLE ORDER BY POSITION, EMPLOYEE_NO";37
rs = stmt.executeQuery(sql);38

39
PrinterJob job = PrinterJob.getPrinterJob();40
job.setPrintable(new Print());41
if (job.printDialog()) {42
job.print();43
}44
rs.close();45
stmt.close();46
con.close();47
} catch (Exception e) {48
e.printStackTrace();49
}50
}51

52
public int print(Graphics g, PageFormat pf, int pageIndex)53
throws PrinterException {54
try {55
lineCount = 0;56
g.setFont(new Font("Arial", Font.PLAIN, 12));57
g.setColor(Color.BLACK);58
Date nowDate = new Date();59
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");60
g.drawString("***EMPLOYEE INFO*** " + sdf.format(nowDate), 50, 50);61
g.drawString("EMPLOYEE_NO EMPLOYEE_NAME POSITION", 50, 100);62

63
if (flag) {64
g.drawString(lastNo + " " + lastName + " " + lastPosition, 50,65
200);66
lineCount++;67
flag = false;68
}69
while (rs.next()) {70
String no = rs.getString("EMPLOYEE_NO");71
if (oldPosition == null) {72
oldPosition = no;73
}74
String name = rs.getString("EMPLOYEE_NAME");75
String position = rs.getString("POSITION");76

77
if (oldPosition.equals(no)) {78
g.drawString(no + " " + name + " " + position, 50,79
200 + lineCount * 50);80
positionCount++;81
lineCount++;82
} else {83
g.drawString("position_total:" + employeeCount, 50,84
200 + lineCount * 50);85
lastNo = no;86
lastName = name;87
lastPosition = position;88
positionCount = 0;89
flag = true;90
return Printable.PAGE_EXISTS;91
}92

93
if (30 >= lineCount) {94
lastNo = no;95
lastName = name;96
lastPosition = position;97
flag = true;98
return Printable.PAGE_EXISTS;99
}100
employeeCount++;101
}102
} catch (Exception e) {103
e.printStackTrace();104
}105
g106
.drawString("company_total:" + employeeCount, 50,107
200 + lineCount * 50);108

109
return Printable.NO_SUCH_PAGE;110
}111
}112



浙公网安备 33010602011771号