主要功能,通过读取配置文件,来从数据库里提取字段和值,写入到regedit,xml,text,excel,pdf中。程序是dos界面的,由于仓促没有写windows界面,如果各位有兴趣,可以改成windows界面的。由于有配置文件的缘故,所以所有的操作不需要改写代码,只需在配置文件中改写就可以了。 
主程序: 
import java.io.*; import java.util.prefs.*; import java.sql.*; import jxl.*; import jxl.write.*; import java.util.*; import java.util.Properties; import com.lowagie.text.*; import com.lowagie.text.pdf.*; import java.awt.Color; 
/*  *author:kenshin  *effect:from database reading values ,output regedit or text or xml or excel or pdf.  *create time:2004/6/8  *modify time:2004/6/9  *copyright:2004 */ public class PrefsDemo { 
  static Preferences prefsdemo;   static String[] field=new  String[1000];   static String [] values=new String[1000];   static int account=0,maxCount=0;   static String path=null,driver=null,user=null,password=null,odbcname=null;   static String txtname=null,xmlname=null,excelname=null,pdfname=null,sql=null;   static String author=null,createtime=null,effect=null,version=null; 
  public static void main(String args[]){    String rnumber=null;    int number=0;    BufferedReader buf; 
    //initialize config file     Initconfig();    //connection database    DBconnection();    //goto enterLoop    enterLoop:     while(number<=6){     try{      //choice output formatting      System.out.println("please choice input formatting!!!");      System.out.print("1:input regedit   2:input xml   3:input text");      System.out.println("   4:excel   5:pdf   6:all   7:exit");      System.out.print("input a number,not a character:");       //keyword input      buf=new BufferedReader(new InputStreamReader(System.in));      rnumber=buf.readLine();      //change "number" type      number=Integer.parseInt(rnumber);      if(number>7){       System.out.println("please input an number of between 1 to 7 ");       number=0;       continue enterLoop;      }      switch(number){       case 1:                       //output regedit                       RegeditOutput(); break;                 case 2:                       //output xml                       XmlOutput();     break;                 case 3:                       //output text                       TextOutput();    break;                 case 4:                       //output excel                       ExcelOutput();   break;                 case 5:                       //output excel                       PdfOutput();   break;                 case 6:                       //output all                       RegeditOutput();                       XmlOutput();                       TextOutput();                       ExcelOutput();                       PdfOutput();                       break;      }     }     catch(IOException e){System.err.println(e);}     catch(NumberFormatException e){      System.out.println("please input an number type!");      number=0;      continue enterLoop;     }     }   }   /*************************************************    *effect:initialize config file    *input value :null    *return value:null    *create time:2004/6/11    *edit time:null    *************************************************/   static void Initconfig(){ 
   Properties prop = new Properties();    String propFileName = "config.properties";    FileInputStream fis; 
   try{     fis = new FileInputStream(new File(propFileName));   prop.load(fis);   //get config file's values      path = prop.getProperty("path");      odbcname = prop.getProperty("odbc");      driver = prop.getProperty("driver");      user = prop.getProperty("user");      password = prop.getProperty("password"); 
     txtname = prop.getProperty("txtname");      xmlname = prop.getProperty("xmlname");      excelname = prop.getProperty("excelname");      pdfname = prop.getProperty("pdfname"); 
     author = prop.getProperty("author");      createtime = prop.getProperty("createtime");      effect = prop.getProperty("effect");      version = prop.getProperty("version"); 
     sql = prop.getProperty("sql"); 
     //close inputstream   fis.close(); 
    System.out.println("*************************");     System.out.println("*config read successfull*");     System.out.println("*************************");    }    catch(IOException e){System.err.println(e);}   }   /*************************************************    *effect:connection database    *input value :null    *return value:null    *create time:2004/6/9    *edit time:null    *************************************************/   static void DBconnection(){    //jdbc-odbc variable initialize    Connection con=null;    Statement stm=null;    ResultSet rs=null; 
   //jdbc-odbc bridge    try{     Class.forName(driver);     con=DriverManager.getConnection(odbcname,user,password);     stm=con.createStatement();     rs=stm.executeQuery(sql); 
    //get columncount values         account=rs.getMetaData().getColumnCount(); 
    System.out.println("*************************");     System.out.println("*DB connect successfull *");     System.out.println("*************************");         //get database ColumnName         for(int i=1;i<=account;i++){             field[i]=rs.getMetaData().getColumnName(i);         }     while(rs.next()){              for(int j=1;j<=account;j++){                ++maxCount;                  values[maxCount]=rs.getString(field[j]);                  System.out.println(values[maxCount]);              }     }     //close database     rs.close();     stm.close();     con.close();    }     catch(Exception e){      System.err.println(e);     }   }   /*************************************************    *effect:output regedit    *input value :null    *return value:null    *create time:2004/6/9    *edit time:null    *************************************************/   static void RegeditOutput(){  prefsdemo = Preferences.userRoot().node("/com/sunway/spc"); 
 //wirte regedit  prefsdemo.put("author",author);  prefsdemo.put("createtime",createtime);  prefsdemo.put("effect",effect);  prefsdemo.put("version",version); 
   System.out.println("regedit create successfull!");   }   /*************************************************    *effect:output xml    *input value :null    *return value:null    *create time:2004/6/9    *edit time:null    *************************************************/   static void XmlOutput(){     //write xml     try{   File myfile = new File(path+xmlname);   if(!(myfile.exists())){    myfile.createNewFile();   }   // write file      FileOutputStream fos = new FileOutputStream(path+xmlname);      prefsdemo.exportNode(fos);     }     catch (Exception e){        System.err.println("Cannot export nodes: " + e);     }    System.out.println("xml create successfull ");   }   /*************************************************    *effect:output text    *input value :null    *return value:null    *create time:2004/6/9    *edit time:null    *************************************************/   static void TextOutput(){ 
 //field length  int length1[]=new int[1000];  //values length  int length2[]=new int[1000];  String space="          ";  String str1="-------------------------";  String str2[]=new String[1000];  String str3[]=new String[1000];  //check "/n"  int q=1;   //initialize str1[] str2[]  for(int i=1;i<=maxCount;i++){   str2[i]="";   str3[i]="";  } 
 try{      //create file   File myfile = new File(path+txtname);   if(!(myfile.exists())){    myfile.createNewFile();   }   // write file   FileWriter fw=new FileWriter(path+txtname); 
  for(int i=1;i<=maxCount;i++){    if(i<=account){     length1[i]=25-field[i].length();     //account length2 length     for(int j=1;j<=length1[i];j++){      str2[i]=str2[i]+" ";     }    }    length2[i]=25-values[i].length();    //account length3 length    for(int j=1;j<=length2[i];j++){     str3[i]=str3[i]+" ";    }   }   //write field   for(int i=1;i<=account;i++){    fw.write(field[i]);    fw.write(str2[i]+space);   }   //write "-"   fw.write("\n");   for(int i=1;i<=account;i++){    fw.write(str1+space);   }   //write values   fw.write("\n");   for(int i=1;i<=maxCount;i++){    fw.write(values[i]+str3[i]+space);    if(i==account*q){     fw.write("\n");     q*=2;    }   }   fw.close();  }  catch(FileNotFoundException e){System.err.println(e);}  catch(IOException e){e.printStackTrace();}    System.out.println("text create successfull ");   }   /*************************************************    *effect:output excel    *input value :null    *return value:null    *create time:2004/6/9    *edit time:2004/6/10    *************************************************/   static void ExcelOutput(){ 
 //label1:field    label2:values   Label label1=null,label2=null;  int result=0,rows=0;  try{   //create an new file   File myfile = new File(path+excelname);   if(!(myfile.exists())){    myfile.createNewFile();    System.out.println("an new excel create successful");   }      //create an new excel      WritableWorkbook workbook = Workbook.createWorkbook(myfile);      //use first excel's sheet      WritableSheet sheet = workbook.createSheet("record", 0); 
     // add table title and values      for(int i=1;i<=account;i++){          //add table title          label1 = new Label(i-1, 0, field[i]);          sheet.addCell(label1);      }      //account rows values      result=maxCount/account;      for(int i=1;i<=result;i++){       for(int m=1;m<=account;m++){        rows++;           label2=new Label(m-1,i,values[rows]);           sheet.addCell(label2);       }      } 
     workbook.write();      workbook.close();  }  catch(Exception e){System.err.println(e);}  System.out.println("excel create successfull ");   }   /*************************************************    *effect:output pdf file    *input value :null    *return value:null    *create time:2004/6/11    *edit time:null    *************************************************/   static void PdfOutput(){     Document document;     Rectangle pageRect; 
   try{   document=new Document(PageSize.A4, 50, 50, 100, 50);   pageRect=document.getPageSize();   PdfWriter.getInstance(document, new FileOutputStream(path+pdfname)); 
  HeaderFooter header = new HeaderFooter(new Phrase("student information"), false);   header.setBorder(2);   header.setAlignment(Element.ALIGN_RIGHT);   document.setHeader(header); 
        //add page   HeaderFooter footer = new HeaderFooter(new Phrase("the"),new Phrase("page"));   footer.setAlignment(Element.ALIGN_CENTER);   footer.setBorder(1);   document.setFooter(footer); 
  //open document   document.open(); 
        //create table   Table table = new Table(account);   table.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);   table.setBorder(Rectangle.NO_BORDER); 
  int hws[] = new int[account];   for(int i=1;i<=account;i++){    hws[i-1]=20;   } 
  table.setWidths(hws);   table.setWidth(100);   //add field   for(int i=1;i<=account;i++){    table.addCell(new Phrase(field[i]));   }   //add values   for(int i=1;i<=maxCount;i++){    table.addCell(new Phrase(values[i]));   } 
  //add table to pdf file   document.add(table);   //close pdf file   document.close();     }    catch(Exception e){System.out.println(e);}  System.out.println("pdf create successfull ");   } } 
******************************************************************* 配置文件 [author information] author=kenshin createtime=2004/6/08 effect=from database reading values ,output regedit or text or xml or excel or pdf version=0.1
  [date] #date date=2004
  #saving path path=f:\\kenshin\\
  [database odbc information] #table:Info #field:<Name>,<Copyright>,<Author>
  #odbc name odbc=jdbc:odbc:xml
  #driver  driver=sun.jdbc.odbc.JdbcOdbcDriver
  #user user=""
  #password password=""
  #database select statement sql=select * from Info
  [argument] #text file name txtname=Info.txt
  #xml file name xmlname=Info.xml
  #excel file name excelname=Info.xls
  #pdfname file name pdfname=info.pdf
   
 
  |