package com.Ext;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
/**
* 导出PDF文件 惠如彪 2011-06-01
* @author Administrator
*
*/
@SuppressWarnings("all")
public class extPDF {
public static void main(String[] args) throws Exception {
List reslist = new ArrayList();
for (int i = 0; i < 4; i++) {
//存放结果数据子结果集
List reslistch = new ArrayList();
for (int j = 0; j < 4; j++) {
reslistch.add("111" + j);
}
reslist.add(reslistch);
}
List collist = new ArrayList();
collist.add("测试1");
collist.add("测试2");
collist.add("测试3");
collist.add("测试4");
try {
extPDF2(collist,reslist,"d:\\DB2.pdf");
extPDF();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 直接读数据库
* @throws Exception
*/
public static void extPDF() throws Exception{
// 第一步:创建一个document对象。
Document document = new Document();
try {
// 第二步:
// 创建一个PdfWriter实例,
// 将文件输出流指向一个文件。
PdfWriter pdf = PdfWriter.getInstance(document,new FileOutputStream("d:\\DB.pdf"));
// 第四步:创建数据库连接 。
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@200.200.200.6:1521:steomdb", "eoms", "eoms");
Statement stmt = conn.createStatement();
//查询结果集sql
ResultSet rs = stmt.executeQuery("select * from tbl_area");
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 7, Font.NORMAL);
// 第三步:打开文档。
document.open();
//Paragraph chunk = new Paragraph("中中", FontChinese);
//document.add(chunk);
while (rs.next()) { // 循环取得所有数据
String s = "";
for (int i = 1; i <= 4; i++) {
if(i==4){
s += rs.getObject(i) == null ? " | " : rs.getObject(i).toString()+ "\r\n";
}else {
s += rs.getObject(i) == null ? " | " : rs.getObject(i).toString()+ " | ";
}
}
//System.out.println(s);
document.add(new Paragraph(s,FontChinese));
}
} catch (DocumentException de) {
System.err.println(de.getMessage());
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
}
// 第五步:关闭文档。
document.close();
System.out.println("读数据库导出成功!");
}
/**
* colList存放列头
* reslist存放结果集
* path文件存放路径
* 返回值0表示成功,-1表示失败
* @param list
* @param colList
*/
public static int extPDF2(List colList,List reslist,String path){
// 第一步:创建一个document对象。
Document document = new Document();
try {
// 第二步:
// 创建一个PdfWriter实例,
// 将文件输出流指向一个文件。
PdfWriter pdf = PdfWriter.getInstance(document,new FileOutputStream(path));
// 第三步:打开文档。
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 7, Font.NORMAL);
Font FontChinese2 = new Font(bfChinese,15, Font.BOLD);
document.open();
document.add(new Paragraph("测试文件",FontChinese2));
// 得到表头
String str = "";
for (int i = 0; i < colList.size(); i++) {
str +=colList.get(i) + " | ";
}
document.add(new Paragraph(str,FontChinese));
// 结果集数据
for (int j = 0; j < reslist.size(); j++) {
List tempList = (List)reslist.get(j);
String s = "";
for (int i = 0; i < tempList.size(); i++) {
if(i==tempList.size()-1){
s += tempList.get(i) == null ? " | " :tempList.get(i)+ "\r\n";
}else {
s += tempList.get(i) == null ? " | " :tempList.get(i)+ " | ";
}
}
document.add(new Paragraph(s,FontChinese));
}
} catch (DocumentException de) {
System.err.println(de.getMessage());
return -1;
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
return -1;
}
document.close();
System.out.println("传参数导出成功!");
return 0;
}
public static void extPDF3(){
// 第一步:创建一个document对象。
Document document = new Document();
try {
// 第二步:
// 创建一个PdfWriter实例,
// 将文件输出流指向一个文件。
PdfWriter pdf = PdfWriter.getInstance(document,new FileOutputStream("d:\\DB2.pdf"));
// 第三步:打开文档。
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 7, Font.NORMAL);
document.open();
List reslist = new ArrayList();
for (int i = 0; i < 4; i++) {
//存放结果数据子结果集
List reslistch = new ArrayList();
for (int j = 0; j < 4; j++) {
reslistch.add("111" + j);
}
reslist.add(reslistch);
}
List collist = new ArrayList();
collist.add("测试1");
collist.add("测试2");
collist.add("测试3");
collist.add("测试4");
// 循环取得所有数据
String str = "";
for (int i = 0; i < collist.size(); i++) {
str +=collist.get(i) + " | ";
}
document.add(new Paragraph(str,FontChinese));
for (int j = 0; j < reslist.size(); j++) {
List tempList = (List)reslist.get(j);
String s = "";
for (int i = 0; i < tempList.size(); i++) {
if(i==tempList.size()-1){
s += tempList.get(i) == null ? " | " :tempList.get(i)+ "\r\n";
}else {
s += tempList.get(i) == null ? " | " :tempList.get(i)+ " | ";
}
}
document.add(new Paragraph(s,FontChinese));
}
//System.out.println("Hello Oracle");
} catch (DocumentException de) {
System.err.println(de.getMessage());
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
}
// 第五步:关闭文档。
document.close();
System.out.println("导出成功");
}
}