java读取数据库字段和值,输出到regedit,xml,text,excel,pdf的程序

类别:Java 点击:0 评论:0 推荐:

主要功能,通过读取配置文件,来从数据库里提取字段和值,写入到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

本文地址:http://com.8s8s.com/it/it16362.htm