发展部件技术分享 http://blog.sciencenet.cn/u/求新 研究方向:数据库、MIS,教育部教指委计算机分委会专家工作组成员

博文

管理信息系统软件生产线源码24-26

已有 1736 次阅读 2018-5-31 00:37 |个人分类:生活点滴|系统分类:科研笔记| 软件生产线, 软部件, 数据库, 管理信息系统, JAVA

版本1
24.源码24,部件程序,对数据表某一个文本类字段检索查询

/**
 * 程序文件名:dataQuery15.java
 * 作者:程学先
 * 完成时间:2013年11月17日
 * 部件功能:对数据表某一个文本类字段检索查询。
 * 被调用语句:datadataQuery15.means(parameter);
 * 必须提供的参数:“表名”(parameter[4]),
 * 如果欲打印,必须提供“打印格式文件名”(parameter[15])
 * 打印格式文件是利用printFormat1.java生成的格式文件。
 * 程序中设计了一个下拉组合框和一个文本框,组合框中列出供用户选择的字段名;
 * 文本框供操作者输入检索字,之后按下“查询按钮”便可组织查询。
 * 另外提供表格式显示、打印预览、打印、导出等按钮。
 * 导出通过调用dataTransfer0.java实现,需要给出按钮号表()(借按钮号表2传入)。
 * 检索字的格式:
 * 检索字区分大、小写。  
 * 空格、|、-、( )、#、*均为特殊意义字符(注意均应为英文字符),
 * 字符两边不要有空格。
 * 空格表示要求两边内容均要包含在内。
 * “|”表示要求两边内容至少有一个包含在内
 * “-”表示后边内容不包含在内。
 * “( )”表示其内部分为整体内容,全要满足。
 * “#”表示在查找的二个词间可能有若干个任意的字符,
 * 任意字符的个数不多于#号的个数。
 * “*”表示在查找的二个词间可能有任意多个任意字符。
 */
import java.awt.*;
import java.awt.event.*;
import java.awt.print.PrinterException;

import javax.swing.*;
import javax.swing.table.*;

import java.sql.*;
import java.io.*;

public class dataQuery15 extends JFrame {
 static dataQuery15 frame = new dataQuery15();
 static String 表名 = "";
 static Choice choice;
 static JTextField aTextField;
 static JButton 浏览显示, 第一条, 下一条, 上一条, 最后一条, 打印预览, 打印, 导出, 退出;
 static String s1 = "", s2 = "", s3 = "";
 static ResultSet rs;
 static int b = 0, c = 0;
 static int 列数;
 static int 字段序号 = 0;
 static String[] 列名,列名0;
 static String 打印格式文件名;
 static String 字段号表;
 static String 字段名表;
 static String 按钮号表2 = "";
 static String[][] 关系表 = { { " > ", "大于" }, { " < ", "小于" },
   { " = ", "等于" }, { " >= ", "大于等于" }, { " <= ", "小于等于" },
   { "<>", "不等于" }, { " like ", "包含" }, { " not like ", "不包含" } };
 static String[] 列数据类型;
 static int[] 列数据宽度;
 static int 记录条数, 记录条数1;
 static String[][] 表格数据;
 static Connection con; // 连接数据库
 static ResultSetMetaData rsmd3;
 static Statement sta3;
 static int 窗口宽 = 800, 窗口高 = 700;
 static JTextArea 文本域;
 static String[] 按钮集 = null;
 static String 要求按钮号表;
 static int 按钮数 = 0, 按钮宽 = 0;

 public static void means(String[] parameter) {
  frame = new dataQuery15();
  表名 = "";
  s1 = "";
  s2 = "";
  s3 = "";
  b = 0;
  c = 0;
  字段序号 = 0;
  按钮号表2 = "";
  窗口宽 = 800;
  窗口高 = 700;
  关系表[0][0] = " > ";
  关系表[0][1] = "大于";
  关系表[1][0] = " < ";
  关系表[1][1] = "小于";
  关系表[2][0] = " = ";
  关系表[2][1] = "等于";
  关系表[3][0] = " >= ";
  关系表[3][1] = "大于等于";
  关系表[4][0] = " <= ";
  关系表[4][1] = "小于等于";
  关系表[5][0] = " <> ";
  关系表[5][1] = "不等于";
  关系表[6][0] = " like ";
  关系表[6][1] = "包含";
  关系表[7][0] = " not like ";
  关系表[7][1] = "不包含";
  String[] 按钮集01 = { "浏览显示", "第一条", "下一条", "上一条", "最后一条", "打印预览", "打印",
    "导出", "退出" };
  按钮集 = new String[按钮集01.length];
  按钮数 = 0;
  for (int i0 = 0; i0 < 按钮集01.length; i0++)
   按钮集[i0] = 按钮集01[i0];
  if (parameter[11].length() > 0) {
   要求按钮号表 = parameter[11];// 需要显示的按钮的顺序号
   // 将中文分号、冒号、句号、英文分号统一为英文分号
   要求按钮号表 = 要求按钮号表.replaceAll(";", ";");
   要求按钮号表 = 要求按钮号表.replaceAll("。", ";");
   要求按钮号表 = 要求按钮号表.replaceAll(":", ";");
   要求按钮号表 = 要求按钮号表.replaceAll(":", ";");
   if (要求按钮号表.indexOf(";") > 0) { // 如果有按钮更名要求
    String s601[] = 要求按钮号表.split(",");
    要求按钮号表 = "";
    for (int i01 = 0; i01 < s601.length; i01++) {
     if (s601[i01].indexOf(";") > 0) {
      String s602[] = s601[i01].split(";");
      按钮集[Integer.parseInt((s602[0]))] = s602[1];
      要求按钮号表 = 要求按钮号表 + "," + s602[0];// 只留号,去更名
      按钮数++;
     } else {
      要求按钮号表 = 要求按钮号表 + "," + s601[i01];// 只留号,原无更名
      按钮数++;
     }
    }
   } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样
   else {
    String s601[] = 要求按钮号表.split(",");
    要求按钮号表 = "";
    for (int i01 = 0; i01 < s601.length; i01++) {
     if (i01 == 0)
      要求按钮号表 = s601[i01];
     else
      要求按钮号表 = 要求按钮号表 + "," + s601[i01];
     按钮数++;
    }
   }
  } else {
   要求按钮号表 = ""; // 没输入要求按钮号,定全部按钮号
   for (int i1 = 0; i1 < 按钮集.length; i1++) {
    if (i1 == 0)
     要求按钮号表 = 要求按钮号表 + i1;
    else
     要求按钮号表 = 要求按钮号表 + "," + i1;
    按钮数++;
   }
  }
  要求按钮号表 = "," + 要求按钮号表 + ",";
  窗口宽 = main1.窗口宽;
  窗口高 = main1.窗口高;
  int m1, m2;
  try {
   if (parameter[17].length() == 0) {
    m1 = 0;
    m2 = 0;
   } else {
    m1 = Integer.parseInt(parameter[17]);// 宽度参数
    m2 = Integer.parseInt(parameter[18]);
   }
   if (m1 > 0) {
    if (m2 < 80) {
     m1 = m1 * 10;
     m2 = m2 * 10;
    }
    窗口宽 = m1;
    窗口高 = m2;
   }
  } catch (Exception e2) {
  }
  表名 = parameter[4]; // 数据表名
  打印格式文件名 = parameter[15];
  字段号表 = parameter[8];
  字段名表 = parameter[19];
  if (字段名表.lastIndexOf(",") == 字段名表.length() - 1)
   字段名表 = 字段名表.substring(0, 字段名表.length() - 1);
  按钮号表2 = parameter[12];
  列名 = 字段名表.split(",");
  String[] l3 = 字段名表.split(",");
  列数 = l3.length;
  String[] l1;
  if (字段号表.length() > 0) {
   l1 = 字段号表.split(",");
   int[] l2 = new int[l1.length];
   for (int i = 0; i < l1.length; i++) {
    l2[i] = Integer.valueOf(l1[i]);
   }
   列数 = l1.length;
   列名 = new String[列数];
   for (int i = 0; i < 列数; i++) {
    列名[i] = l3[l2[i]];
   }
  }
  s1 = "";
  for (int i = 0; i < 列数; i++) {
   s1 = s1 + 列名[i] + ",";
  }
  s1 = s1.substring(0, s1.length() - 1);
  try {
   con = main1.getConn();
   sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
     ResultSet.CONCUR_UPDATABLE);
   s1 = "select " + s1 + " from " + 表名;
   ResultSet rs = sta3.executeQuery(s1);
   rsmd3 = rs.getMetaData();
   列数据类型 = new String[列数]; // 定义列字段类型数组
   列数据宽度 = new int[列数]; // 定义列数据宽度
   for (int i = 0; i < 列数; i++) {
    列数据类型[i] = rsmd3.getColumnTypeName(i + 1);
    列数据宽度[i] = rsmd3.getColumnDisplaySize(i + 1);
    if (列数据宽度[i] < 列名[i].length())
     列数据宽度[i] = 列名[i].length();
    if (列数据宽度[i] > 50)
     列数据宽度[i] = 50;
    b++;
   }
   int 记录条数 = 0; // 记录条数
   rs.last();
   记录条数 = rs.getRow();
   表格数据 = new String[记录条数][列数];
   rs.absolute(1);
   c = 0; // 行号
   b = 0; // 列号
   while (c < 记录条数) {
    rs.absolute(c + 1);
    while (b < 列数) {
     表格数据[c][b] = rs.getString(b + 1);
     b++;
    }
    c++;
    b = 0;
   }
   rs.close(); // 关闭查询结果集
   sta3.close(); // 关闭连接
  } catch (SQLException e) {
   JOptionPane.showMessageDialog(null, "读取数据出错!");
  }

  frame.setTitle("查询部件程序                             作者:程学先");
  frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10);
  frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  frame.getContentPane().setLayout(null);
  final JPanel panel = new JPanel(false);
  panel.setLayout(null);
  panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 - 20);
  JLabel label = new JLabel("请选择字段名:");
  label.setBounds(20, 30, 100, 20);
  panel.add(label);
  choice = new Choice();
  for (int i = 0; i < 列数; i++) {
   if ((main1.文字数据类型.lastIndexOf(列数据类型[i])) >= 0)
    choice.add(列名[i]);
  }
  choice.setBounds(120, 30, 100, 60);
  panel.add(choice);
  aTextField = new JTextField("", 10);
  aTextField.setBounds(220, 30, 330, 20);
  panel.add(aTextField);
  final JButton selectButton = new JButton("文本检索");
  selectButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     con = main1.getConn();
     sta3 = con.createStatement(
       ResultSet.TYPE_SCROLL_INSENSITIVE,
       ResultSet.CONCUR_UPDATABLE);
     String 检索内容0 = aTextField.getText();
     int n0 = 检索内容0.length();
     检索内容0 = 检索内容0 + " ";
     int i = 0, j = 0, k1 = 0, k2 = 0;
     s1 = "";
     s2 = "";
     String[] s7 = choice.getSelectedItem().trim().split(",");
     s3 = s7[0];
     String[] s6 = 字段名表.split(",");
     for (int i1 = 0; i1 < s6.length; i1++)
      if (s3.trim().equals(s6[i1].trim()))
       字段序号 = i1;
     String s4 = "", s5 = "";
     for (i = 0; i < n0; i++) {
      if (检索内容0.substring(i, i + 1).equals("(")) {
       if (k1 < 2) {
        s1 = s1 + "(";
       } else if (k1 == 3) {
        s1 = s1 + " and " + "(";
       } else if (k1 == 4) {
        s1 = s1 + " or " + "(";
       } else if (k1 == 5) {
        s1 = s1 + " and not " + "(";
       }
       s2 = "";
       k1 = 1;
      } else if (检索内容0.substring(i, i + 1).equals(")")) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%')";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%')";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%')";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + "   not  like " + "'%"
          + s2 + "%')"; // not
       }
       k1 = 2;
       s2 = "";
      } else if (检索内容0.substring(i, i + 1).equals("#"))
       s2 = s2 + "-";
      else if (检索内容0.substring(i, i + 1).equals("*"))
       s2 = s2 + "%";
      else if ((检索内容0.substring(i, i + 1).equals(" "))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + "  not   like " + "'%"
          + s2 + "%'";// not
       }
       k1 = 3;
       s2 = "";
      } else if ((检索内容0.substring(i, i + 1).equals("|"))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + "   not   like "
          + "'%" + s2 + "%'";// not
       }
       k1 = 4;
       s2 = "";
      } else if ((检索内容0.substring(i, i + 1).equals("-"))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%'";
       }
       k1 = 5;
       s2 = "";
      } else {
       s2 = s2 + 检索内容0.substring(i, i + 1);
      }
     }
     if (k1 < 2) {
      s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 3) {
      s1 = s1 + " and " + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 4) {
      s1 = s1 + " or " + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 5) {
      s1 = s1 + " and " + s3 + "  not like " + "'%" + s2
        + "%'";// not
     }
     s1 = "select " + 字段名表 + " from " + 表名 + " where " + s1;
     ResultSet rs = sta3.executeQuery(s1);
     ResultSetMetaData rsmdt4 = rs.getMetaData();
     列数 = rsmdt4.getColumnCount();
     记录条数 = 0;
     rs.last();
     记录条数 = rs.getRow();
     if (记录条数 < 1) {
      JOptionPane.showMessageDialog(null, "未查到满足条件的记录!");
      return;
     }
     表格数据 = new String[记录条数][列数];
     rs.absolute(1);
     c = 0; // 行号
     b = 0; // 列号
     记录条数1 = 0;
     while (c < 记录条数) {
      rs.absolute(c + 1);
      while (b < 列数) {
       表格数据[c][b] = rs.getString(b + 1);
       b++;
      }
      c++;
      b = 0;
     }
     文本域.setText(表格数据[记录条数1][字段序号]);
     rs.close(); // 关闭查询结果集
     sta3.close(); // 关闭连接
     con.close();
    } catch (Exception e1) {
     JOptionPane.showMessageDialog(null, "查询数据出错!" + s1);
    }
   }
  });
  selectButton.setBounds(550, 30, 90, 20);
  panel.add(selectButton);

  JButton 格式提示 = new JButton("格式提示");
  格式提示.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    JFrame frame1 = new JFrame();
    frame1.setTitle("查询部件程序");
    frame1.setBounds(350, 140, 440, 290);
    frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame1.getContentPane().setLayout(null);
    String s0 = "";
    char x1 = 10;
    s0 = "检索字的格式:检索字区分大、小写。" + x1
      + "空格、&、|、-、( )、$、#、*、\\ 均为特殊意义字符" + x1
      + "(注意均应为英文字符),字符两边不要有空格。" + x1
      + "空格或& 表示要求两边内容均要包含在内。" + x1 + "“|”表示要求两边内容至少有一个包含在内"
      + x1 + "“-”表示后边内容不包含在内。" + x1
      + "“( )”表示其内部分为整体内容,全要满足。" + x1
      + "“$”表示其后的词在标题之首,要放在全文检索词最前面。" + x1
      + "“#”表示在查找的二个词间可能有若干个任意的字符," + x1 + "任意字符的个数不多于#号的个数。"
      + x1 + "“*”表示在查找的二个词间可能有任意多个任意字符。" + x1
      + "“\\”后边应当是上述字符中任意一个," + x1
      + "表示在此处该字符不具有上述特殊意义,只是检索内容中的一个字。";
    JTextArea 文本域1;
    文本域1 = new JTextArea(s0, 10, 10);// 建立文本域
    JScrollPane 滚动条1 = new JScrollPane(文本域1);
    滚动条1.setBounds(10, 10, 415, 235);
    frame1.add(滚动条1);// 安装滚动条
    frame1.setVisible(true);
   }
  });
  格式提示.setBounds(640, 30, 90, 20);
  panel.add(格式提示);
  文本域 = new JTextArea("", 10, 10);// 建立文本域
  JScrollPane 滚动条 = new JScrollPane(文本域);
  滚动条.setBounds(20, 70, 700, 500);
  panel.add(滚动条);// 安装滚动条
  按钮宽 = (窗口宽 - 60) / 按钮数;
  int 左边距 = 30;
  浏览显示 = new JButton(按钮集[0]);
  浏览显示.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    tableTenance.tableModel(800, 600, 列名, 列数据宽度, 表格数据, 列数据类型);
   }
  });
  浏览显示.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",0,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(浏览显示);
  }

  第一条 = new JButton(按钮集[1]);
  第一条.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    记录条数1 = 0;
    文本域.setText(表格数据[记录条数1][字段序号]);
   }
  });
  第一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",1,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(第一条);
  }
  下一条 = new JButton(按钮集[2]);
  下一条.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (记录条数1 < 记录条数 - 1) {
     记录条数1++;
     文本域.setText(表格数据[记录条数1][字段序号]);
    }
   }
  });
  下一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",2,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(下一条);
  }
  上一条 = new JButton(按钮集[3]);
  上一条.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (记录条数1 > 0) {
     记录条数1--;
     文本域.setText(表格数据[记录条数1][字段序号]);
    }
   }
  });
  上一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",3,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(上一条);
  }
  最后一条 = new JButton(按钮集[4]);
  最后一条.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    记录条数1 = 记录条数 - 1;
    文本域.setText(表格数据[记录条数1][字段序号]);
   }
  });
  最后一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",4,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(最后一条);
  }
  打印预览 = new JButton(按钮集[5]);
  打印预览.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (打印格式文件名.trim().length() > 0)
     dataPreview1.printView1(表格数据, 打印格式文件名);
    else
     dataPreview0.printView1(列名, 表格数据, 列数据宽度, 表名 + "表格预览");
   }
  });
  打印预览.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",5,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(打印预览);
  }
  打印 = new JButton(按钮集[6]);
  打印.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (打印格式文件名.trim().length() > 0)
     dataPrint1.print1(表格数据, 打印格式文件名);
    else{
     final JTable table = null;
     final DefaultTableModel model;
     model = new DefaultTableModel(表格数据, 列名); // 建立表格模型
     for (int i = 0; i < 列名.length; i++) {
      TableColumn tc = table.getColumn(列名[i]);// 返回表格的列对象
      JTableHeader header = table.getTableHeader();
      if (列数据宽度[i] < 列名[i].length())
       列数据宽度[i] = 列名[i].length();
      tc.setPreferredWidth(列数据宽度[i] * 9);
      tc.setMaxWidth(列数据宽度[i] * 9);
     }
     try {
      table.print();
     } catch (PrinterException e1) {
      e1.printStackTrace();
     }
   }
  }
  });
  打印.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",6,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(打印);
  }
  导出 = new JButton(按钮集[7]);
  导出.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    dataTransfer0.Trans(列名, 列数据类型, 列数据宽度, 按钮号表2, 表格数据, 表名);
   }
  });
  导出.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",7,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(导出);
  }
  退出 = new JButton(按钮集[8]);
  退出.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    panel.setVisible(false);
    frame.setVisible(false);
    frame.dispose();
   }
  });
  退出.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",8,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(退出);
  }
  frame.getContentPane().add(panel, null); // 安装面板
  frame.setVisible(true); // 安装窗口
  frame.getContentPane().add(panel, BorderLayout.SOUTH);
 }
}


25.源码25,部件程序,对多数据表中某一个文本类字段检索查询
/**
 * 程序文件名:dataQuery16.java
 * 作者:程学先
 * 完成时间:2013年11月17日
 * 部件功能:对多数据表中某一个文本类字段检索查询,可以应用字典表改变标签内容。
 * 被调用语句:datadataQuery16.means(parameter);
 * 要求提供的参数:“表名”(parameter[4])。
 * 如果欲打印,必须提供“打印格式文件名”(parameter[15])
 * “字段号表”(parameter[8]),按钮号表2(parameter[12])。
 * 打印格式文件是利用printFormat1.java生成的格式文件。
 * 程序中设计了一个下拉组合框和一个文本框,组合框中列出供用户选择的字段名;
 * 文本框供操作者输入检索字,之后按下“查询按钮”便可组织查询。
 * 另外提供表格式显示、打印预览、打印、导出等按钮。
 * 导出通过调用dataTransfer0.java实现,需要给出按钮号表()(借按钮号表2传入)。
 * 检索字的格式:
 * 检索字区分大、小写。  
 * 空格、|、-、( )、#、*均为特殊意义字符(注意均应为英文字符),
 * 字符两边不要有空格。
 * 空格表示要求两边内容均要包含在内。
 * “|”表示要求两边内容至少有一个包含在内
 * “-”表示后边内容不包含在内。
 * “( )”表示其内部分为整体内容,全要满足。
 * “#”表示在查找的二个词间可能有若干个任意的字符,
 * 任意字符的个数不多于#号的个数。
 * “*”表示在查找的二个词间可能有任意多个任意字符。
 * 只是检索内容中的一个字。
 * 为辅助学习SQL语句,设计了一个文本域用来存放生成的SQL语句,操作者可以手工修改该语句,
 * 之后执行,观察SQL语句设计正确性。注意写语句时要用数据库中定义的字段名,不能用字典表
 * 处理之后的名字。
 */
import java.awt.*;
import java.awt.event.*;
import java.awt.print.PrinterException;

import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import java.io.*;

public class dataQuery16 extends JFrame {
 static dataQuery16 frame = new dataQuery16();
 static String 表名 = "";
 static String 字典表名;
 static String 表名表;
 static Choice choice;
 static JTextField aTextField;
 static JButton 浏览显示, 第一条, 下一条, 上一条, 最后一条, 打印预览, 打印, 导出, 退出;
 static String s1 = "", s2 = "", s3 = "", s4 = "";
 static ResultSet rs;
 static int b = 0, c = 0;
 static int 列数;
 static int 字段序号 = 0;
 static String[][] 列名, 列名0;
 static String 打印格式文件名;
 static String 字段号表;
 static String 字段名表;
 static String 连接条件;
 static String 字段名字串;
 static String[] 字段名串;
 static String 按钮号表2 = "";
 static String[][] 关系表 = { { " > ", "大于" }, { " < ", "小于" },
   { " = ", "等于" }, { " >= ", "大于等于" }, { " <= ", "小于等于" },
   { "<>", "不等于" }, { " like ", "包含" }, { " not like ", "不包含" } };
 static String[] 列数据类型;
 static int[] 列数据宽度;
 static int 记录条数, 记录条数1;
 static String[][] 表格数据;
 static Connection con;
 static ResultSetMetaData rsmd3;
 static Statement sta3;
 static int 窗口宽 = 800, 窗口高 = 700;
 static JTextArea 文本域, 文本域2;
 static String[] 按钮集 = null;
 static String 要求按钮号表;
 static int 按钮数 = 0, 按钮宽 = 0;

 public static void means(String[] parameter) {
  frame = new dataQuery16();
  表名 = "";
  s1 = "";
  s2 = "";
  s3 = "";
  b = 0;
  c = 0;
  字段序号 = 0;
  关系表[0][0] = " > ";
  关系表[0][1] = "大于";
  关系表[1][0] = " < ";
  关系表[1][1] = "小于";
  关系表[2][0] = " = ";
  关系表[2][1] = "等于";
  关系表[3][0] = " >= ";
  关系表[3][1] = "大于等于";
  关系表[4][0] = " <= ";
  关系表[4][1] = "小于等于";
  关系表[5][0] = " <> ";
  关系表[5][1] = "不等于";
  关系表[6][0] = " like ";
  关系表[6][1] = "包含";
  关系表[7][0] = " not like ";
  关系表[7][1] = "不包含";
  窗口宽 = 800;
  窗口高 = 700;
  String[] 按钮集01 = { "浏览显示", "第一条", "下一条", "上一条", "最后一条", "打印预览", "打印",
    "导出", "退出" };
  按钮集 = new String[按钮集01.length];
  按钮数 = 0;
  for (int i0 = 0; i0 < 按钮集01.length; i0++)
   按钮集[i0] = 按钮集01[i0];
  if (parameter[11].length() > 0) {
   要求按钮号表 = parameter[11];// 需要显示的按钮的顺序号
   // 将中文分号、冒号、句号、英文分号统一为英文分号
   要求按钮号表 = 要求按钮号表.replaceAll(";", ";");
   要求按钮号表 = 要求按钮号表.replaceAll("。", ";");
   要求按钮号表 = 要求按钮号表.replaceAll(":", ";");
   要求按钮号表 = 要求按钮号表.replaceAll(":", ";");
   if (要求按钮号表.indexOf(";") > 0) { // 如果有按钮更名要求
    String s601[] = 要求按钮号表.split(",");
    要求按钮号表 = "";
    for (int i01 = 0; i01 < s601.length; i01++) {
     if (s601[i01].indexOf(";") > 0) {
      String s602[] = s601[i01].split(";");
      按钮集[Integer.parseInt((s602[0]))] = s602[1];
      要求按钮号表 = 要求按钮号表 + "," + s602[0];// 只留号,去更名
      按钮数++;
     } else {
      要求按钮号表 = 要求按钮号表 + "," + s601[i01];// 只留号,原无更名
      按钮数++;
     }
    }
   } // 如果没有按钮更名要求,要求按钮号长度又大于0,保持原有摸样
   else {
    String s601[] = 要求按钮号表.split(",");
    要求按钮号表 = "";
    for (int i01 = 0; i01 < s601.length; i01++) {
     if (i01 == 0)
      要求按钮号表 = s601[i01];
     else
      要求按钮号表 = 要求按钮号表 + "," + s601[i01];
     按钮数++;
    }
   }
  } else {
   要求按钮号表 = ""; // 没输入要求按钮号,定全部按钮号
   for (int i1 = 0; i1 < 按钮集.length; i1++) {
    if (i1 == 0)
     要求按钮号表 = 要求按钮号表 + i1;
    else
     要求按钮号表 = 要求按钮号表 + "," + i1;
    按钮数++;
   }
  }
  要求按钮号表 = "," + 要求按钮号表 + ",";
  窗口宽 = main1.窗口宽;
  窗口高 = main1.窗口高;
  int m1, m2;
  try {
   if (parameter[17].length() == 0) {
    m1 = 0;
    m2 = 0;
   } else {
    m1 = Integer.parseInt(parameter[17]);// 宽度参数
    m2 = Integer.parseInt(parameter[18]);
   }
   if (m1 > 0) {
    if (m2 < 80) {
     m1 = m1 * 10;
     m2 = m2 * 10;
    }
    窗口宽 = m1;
    窗口高 = m2;
   }
  } catch (Exception e2) {
  }
  表名 = parameter[4]; // 数据表名
  打印格式文件名 = parameter[15];
  连接条件 = parameter[20];
  字段名字串 = parameter[19];
  字段号表 = parameter[8];
  字段名表 = parameter[19];
  if (字段名表.lastIndexOf(",") == 字段名表.length() - 1)
   字段名表 = 字段名表.substring(0, 字段名表.length() - 1);
  String[] 列名2 = 字段名表.split(",");
  按钮号表2 = parameter[12];
  String[] sn = 字段号表.split(",");
  if (字段号表.length() > 0) {
   字段名表 = "";
   for (int i = 0; i < sn.length; i++)
    if (i == 0)
     字段名表 = 列名2[Integer.parseInt(sn[i])];
    else
     字段名表 = 字段名表 + "," + 列名2[Integer.parseInt(sn[i])];
  }
  String[] 列名1 = 字段名表.split(",");
  列名 = new String[2][列名1.length];
  列名[0] = 字段名表.split(",");
  列名[1] = 字段名表.split(",");
  表名表 = parameter[0];
  String[] l3 = 字段名表.split(",");
  列数 = l3.length;
  String[] l1;
  字典表名 = "";
  String s11 = 表名;
  String[] s12;
  if (表名.indexOf(",") > 0) {
   s12 = 表名.split(",");
   s11 = s12[0];
  }
  s4 = s11;
  字典表名 = "";
  String[] t1;
  if (表名表.lastIndexOf(s11 + "字典表") > 0) {
   t1 = 表名表.split(",");
   for (int i = 0; i < t1.length; i++)
    if (t1[i].lastIndexOf(s11 + "字典表") >= 0)
     字典表名 = t1[i];
  }
  s1 = "";
  for (int i = 0; i < 列数; i++) {
   s1 = s1 + 列名[0][i] + ",";
  }
  s1 = s1.substring(0, s1.length() - 1);
  int 列数0 = 0;
  if (字典表名.length() > 0) {
   try {
    con = main1.getConn();
    sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
    s2 = "select * from " + 字典表名;
    rs = sta3.executeQuery(s2);
    rs.last();
    int kl = rs.getRow();
    ResultSetMetaData rsmd = rs.getMetaData();
    列数0 = rsmd.getColumnCount();
    列名0 = new String[2][kl];
    int numberOfColumns = rsmd.getColumnCount(); // 记录数
    String s14 = "";
    String s15 = "";
    int b = 1;
    while (rs.absolute(b)) {
     b++;
     s14 = rs.getString(1); // 字段名
     s15 = rs.getString(2); // 标签名
     列名0[0][b - 2] = s14;
     列名0[1][b - 2] = s15;
     for (int j = 0; j < 列名[0].length; j++) {
      if ((列名[0][j].trim().equals(s14.trim()))
        || (列名[0][j].indexOf("." + s14) > 0)) {
       列名[1][j] = s15;
       break;
      }
     }
    }
    rs.close(); // 关闭查询结果集
    con.close();
    sta3.close();
   } catch (SQLException e) {
    JOptionPane.showMessageDialog(null, "连接数据库出错!");
   }
  }
  try {
   con = main1.getConn();
   sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
     ResultSet.CONCUR_UPDATABLE);
   if (连接条件.trim().length() > 0)
    s1 = "select " + s1 + " from " + 表名 + " where " + 连接条件;
   else
    s1 = "select " + s1 + " from " + 表名;
   ResultSet rs = sta3.executeQuery(s1);
   rsmd3 = rs.getMetaData();
   列数据类型 = new String[列数]; // 定义列字段类型数组
   列数据宽度 = new int[列数]; // 定义列数据宽度
   for (int i = 0; i < 列数; i++) {
    列名[0][i] = rsmd3.getColumnName(i + 1); // 获取列名存到数组中
    列名[1][i] = 列名[0][i];
    if (列数0 > 0)
     for (int j = 0; j < 列名0[0].length; j++) {
      if ((列名0[0][j].trim().equals(列名[0][i]))
        || (列名0[0][j].indexOf("." + 列名[0][i]) > 0)) {
       列名[1][i] = 列名0[1][j];
       break;
      }
     }
    列数据类型[i] = rsmd3.getColumnTypeName(i + 1);
    列数据宽度[i] = rsmd3.getColumnDisplaySize(i + 1);
    if (列数据宽度[i] < 列名[0][i].length())
     列数据宽度[i] = 列名[0][i].length();
    if (列数据宽度[i] < 列名[1][i].length())
     列数据宽度[i] = 列名[1][i].length();
    if (列数据宽度[i] > 50)
     列数据宽度[i] = 50;
    b++;
   }
   int 记录条数 = 0; // 记录条数
   rs.last();
   记录条数 = rs.getRow();
   表格数据 = new String[记录条数][列数];
   rs.absolute(1);
   c = 0;
   b = 0;
   while (c < 记录条数) {
    rs.absolute(c + 1);
    while (b < 列数) {
     表格数据[c][b] = rs.getString(b + 1);
     b++;
    }
    c++;
    b = 0;
   }
   rs.close();
   sta3.close();
  } catch (SQLException e) {
   JOptionPane.showMessageDialog(null, "读取数据出错!");
  }
  frame.setTitle("查询部件程序                        作者:程学先"); // 窗口标题
  frame.setBounds(10, 10, 窗口宽 - 10, 窗口高 - 10);
  frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  frame.getContentPane().setLayout(null);
  final JPanel panel = new JPanel(false);
  panel.setLayout(null);
  panel.setBounds(20, 20, 窗口宽 - 50, 窗口高 - 20);
  JLabel label = new JLabel("请选择字段名:");
  label.setBounds(20, 30, 100, 20);
  panel.add(label);
  choice = new Choice();
  for (int i = 0; i < 列数; i++) {
   if ((main1.文字数据类型.lastIndexOf(列数据类型[i])) >= 0)
    choice.add(列名[1][i]);
  }
  choice.setBounds(120, 30, 100, 60);
  panel.add(choice);
  aTextField = new JTextField("", 10);
  aTextField.setBounds(220, 30, 330, 20);
  panel.add(aTextField);
  final JButton selectButton = new JButton("文本检索");
  selectButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     con = main1.getConn();// 连接数据库
     sta3 = con.createStatement(
       ResultSet.TYPE_SCROLL_INSENSITIVE,
       ResultSet.CONCUR_UPDATABLE);
     String 检索内容0 = aTextField.getText();
     int n0 = 检索内容0.length();
     检索内容0 = 检索内容0 + " ";
     int i = 0, j = 0, k1 = 0, k2 = 0;
     s1 = "";
     s2 = "";
     String[] s7 = choice.getSelectedItem().trim().split(",");
     s3 = s7[0]; // 字段名
     for (int i2 = 0; i2 < 列名[0].length; i2++) {
      if (列名[1][i2].equals(s3))
       s3 = 列名[0][i2];
     }
     if (字段名表.indexOf(s4 + "." + s3) >= 0)
      s3 = s4 + "." + s3;
     String[] s6 = 字段名表.split(",");
     for (int i1 = 0; i1 < s6.length; i1++)
      if (s3.trim().equals(s6[i1].trim()))
       字段序号 = i1;
     for (i = 0; i < n0; i++) {
      if (检索内容0.substring(i, i + 1).equals("(")) {
       if (k1 < 2) {
        s1 = s1 + "(";
       } else if (k1 == 3) {
        s1 = s1 + " and " + "(";
       } else if (k1 == 4) {
        s1 = s1 + " or " + "(";
       } else if (k1 == 5) {
        s1 = s1 + " and not " + "(";
       }
       s2 = "";
       k1 = 1;
      } else if (检索内容0.substring(i, i + 1).equals(")")) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%')";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%')";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%')";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%')";
       }
       k1 = 2;
       s2 = "";
      } else if (检索内容0.substring(i, i + 1).equals("#"))
       s2 = s2 + "-";
      else if (检索内容0.substring(i, i + 1).equals("*"))
       s2 = s2 + "%";
      else if ((检索内容0.substring(i, i + 1).equals(" "))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%'";
       }
       k1 = 3;
       s2 = "";
      } else if ((检索内容0.substring(i, i + 1).equals("|"))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%'";
       }
       k1 = 4;
       s2 = "";
      } else if ((检索内容0.substring(i, i + 1).equals("-"))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%'";
       }
       k1 = 5;
       s2 = "";
      } else {
       s2 = s2 + 检索内容0.substring(i, i + 1);
      }
     }
     if (k1 < 2) {
      s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 3) {
      s1 = s1 + " and " + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 4) {
      s1 = s1 + " or " + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 5) {
      s1 = s1 + " and " + s3 + " not like " + "'%" + s2
        + "%'";
     }
     if (连接条件.trim().length() > 0)
      s1 = "select " + 字段名表 + " from " + 表名 + " where "
        + 连接条件 + " and " + s1;
     else
      s1 = "select " + 字段名表 + " from " + 表名 + " where " + s1;
     文本域2.setText(s1);
     ResultSet rs = sta3.executeQuery(s1);
     记录条数 = 0; // 记录条数
     rs.last();
     记录条数 = rs.getRow();
     if (记录条数 < 1) {
      JOptionPane.showMessageDialog(null, "未查到满足条件的记录!");
      return;
     }
     表格数据 = new String[记录条数][s6.length];
     rs.absolute(1);
     c = 0; // 行号
     b = 0; // 列号
     记录条数1 = 0;
     while (c < 记录条数) {
      rs.absolute(c + 1);
      while (b < s6.length) {
       表格数据[c][b] = rs.getString(b + 1);
       b++;
      }
      c++;
      b = 0;
     }
     文本域.setText(表格数据[记录条数1][字段序号]);
     rs.close(); // 关闭查询结果集
     sta3.close(); // 关闭连接
     con.close();
    } catch (Exception e1) {
     JOptionPane.showMessageDialog(null, "查询数据出错!" + s1);
    }
   }
  });
  selectButton.setBounds(550, 30, 90, 20);
  panel.add(selectButton);

  JButton 格式提示 = new JButton("格式提示");
  格式提示.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    JFrame frame1 = new JFrame();
    frame1.setTitle("查询部件程序");
    frame1.setBounds(350, 140, 440, 290);
    frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame1.getContentPane().setLayout(null);
    String s0 = "";
    char x1 = 10;
    s0 = "检索字的格式:检索字区分大、小写。" + x1
      + "空格、&、|、-、( )、$、#、*、\\ 均为特殊意义字符" + x1
      + "(注意均应为英文字符),字符两边不要有空格。" + x1
      + "空格或& 表示要求两边内容均要包含在内。" + x1 + "“|”表示要求两边内容至少有一个包含在内"
      + x1 + "“-”表示后边内容不包含在内。" + x1
      + "“( )”表示其内部分为整体内容,全要满足。" + x1
      + "“$”表示其后的词在标题之首,要放在全文检索词最前面。" + x1
      + "“#”表示在查找的二个词间可能有若干个任意的字符," + x1 + "任意字符的个数不多于#号的个数。"
      + x1 + "“*”表示在查找的二个词间可能有任意多个任意字符。" + x1
      + "“\\”后边应当是上述字符中任意一个," + x1
      + "表示在此处该字符不具有上述特殊意义,只是检索内容中的一个字。";
    JTextArea 文本域1;
    文本域1 = new JTextArea(s0, 10, 10);// 建立文本域
    JScrollPane 滚动条1 = new JScrollPane(文本域1);
    滚动条1.setBounds(10, 10, 415, 235);
    frame1.add(滚动条1);// 安装滚动条
    frame1.setVisible(true);
   }
  });
  格式提示.setBounds(640, 30, 90, 20);
  panel.add(格式提示);
  文本域 = new JTextArea("", 10, 10);// 建立文本域
  JScrollPane 滚动条 = new JScrollPane(文本域);
  滚动条.setBounds(20, 120, 700, 450);
  panel.add(滚动条);// 安装滚动条
  JLabel label2 = new JLabel("SQL查询语句");
  label2.setBounds(20, 60, 100, 20);
  panel.add(label2);
  文本域2 = new JTextArea("", 10, 10);
  文本域2.setLineWrap(true);
  JScrollPane 滚动条2 = new JScrollPane(文本域2);
  滚动条2.setBounds(120, 60, 490, 50);
  panel.add(滚动条2);// 安装滚动条

  JButton 执行 = new JButton("执行SQL语句");
  执行.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     con = main1.getConn();
     sta3 = con.createStatement(
       ResultSet.TYPE_SCROLL_INSENSITIVE,
       ResultSet.CONCUR_UPDATABLE);
     s1 = 文本域2.getText();
     ResultSet rs = sta3.executeQuery(s1);
     ResultSetMetaData rsmdt4 = rs.getMetaData();
     列数 = rsmdt4.getColumnCount();
     记录条数 = 0;
     rs.last();
     记录条数 = rs.getRow();
     if (记录条数 < 1) {
      JOptionPane.showMessageDialog(null, "未查到满足条件的记录!");
      return;
     }
     String[] s6 = 字段名表.split(",");
     表格数据 = new String[记录条数][列数];
     rs.absolute(1);
     c = 0; // 行号
     b = 0; // 列号
     记录条数1 = 0;
     while (c < 记录条数) {
      rs.absolute(c + 1);
      while (b < 列数) {
       表格数据[c][b] = rs.getString(b + 1);
       b++;
      }
      c++;
      b = 0;
     }
     文本域.setText(表格数据[记录条数1][字段序号]);
     rs.close(); // 关闭查询结果集
     sta3.close(); // 关闭连接
     con.close();
    } catch (Exception e1) {
     JOptionPane.showMessageDialog(null, "查询数据出错!" + s1);
    }
   }
  });
  执行.setBounds(615, 60, 120, 20);
  panel.add(执行);
  按钮宽 = (窗口宽 - 60) / 按钮数;
  int 左边距 = 30;
  浏览显示 = new JButton(按钮集01[0]);
  浏览显示.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    tableTenance.tableModel(800, 600, 列名[1], 列数据宽度, 表格数据, 列数据类型);
   }
  });
  浏览显示.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",0,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(浏览显示);
  }
  第一条 = new JButton(按钮集[1]);
  第一条.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    记录条数1 = 0;
    文本域.setText(表格数据[记录条数1][字段序号]);
   }
  });
  第一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",1,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(第一条);
  }
  下一条 = new JButton(按钮集[2]);
  下一条.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (记录条数1 < 记录条数 - 1) {
     记录条数1++;
     文本域.setText(表格数据[记录条数1][字段序号]);
    }
   }
  });
  下一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",2,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(下一条);
  }
  上一条 = new JButton(按钮集[3]);
  上一条.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (记录条数1 > 0) {
     记录条数1--;
     文本域.setText(表格数据[记录条数1][字段序号]);
    }
   }
  });
  上一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",3,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(上一条);
  }
  最后一条 = new JButton(按钮集[4]);
  最后一条.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    记录条数1 = 记录条数 - 1;
    文本域.setText(表格数据[记录条数1][字段序号]);
   }
  });
  最后一条.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",4,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(最后一条);
  }
  打印预览 = new JButton(按钮集[5]);
  打印预览.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (打印格式文件名.trim().length() > 0)
     dataPreview1.printView1(表格数据, 打印格式文件名);
    else
     dataPreview0.printView1(列名[1], 表格数据, 列数据宽度, 表名 + "表格预览");

   }
  });
  打印预览.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",5,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(打印预览);
  }
  打印 = new JButton(按钮集[6]);
  打印.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (打印格式文件名.trim().length() > 0)
     dataPrint1.print1(表格数据, 打印格式文件名);
    else{
     final JTable table = null;
     final DefaultTableModel model;
     model = new DefaultTableModel(表格数据, 列名[1]); // 建立表格模型
     for (int i = 0; i < 列名[1].length; i++) {
      TableColumn tc = table.getColumn(列名[1][i]);// 返回表格的列对象
      JTableHeader header = table.getTableHeader();
      if (列数据宽度[i] < 列名[1][i].length())
       列数据宽度[i] = 列名[1][i].length();
      tc.setPreferredWidth(列数据宽度[i] * 9);
      tc.setMaxWidth(列数据宽度[i] * 9);
     }
     try {
      table.print();
     } catch (PrinterException e1) {
      e1.printStackTrace();
     }
    }
   }
  });
  打印.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",6,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(打印);
  }
  导出 = new JButton(按钮集[7]);
  导出.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    dataTransfer0.Trans(列名[1], 列数据类型, 列数据宽度, 按钮号表2, 表格数据, 表名);
   }
  });
  导出.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",7,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(导出);
  }
  退出 = new JButton(按钮集[8]);
  退出.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    panel.setVisible(false);
    frame.setVisible(false);
    frame.dispose();
   }
  });
  退出.setBounds(左边距, 窗口高 - 100, 按钮宽, 20);
  if (要求按钮号表.indexOf(",8,") >= 0) {
   左边距 = 左边距 + 按钮宽;
   panel.add(退出);
  }
  frame.getContentPane().add(panel, null); // 安装面板
  frame.setVisible(true); // 安装窗口
  frame.getContentPane().add(panel, BorderLayout.SOUTH);
 }
}


26.源码26,公共程序,导出数据到txt文件、Excel文件、Word文件、PDF文件与xml文件公共程序
/**
 * 程序文件名:dataTransfer0.java
 * 作者:程学先:
 * 功能:导出数据到txt文件、Excel文件、Word文件、PDF文件与xml文件公共程序。
 * 导出到word与excel有覆盖式与添加式两种。
 * 完成日期:2013年1月22日
 * 被调用语句:dataTransfer0.Trans(String [] 列名1,String [] 表列数据类型1,
 * int [] 表列数据宽度1,String 要求按钮号表1,String [][] 表格数据1,String 表名);
 * 本部件预设的按钮控件共10个,序号及按钮名:1导出到word文件、2添加式导出到word文件、
 * 3导出到excel文件、4添加式导出到excel文件、5标准格式导出到txt文件、6紧凑格式导出到txt、
 * 7自定义格式导出到txt文件、8导出到xml文件、9导出到PDF文件、10退出。可设置“要求按钮号”选择。
 * 进入程序后要求首先输入导出文件名。
 * 自定义格式导出到txt文件将提问分隔符,每条记录一行,各类型数据以自然形式表示,
 * 字符串类型数据也不加双引号,字段间加所输入的分隔符分隔。
 * 分隔符可以由多个字符组成,例如:####。适应text等大数据的传送。
 * 导出到txt文件、Excel文件、Word文件、PDF文件要求下载:
 * poi-3.8-20120326.jar、poi-scratchpad-3.9-20121203.jar、jacob.jar、
 * iText-5.0.5.jar并构建好路径。
 *
 */
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.io.File.*;
import javax.swing.*;
import javax.swing.table.*;
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;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.ss.usermodel.Sheet;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import java.sql.*;
import java.util.ArrayList;
import java.util.Vector;

public class dataTransfer0 extends JFrame {
 private static JTable 表格1; // 创建表格
 static Connection con;
 static String 表名; // 数据表名
 static int 窗口宽 = 1200, 窗口高 = 700;// 窗口宽、窗口高
 static int 表格列数; // 数据表列数
 static String[] 表格列名; // 表格列名
 static String[][] 表格数据;
 static String[] 表列数据类型; // 存放表格各列数据类型的数组
 static int[] 表列数据宽度, 表列小数位数; // 存放当前记录各字段数据宽度的数组
 static int 记录条数, 记录条数1 = 0; // 记录条数
 static String[] 按钮集 = null;
 static String 要求按钮号表; // 需要显示的按钮的顺序号
 static int 按钮左边距 = 0, 按钮宽 = 0;
 static DefaultTableModel 表格模型;
 static JTextField fa1;
 static String 导出表名 = "", 导出文件名 = "";
 static String excel导出文件名 = "";
 static String word导出文件名 = "";
 static String xml导出文件名 = "";
 static String pdf导出文件名 = "";
 static String s1 = "", s2 = "", s3 = "";
 static char x1 = 10, x2 = 13, x3 = '"', x4 = ',';
 static String[] f01;
 static String[] 当前字段值;
 static PreparedStatement pstmt;
 static Statement sta;

 static void Trans(String[] 列名1, String[] 表列数据类型1, int[] 表列数据宽度1,
   String 要求按钮号表1, String[][] 表格数据1, String 表名1) {
  窗口宽 = 1200;
  窗口高 = 700;// 窗口宽、窗口高
  记录条数1 = 0; // 记录条数
  按钮左边距 = 0;
  按钮宽 = 0;
  导出表名 = "";
  导出文件名 = "";
  excel导出文件名 = "";
  word导出文件名 = "";
  xml导出文件名 = "";
  s1 = "";
  s2 = "";
  s3 = "";
  x1 = 10;
  x2 = 13;
  x3 = '"';
  x4 = ',';
  File file = new File(".\\com\\iText-5.0.5.jar");
  if (!file.exists()) {
   JOptionPane.showMessageDialog(null, "请将有关jar文件包下载到com文件夹中!");
   return;
  }
  file = new File(".\\com\\jacob.jar");
  if (!file.exists()) {
   JOptionPane.showMessageDialog(null, "请将有关jar文件包下载到com文件夹中!");
   return;
  }
  file = new File(".\\com\\poi-3.8-20120326.jar");
  if (!file.exists()) {
   JOptionPane.showMessageDialog(null, "请将有关jar文件包下载到com文件夹中!");
   return;
  }
  file = new File(".\\com\\PDFBox-0.7.3.jar");
  if (!file.exists()) {
   JOptionPane.showMessageDialog(null, "请将有关jar文件包下载到com文件夹中!");
   return;
  }
  final dataTransfer0 frame = new dataTransfer0(); // 创建窗体
  frame.setTitle("数据导出到文件二级部件                           作者:程学先"); // 设置窗体标题
  frame.setBounds(10, 10, 窗口宽, 窗口高); // 设置窗体的位置和大小
  frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体的默认关闭模式
  表名 = 表名1;
  表格列数 = 列名1.length; // 数据表列数
  表格列名 = new String[表格列数]; // 定义列名数组
  for (int i = 0; i < 表格列数; i++)
   表格列名[i] = 列名1[i];
  表列数据类型 = new String[表格列数]; // 定义列字段类型数组
  for (int i = 0; i < 表格列数; i++)
   表列数据类型[i] = 表列数据类型1[i];
  表列数据宽度 = new int[表格列数]; // 定义列数据宽度
  for (int i = 0; i < 表格列数; i++)
   表列数据宽度[i] = 表列数据宽度1[i];
  表格数据 = new String[表格数据1.length][表格列数];
  for (int i = 0; i < 表格数据1.length; i++)
   for (int j = 0; j < 表格列数; j++)
    表格数据[i][j] = 表格数据1[i][j];
  要求按钮号表 = 要求按钮号表1; // 需要显示的按钮的顺序号
  记录条数 = 表格数据.length;
  要求按钮号表 = "," + 要求按钮号表1 + ",";
  final JScrollPane scrollPane = new JScrollPane(); // 创建滚动面板
  scrollPane.setBounds(0, 0, 窗口宽 - 100, 窗口高 - 180); // 定义滚动面板大小位置
  frame.setLayout(null);
  frame.getContentPane().add(scrollPane, BorderLayout.CENTER); // 在窗体中央添加滚动面板
  表格模型 = new DefaultTableModel(表格数据, 表格列名); // 创建表格模型
  表格1 = new JTable(表格模型);// 创建指定表格模型的表格
  表格1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  表格1.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
  for (int i = 0; i < 表格列数; i++) { // 设置表格每列宽度
   TableColumn tc = 表格1.getColumn(表格列名[i]);// 返回表格的列对象
   JTableHeader header = 表格1.getTableHeader();
   tc.setPreferredWidth(表列数据宽度[i] * 14);
   tc.setMaxWidth(表列数据宽度[i] * 14);
   tc.sizeWidthToFit();
  }
  scrollPane.setViewportView(表格1);
  表格1.addMouseListener(new MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
   }
  });
  JLabel fl1 = new JLabel("文件名");
  fl1.setBounds(100, 窗口高 - 160, 50, 20);
  frame.add(fl1);
  fa1 = new JTextField("", 20);
  fa1.setBounds(150, 窗口高 - 160, 200, 20);
  frame.add(fa1); // 加入文本框
  fa1.addMouseListener(new MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
    if (fa1.getText().length() < 1) {
     final JFileChooser fc = new JFileChooser(".\\");
     fc.showOpenDialog(null);
     if (fc.getSelectedFile() != null)
      fa1.setText(fc.getSelectedFile().toString());
     导出文件名 = fc.getSelectedFile().toString();
     excel导出文件名 = 导出文件名;
     if (excel导出文件名.lastIndexOf(".xls") < 0)
      if (excel导出文件名.lastIndexOf(".") < 0)
       excel导出文件名 = excel导出文件名 + ".xls";
      else
       excel导出文件名 = excel导出文件名.substring(0,
         excel导出文件名.lastIndexOf("."))
         + ".xls";
     word导出文件名 = 导出文件名;
     if (word导出文件名.lastIndexOf(".doc") < 0)
      if (word导出文件名.lastIndexOf(".") < 0)
       word导出文件名 = word导出文件名 + ".doc";
      else
       word导出文件名 = word导出文件名.substring(0,
         word导出文件名.lastIndexOf("."))
         + ".doc";
     xml导出文件名 = 导出文件名;
     if (xml导出文件名.lastIndexOf(".xml") < 0)
      if (xml导出文件名.lastIndexOf(".") < 0)
       xml导出文件名 = xml导出文件名 + ".xml";
      else
       xml导出文件名 = xml导出文件名.substring(0,
         xml导出文件名.lastIndexOf("."))
         + ".xml";
     pdf导出文件名 = 导出文件名;
     if (pdf导出文件名.lastIndexOf(".pdf") < 0)
      if (pdf导出文件名.lastIndexOf(".") < 0)
       pdf导出文件名 = pdf导出文件名 + ".pdf";
      else
       pdf导出文件名 = pdf导出文件名.substring(0,
         pdf导出文件名.lastIndexOf("."))
         + ".pdf";
    }
   }
  });
  int j = 10;
  if (要求按钮号表.length() < 3)
   j = 10;
  else
   for (int i = 0; i < 10; i++)
    if (要求按钮号表.lastIndexOf("," + i + ",") >= 0)
     j = j + 1;
  int 按钮宽 = (窗口宽 - 20) / j;
  int 按钮左边距 = 5;
  for (int i = 0; i < 100; i++)
   s3 = s3 + " ";
  JButton 到Word文件 = new JButton("到Word文件");
  到Word文件.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (word导出文件名.length() == 0)
     word导出文件名 = JOptionPane.showInputDialog(
       "请输入导出文件名名称  例如:F:\\java.doc", "");
    ActiveXComponent word = new ActiveXComponent("Word.Application");
    Dispatch documents = word.getProperty("Documents").toDispatch();
    try {
     Dispatch doc = Dispatch.call(documents, "Add").toDispatch();
     Dispatch selection = Dispatch.get(word, "Selection")
       .toDispatch();
     Dispatch.call(selection, "HomeKey");
     Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
     Dispatch range = Dispatch.get(selection, "Range")
       .toDispatch();
     Dispatch newTable = Dispatch.call(tables, "Add", range,
       new Variant(记录条数), new Variant(表格列数)).toDispatch();
     for (int i = 0; i < 表格数据.length; i++) {
      for (int j = 0; j < 表格列数; j++) {
       Dispatch table = Dispatch.call(tables, "Item",
         new Variant(1)).toDispatch();
       Dispatch cell = Dispatch.call(table, "Cell",
         new Variant(i + 1), new Variant(j + 1))
         .toDispatch();
       Dispatch.call(cell, "Select");
       Dispatch.put(selection, "Text", 表格数据[i][j]);
      }
     }
     Dispatch.call((Dispatch) Dispatch.call(word, "WordBasic")
       .getDispatch(), "FileSaveAs", word导出文件名);

    } catch (Exception e1) {
     e1.printStackTrace();
    } finally {
     Dispatch.call(word, "Quit");
    }
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",0,") >= 0)) {
   到Word文件.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 10, 20);
   frame.add(到Word文件);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton 加到Word = new JButton("加到Word");
  加到Word.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (word导出文件名.length() == 0)
     word导出文件名 = JOptionPane.showInputDialog(
       "请输入导出文件名名称  例如:F:\\java.doc", "");
    try {
     FileInputStream in = new FileInputStream(
       new File(word导出文件名));
     WordExtractor extractor = null;
     extractor = new WordExtractor(in);
     String 内容 = extractor.getText();
     int k = 0;
     for (int i = 0; i < 内容.length(); i++) {
      if ((byte) (内容.charAt(i)) == 9)
       k++;
      if (内容.charAt(i) == '\r' || 内容.charAt(i) == '\n')
       break;
     }
     ArrayList<String> list1 = new ArrayList<String>();
     String s0 = "", 列 = "";
     String[] 记录 = new String[k + 1];
     int 条数 = 0, 列数0 = 0;
     ;
     if (表格列数 != k + 1) {
      JOptionPane.showMessageDialog(null,
        "原文件中数据结构与数据表不同,不能作添加式导出!");
     } else
      for (int i = 0; i < 内容.length(); i++) {
       if ((byte) (内容.charAt(i)) == 10) {
        list1.add(s0);
        条数++;
        s0 = "";
       } else if ((byte) (内容.charAt(i)) != 13)
        s0 = s0 + 内容.substring(i, i + 1);
      }
     for (int i = 0; i < 条数; i++) {
      s0 = list1.get(i);
      列 = "";
      列数0 = 0;
      if (s0.length() > 1) {
       for (int j = 0; j < s0.length(); j++) {
        if (((byte) (内容.charAt(j)) < 19)
          || (j == s0.length() - 1)) {
         if (j == s0.length() - 1)
          列 = 列 + s0.substring(j, j + 1);
         记录[列数0] = 列;
         列数0++;
         列 = "";
        } else {
         列 = 列 + s0.substring(j, j + 1);
        }
       }
       表格模型.addRow(记录);
       记录条数++;
       列数0 = 0;
      }
     }
     File 目标文件名 = new File(word导出文件名);
     ActiveXComponent word = new ActiveXComponent(
       "Word.Application");
     Dispatch documents = word.getProperty("Documents")
       .toDispatch();
     try {
      Dispatch doc = Dispatch.call(documents, "Add")
        .toDispatch();
      Dispatch selection = Dispatch.get(word, "Selection")
        .toDispatch();
      Dispatch.call(selection, "HomeKey");
      Dispatch tables = Dispatch.get(doc, "Tables")
        .toDispatch();
      Dispatch range = Dispatch.get(selection, "Range")
        .toDispatch();
      Dispatch newTable = Dispatch.call(tables, "Add", range,
        new Variant(记录条数), new Variant(表格列数))
        .toDispatch();

      for (int i1 = 0; i1 < 表格模型.getRowCount(); i1++) {
       for (int j = 0; j < 表格列数; j++) {
        Dispatch table = Dispatch.call(tables, "Item",
          new Variant(1)).toDispatch();
        Dispatch cell = Dispatch
          .call(table, "Cell",
            new Variant(i1 + 1),
            new Variant(j + 1))
          .toDispatch();
        Dispatch.call(cell, "Select");
        Dispatch.put(selection, "Text", 表格模型
          .getValueAt(i1, j).toString());
       }
      }
      Dispatch.call(
        (Dispatch) Dispatch.call(word, "WordBasic")
          .getDispatch(), "FileSaveAs", word导出文件名);

     } catch (Exception e1) {
      e1.printStackTrace();
     } finally {
      Dispatch.call(word, "Quit");
     }
    } catch (Exception e1) {
     e1.printStackTrace();
    }
    return;
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",1,") >= 0)) {
   加到Word.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(加到Word);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton 到Excel文件 = new JButton("到Excel文件");
  到Excel文件.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    HSSFWorkbook book = new HSSFWorkbook();
    HSSFSheet sheet = book.createSheet(表名);
    HSSFRow header = sheet.createRow(0);
    int colCount = 表格列数;
    for (int i = 0; i < 表格列数; i++) {
     HSSFCell cell = header.createCell(i);
     cell.setCellValue(new HSSFRichTextString(表格列名[i]));
    }
    for (int j = 0; j < 记录条数; j++) {
     HSSFRow row = sheet.createRow(j);
     for (int i = 0; i < colCount; i++) {
      HSSFCell cell = row.createCell(i);
      cell.setCellValue(new HSSFRichTextString(表格数据[j][i]));
     }
    }
    try {
     FileOutputStream fileO = new FileOutputStream(excel导出文件名);
     book.write(fileO);
     fileO.close();
    } catch (Exception e1) {
     e1.printStackTrace();
    }
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",2,") >= 0)) {
   到Excel文件.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(到Excel文件);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton 加到Excel = new JButton("加到Excel");
  加到Excel.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (excel导出文件名.length() == 0)
     excel导出文件名 = JOptionPane.showInputDialog(
       "请输入导入文件完整路径  例如:F:\\java.xls", "");
    InputStream is = null;
    HSSFWorkbook wbWorkbook = null;
    try {
     is = new FileInputStream(excel导出文件名);
     wbWorkbook = new HSSFWorkbook(is);
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
     JOptionPane.showMessageDialog(null, "读取文件失败,请检查路径是否正确!",
       "错误", JOptionPane.INFORMATION_MESSAGE);
    } catch (IOException e2) {
     e2.printStackTrace();
    }
    HSSFSheet sheet = wbWorkbook.getSheetAt(0);
    int lastRowNum = sheet.getLastRowNum();
    int 导入表格行数 = sheet.getPhysicalNumberOfRows();
    HSSFRow row = sheet.getRow(1);
    int 导入表格列数 = row.getPhysicalNumberOfCells();
    if (导入表格列数 != 表格列数)
     JOptionPane.showMessageDialog(null,
       "原文件中数据结构与数据表不同,不能坐添加式导出!");
    String[] val;
    String value = "";
    for (int i = 0; i < 导入表格行数; i++) {
     row = sheet.getRow(i);
     if (row != null) {
      for (int j = 0; j < 导入表格列数; j++) {
       HSSFCell cell = row.getCell(j);
       if (cell != null) {
        switch (cell.getCellType()) {
        case HSSFCell.CELL_TYPE_FORMULA:
         break;
        case HSSFCell.CELL_TYPE_NUMERIC:
         value += cell.getNumericCellValue() + ",";
         break;
        case HSSFCell.CELL_TYPE_STRING:
         value += cell.getStringCellValue() + ",";
         break;
        default:
         value += "0";
         break;
        }
       }
      }
      val = value.split(",");
      表格模型.addRow(val);
      value = "";
     }
    }
    HSSFWorkbook book = new HSSFWorkbook();
    sheet = book.createSheet(表名);
    HSSFRow header = sheet.createRow(0);
    int colCount = 表格列数;
    for (int i = 0; i < 表格列数; i++) {
     HSSFCell cell = header.createCell(i);
     cell.setCellValue(new HSSFRichTextString(表格列名[i]));
    }
    for (int j = 0; j < 表格模型.getRowCount(); j++) {
     row = sheet.createRow(j);
     for (int i = 0; i < colCount; i++) {
      HSSFCell cell = row.createCell(i);
      cell.setCellValue(new HSSFRichTextString(表格模型
        .getValueAt(j, i).toString()));
     }
    }
    try {
     FileOutputStream fileO = new FileOutputStream(excel导出文件名);
     book.write(fileO);
     fileO.close();
    } catch (Exception e1) {
     e1.printStackTrace();
    }
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",3,") >= 0)) {
   加到Excel.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(加到Excel);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton 标准格式 = new JButton("标准格式");
  标准格式.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     File file = new File(导出文件名);
     if (!file.exists()) {
      file.createNewFile();
     }
     FileOutputStream fs = new FileOutputStream(file);
     for (int j1 = 0; j1 < 记录条数; j1++) {
      for (int j2 = 0; j2 < 表格列数; j2++) {
       fs.write((表格数据[j1][j2] + s3).substring(0,
         表列数据宽度[j2]).getBytes());
      }
      fs.write(("" + x1).getBytes());
     }
     fs.close();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",4,") >= 0)) {
   标准格式.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(标准格式);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton 紧凑格式 = new JButton("紧凑格式");
  紧凑格式.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    String 类型 = ",bit,smallint,integer,int,tinyint,real,money,smallmoney,bigint,"
      + "float,double,numeric,";
    try {
     File file = new File(导出文件名);
     if (!file.exists()) {
      file.createNewFile();
     }
     int length = 0;
     FileOutputStream fs = new FileOutputStream(file);
     for (int j1 = 0; j1 < 记录条数; j1++) {
      for (int j2 = 0; j2 < 表格列数; j2++)
       if (j2 < (表格列数 - 1))
        if (类型.lastIndexOf(表列数据类型[j2]) >= 0)
         fs.write((表格数据[j1][j2] + x4).getBytes());
        else
         fs.write((x3 + 表格数据[j1][j2] + x3 + x4)
           .getBytes());
       else
        fs.write((x3 + 表格数据[j1][j2] + x3).getBytes());
      fs.write(("" + x1).getBytes());
     }
     fs.close();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",5,") >= 0)) {
   紧凑格式.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(紧凑格式);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton 自定义格式 = new JButton("自定义格式");
  自定义格式.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     File file = new File(导出文件名);
     if (!file.exists()) {
      file.createNewFile();
     }
     int length = 0;
     String x5 = JOptionPane.showInputDialog("请输入字段与字段间分隔符", "");
     FileOutputStream fs = new FileOutputStream(file);
     for (int j1 = 0; j1 < 记录条数; j1++) {
      for (int j2 = 0; j2 < 表格列数; j2++)
       if (j2 < (表格列数 - 1))
        fs.write((表格数据[j1][j2] + x5).getBytes());
       else
        fs.write(表格数据[j1][j2].getBytes());
      fs.write(("" + x1).getBytes());
     }
     fs.close();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }

  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",6,") >= 0)) {
   自定义格式.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(自定义格式);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton 到XML文件 = new JButton("到XML文件");
  到XML文件.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     File file = new File(xml导出文件名);
     if (!file.exists()) {
      file.createNewFile();
     }
     FileOutputStream fs = new FileOutputStream(file);
     fs.write(("<?xml version=" + x3 + "1.0" + x3 + " encoding="
       + x3 + "GB2312" + x3 + "?>").getBytes());
     fs.write(("<Title>").getBytes());
     for (int j1 = 0; j1 < 记录条数; j1++) {
      fs.write(("    <" + 表名 + ">").getBytes());
      for (int j2 = 0; j2 < 表格列数; j2++) {
       s2 = "        <" + 表格列名[j2] + "> " + 表格数据[j1][j2]
         + " </" + 表格列名[j2] + ">";
       fs.write(s2.getBytes());
      }
      fs.write(("    </" + 表名 + ">").getBytes());
     }
     fs.write(("</Title>").getBytes());
     fs.close();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",7,") >= 0)) {
   到XML文件.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(到XML文件);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton 到PDF文件 = new JButton("到PDF文件");
  到PDF文件.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    Document document = new Document();
    try {
     PdfWriter.getInstance(document, new FileOutputStream(
       pdf导出文件名));
     document.open();

     BaseFont bfComic = BaseFont.createFont(
       "c:\\windows\\fonts\\SIMFANG.TTF",
       BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
     Font font = new Font(bfComic, 14);

     for (int i = 0; i < 记录条数; i++) {
      String s1 = "";
      ;
      for (int j = 0; j < 表格数据[0].length; j++)
       s1 = s1 + 表格数据[i][j] + "    ";
      document.add(new Paragraph(s1, font));
     }
    } catch (DocumentException de) {
     System.err.println(de.getMessage());
    } catch (IOException ioe) {
     System.err.println(ioe.getMessage());
    }
    document.close();
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",8,") >= 0)) {
   到PDF文件.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(到PDF文件);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  JButton exitButton = new JButton("退            出");
  exitButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    frame.setVisible(false);
    frame.dispose();
   }
  });
  if ((要求按钮号表.length() < 3) || (要求按钮号表.lastIndexOf(",9,") >= 0)) {
   exitButton.setBounds(按钮左边距, 窗口高 - 120, 按钮宽 - 5, 20);
   frame.add(exitButton);
   按钮左边距 = 按钮左边距 + 按钮宽;
  }
  frame.setVisible(true); // 安装窗口
 }
}


版本2
24.源码24,部件程序,对数据表某一个文本类字段检索查询

     /**
      * 程序文件名:dataQuery15.java
      * 作者:程学先
      * 完成时间:2013年11月17日
      * 部件功能:对数据表某一个文本类字段检索查询。
      * 被调用语句:datadataQuery15.means(parameter);
      * 必须提供的参数:“表名”(parameter[4]),
      * 如果欲打印,必须提供“打印格式文件名”(parameter[15])
      * 打印格式文件是利用printFormat1.java生成的格式文件。
      */
     import java.awt.*;
     import java.awt.event.*;
     import java.awt.print.PrinterException;
     
     import javax.swing.*;
     import javax.swing.table.*;
     
     import java.sql.*;
     import java.io.*;
     
public class dataQuery15 extends JFrame {
 static dataQuery15 frame = new dataQuery15();
 static String variabl2603 = "";
 static Choice choice;
 static JTextField aTextField;
 static JButton variabl1903, variabl2375, variabl2325, variabl2255,
   variabl1971, variabl2091, variabl2617, variabl2639, variabl2599;
 static String s1 = "", s2 = "", s3 = "";
 static ResultSet rs;
 static int b = 0, c = 0;
 static int variabl2651;
 static int variabl2127 = 0;
 static String[] variabl2517, variabl25170;
 static String variabl1079;
 static String variabl1735;
 static String variabl1633;
 static String variabl17792 = "";
 static String[][] variabl2319 = { { " > ", "大于" }, { " < ", "小于" },
   { " = ", "等于" }, { " >= ", "大于等于" }, { " <= ", "小于等于" },
   { "<>", "不等于" }, { " like ", "包含" }, { " not like ", "不包含" } };
 static String[] variabl1501;
 static int[] variabl1489;
 static int variabl1853, variabl18531;
 static String[][] variabl2197;
 static Connection con;
 static ResultSetMetaData rsmd3;
 static Statement sta3;
 static int variabl2483 = 800, variabl2503 = 700;
 static JTextArea variabl2463;
 static String[] variabl2405 = null;
 static String variabl1187;
 static int variabl2851 = 0, variabl2339 = 0;

 public static void means(String[] parameter) {
  frame = new dataQuery15();
  variabl2603 = "";
  s1 = "";
  s2 = "";
  s3 = "";
  b = 0;
  c = 0;
  variabl2127 = 0;
  variabl17792 = "";
  variabl2483 = 800;
  variabl2503 = 700;
  variabl2319[0][0] = " > ";
  variabl2319[0][1] = "大于";
  variabl2319[1][0] = " < ";
  variabl2319[1][1] = "小于";
  variabl2319[2][0] = " = ";
  variabl2319[2][1] = "等于";
  variabl2319[3][0] = " >= ";
  variabl2319[3][1] = "大于等于";
  variabl2319[4][0] = " <= ";
  variabl2319[4][1] = "小于等于";
  variabl2319[5][0] = " <> ";
  variabl2319[5][1] = "不等于";
  variabl2319[6][0] = " like ";
  variabl2319[6][1] = "包含";
  variabl2319[7][0] = " not like ";
  variabl2319[7][1] = "不包含";
  String[] variabl240501 = { "浏览显示", "第一条", "下一条", "上一条", "最后一条", "打印预览",
    "打印", "导出", "退出" };
  variabl2405 = new String[variabl240501.length];
  variabl2851 = 0;
  for (int i0 = 0; i0 < variabl240501.length; i0++)
   variabl2405[i0] = variabl240501[i0];
  if (parameter[11].length() > 0) {
   variabl1187 = parameter[11];

   variabl1187 = variabl1187.replaceAll(";", ";");
   variabl1187 = variabl1187.replaceAll("。", ";");
   variabl1187 = variabl1187.replaceAll(":", ";");
   variabl1187 = variabl1187.replaceAll(":", ";");
   if (variabl1187.indexOf(";") > 0) {
    String s601[] = variabl1187.split(",");
    variabl1187 = "";
    for (int i01 = 0; i01 < s601.length; i01++) {
     if (s601[i01].indexOf(";") > 0) {
      String s602[] = s601[i01].split(";");
      variabl2405[Integer.parseInt((s602[0]))] = s602[1];
      variabl1187 = variabl1187 + "," + s602[0];
      variabl2851++;
     } else {
      variabl1187 = variabl1187 + "," + s601[i01];
      variabl2851++;
     }
    }
   } else {
    String s601[] = variabl1187.split(",");
    variabl1187 = "";
    for (int i01 = 0; i01 < s601.length; i01++) {
     if (i01 == 0)
      variabl1187 = s601[i01];
     else
      variabl1187 = variabl1187 + "," + s601[i01];
     variabl2851++;
    }
   }
  } else {
   variabl1187 = "";
   for (int i1 = 0; i1 < variabl2405.length; i1++) {
    if (i1 == 0)
     variabl1187 = variabl1187 + i1;
    else
     variabl1187 = variabl1187 + "," + i1;
    variabl2851++;
   }
  }
  variabl1187 = "," + variabl1187 + ",";
  variabl2483 = main1.variabl2483;
  variabl2503 = main1.variabl2503;
  int m1, m2;
  try {
   if (parameter[17].length() == 0) {
    m1 = 0;
    m2 = 0;
   } else {
    m1 = Integer.parseInt(parameter[17]);
    m2 = Integer.parseInt(parameter[18]);
   }
   if (m1 > 0) {
    if (m2 < 80) {
     m1 = m1 * 10;
     m2 = m2 * 10;
    }
    variabl2483 = m1;
    variabl2503 = m2;
   }
  } catch (Exception e2) {
  }
  variabl2603 = parameter[4];
  variabl1079 = parameter[15];
  variabl1735 = parameter[8];
  variabl1633 = parameter[19];
  if (variabl1633.lastIndexOf(",") == variabl1633.length() - 1)
   variabl1633 = variabl1633.substring(0, variabl1633.length() - 1);
  variabl17792 = parameter[12];
  variabl2517 = variabl1633.split(",");
  String[] l3 = variabl1633.split(",");
  variabl2651 = l3.length;
  String[] l1;
  if (variabl1735.length() > 0) {
   l1 = variabl1735.split(",");
   int[] l2 = new int[l1.length];
   for (int i = 0; i < l1.length; i++) {
    l2[i] = Integer.valueOf(l1[i]);
   }
   variabl2651 = l1.length;
   variabl2517 = new String[variabl2651];
   for (int i = 0; i < variabl2651; i++) {
    variabl2517[i] = l3[l2[i]];
   }
  }
  s1 = "";
  for (int i = 0; i < variabl2651; i++) {
   s1 = s1 + variabl2517[i] + ",";
  }
  s1 = s1.substring(0, s1.length() - 1);
  try {
   con = main1.getConn();
   sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
     ResultSet.CONCUR_UPDATABLE);
   s1 = "select " + s1 + " from " + variabl2603;
   ResultSet rs = sta3.executeQuery(s1);
   rsmd3 = rs.getMetaData();
   variabl1501 = new String[variabl2651];
   variabl1489 = new int[variabl2651];
   for (int i = 0; i < variabl2651; i++) {
    variabl1501[i] = rsmd3.getColumnTypeName(i + 1);
    variabl1489[i] = rsmd3.getColumnDisplaySize(i + 1);
    if (variabl1489[i] < variabl2517[i].length())
     variabl1489[i] = variabl2517[i].length();
    if (variabl1489[i] > 50)
     variabl1489[i] = 50;
    b++;
   }
   int variabl1853 = 0;
   rs.last();
   variabl1853 = rs.getRow();
   variabl2197 = new String[variabl1853][variabl2651];
   rs.absolute(1);
   c = 0;
   b = 0;
   while (c < variabl1853) {
    rs.absolute(c + 1);
    while (b < variabl2651) {
     variabl2197[c][b] = rs.getString(b + 1);
     b++;
    }
    c++;
    b = 0;
   }
   rs.close();
   sta3.close();
  } catch (SQLException e) {
   JOptionPane.showMessageDialog(null, "读取数据出错!");
  }

  frame.setTitle("查询部件程序                             作者:程学先");
  frame.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10);
  frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  frame.getContentPane().setLayout(null);
  final JPanel panel = new JPanel(false);
  panel.setLayout(null);
  panel.setBounds(20, 20, variabl2483 - 50, variabl2503 - 20);
  JLabel label = new JLabel("请选择字段名:");
  label.setBounds(20, 30, 100, 20);
  panel.add(label);
  choice = new Choice();
  for (int i = 0; i < variabl2651; i++) {
   if ((main1.variabl1543.lastIndexOf(variabl1501[i])) >= 0)
    choice.add(variabl2517[i]);
  }
  choice.setBounds(120, 30, 100, 60);
  panel.add(choice);
  aTextField = new JTextField("", 10);
  aTextField.setBounds(220, 30, 330, 20);
  panel.add(aTextField);
  final JButton selectButton = new JButton("文本检索");
  selectButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     con = main1.getConn();
     sta3 = con.createStatement(
       ResultSet.TYPE_SCROLL_INSENSITIVE,
       ResultSet.CONCUR_UPDATABLE);
     String variabl17650 = aTextField.getText();
     int n0 = variabl17650.length();
     variabl17650 = variabl17650 + " ";
     int i = 0, j = 0, k1 = 0, k2 = 0;
     s1 = "";
     s2 = "";
     String[] s7 = choice.getSelectedItem().trim().split(",");
     s3 = s7[0];
     String[] s6 = variabl1633.split(",");
     for (int i1 = 0; i1 < s6.length; i1++)
      if (s3.trim().equals(s6[i1].trim()))
       variabl2127 = i1;
     String s4 = "", s5 = "";
     for (i = 0; i < n0; i++) {
      if (variabl17650.substring(i, i + 1).equals("(")) {
       if (k1 < 2) {
        s1 = s1 + "(";
       } else if (k1 == 3) {
        s1 = s1 + " and " + "(";
       } else if (k1 == 4) {
        s1 = s1 + " or " + "(";
       } else if (k1 == 5) {
        s1 = s1 + " and not " + "(";
       }
       s2 = "";
       k1 = 1;
      } else if (variabl17650.substring(i, i + 1).equals(")")) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%')";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%')";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%')";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + "   not  like " + "'%"
          + s2 + "%')";
       }
       k1 = 2;
       s2 = "";
      } else if (variabl17650.substring(i, i + 1).equals("#"))
       s2 = s2 + "-";
      else if (variabl17650.substring(i, i + 1).equals("*"))
       s2 = s2 + "%";
      else if ((variabl17650.substring(i, i + 1).equals(" "))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + "  not   like " + "'%"
          + s2 + "%'";
       }
       k1 = 3;
       s2 = "";
      } else if ((variabl17650.substring(i, i + 1)
        .equals("|"))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + "   not   like "
          + "'%" + s2 + "%'";
       }
       k1 = 4;
       s2 = "";
      } else if ((variabl17650.substring(i, i + 1)
        .equals("-"))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%'";
       }
       k1 = 5;
       s2 = "";
      } else {
       s2 = s2 + variabl17650.substring(i, i + 1);
      }
     }
     if (k1 < 2) {
      s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 3) {
      s1 = s1 + " and " + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 4) {
      s1 = s1 + " or " + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 5) {
      s1 = s1 + " and " + s3 + "  not like " + "'%" + s2
        + "%'";
     }
     s1 = "select " + variabl1633 + " from " + variabl2603
       + " where " + s1;
     ResultSet rs = sta3.executeQuery(s1);
     ResultSetMetaData rsmdt4 = rs.getMetaData();
     variabl2651 = rsmdt4.getColumnCount();
     variabl1853 = 0;
     rs.last();
     variabl1853 = rs.getRow();
     if (variabl1853 < 1) {
      JOptionPane.showMessageDialog(null, "未查到满足条件的记录!");
      return;
     }
     variabl2197 = new String[variabl1853][variabl2651];
     rs.absolute(1);
     c = 0;
     b = 0;
     variabl18531 = 0;
     while (c < variabl1853) {
      rs.absolute(c + 1);
      while (b < variabl2651) {
       variabl2197[c][b] = rs.getString(b + 1);
       b++;
      }
      c++;
      b = 0;
     }
     variabl2463.setText(variabl2197[variabl18531][variabl2127]);
     rs.close();
     sta3.close();
     con.close();
    } catch (Exception e1) {
     JOptionPane.showMessageDialog(null, "查询数据出错!" + s1);
    }
   }
  });
  selectButton.setBounds(550, 30, 90, 20);
  panel.add(selectButton);

  JButton variabl1657 = new JButton("格式提示");
  variabl1657.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    JFrame frame1 = new JFrame();
    frame1.setTitle("查询部件程序");
    frame1.setBounds(350, 140, 440, 290);
    frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame1.getContentPane().setLayout(null);
    String s0 = "";
    char x1 = 10;
    s0 = "检索字的格式:检索字区分大、小写。" + x1
      + "空格、&、|、-、( )、$、#、*、\\ 均为特殊意义字符" + x1
      + "(注意均应为英文字符),字符两边不要有空格。" + x1
      + "空格或& 表示要求两边内容均要包含在内。" + x1 + "“|”表示要求两边内容至少有一个包含在内"
      + x1 + "“-”表示后边内容不包含在内。" + x1
      + "“( )”表示其内部分为整体内容,全要满足。" + x1
      + "“$”表示其后的词在标题之首,要放在全文检索词最前面。" + x1
      + "“#”表示在查找的二个词间可能有若干个任意的字符," + x1 + "任意字符的个数不多于#号的个数。"
      + x1 + "“*”表示在查找的二个词间可能有任意多个任意字符。" + x1
      + "“\\”后边应当是上述字符中任意一个," + x1
      + "表示在此处该字符不具有上述特殊意义,只是检索内容中的一个字。";
    JTextArea variabl24631;
    variabl24631 = new JTextArea(s0, 10, 10);
    JScrollPane variabl25091 = new JScrollPane(variabl24631);
    variabl25091.setBounds(10, 10, 415, 235);
    frame1.add(variabl25091);
    frame1.setVisible(true);
   }
  });
  variabl1657.setBounds(640, 30, 90, 20);
  panel.add(variabl1657);
  variabl2463 = new JTextArea("", 10, 10);
  JScrollPane variabl2509 = new JScrollPane(variabl2463);
  variabl2509.setBounds(20, 70, 700, 500);
  panel.add(variabl2509);
  variabl2339 = (variabl2483 - 60) / variabl2851;
  int variabl2337 = 30;
  variabl1903 = new JButton(variabl2405[0]);
  variabl1903.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    tableTenance.tableModel(800, 600, variabl2517, variabl1489,
      variabl2197, variabl1501);
   }
  });
  variabl1903.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",0,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl1903);
  }

  variabl2375 = new JButton(variabl2405[1]);
  variabl2375.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    variabl18531 = 0;
    variabl2463.setText(variabl2197[variabl18531][variabl2127]);
   }
  });
  variabl2375.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",1,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2375);
  }
  variabl2325 = new JButton(variabl2405[2]);
  variabl2325.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl18531 < variabl1853 - 1) {
     variabl18531++;
     variabl2463.setText(variabl2197[variabl18531][variabl2127]);
    }
   }
  });
  variabl2325.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",2,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2325);
  }
  variabl2255 = new JButton(variabl2405[3]);
  variabl2255.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl18531 > 0) {
     variabl18531--;
     variabl2463.setText(variabl2197[variabl18531][variabl2127]);
    }
   }
  });
  variabl2255.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",3,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2255);
  }
  variabl1971 = new JButton(variabl2405[4]);
  variabl1971.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    variabl18531 = variabl1853 - 1;
    variabl2463.setText(variabl2197[variabl18531][variabl2127]);
   }
  });
  variabl1971.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",4,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl1971);
  }
  variabl2091 = new JButton(variabl2405[5]);
  variabl2091.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl1079.trim().length() > 0)
     dataPreview1.printView1(variabl2197, variabl1079);
    else
     dataPreview0.printView1(variabl2517, variabl2197,
       variabl1489, variabl2603 + "表格预览");
   }
  });
  variabl2091.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",5,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2091);
  }
  variabl2617 = new JButton(variabl2405[6]);
  variabl2617.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl1079.trim().length() > 0)
     dataPrint1.print1(variabl2197, variabl1079);
    else {
     final JTable table = null;
     final DefaultTableModel model;
     model = new DefaultTableModel(variabl2197, variabl2517);
     for (int i = 0; i < variabl2517.length; i++) {
      TableColumn tc = table.getColumn(variabl2517[i]);
      JTableHeader header = table.getTableHeader();
      if (variabl1489[i] < variabl2517[i].length())
       variabl1489[i] = variabl2517[i].length();
      tc.setPreferredWidth(variabl1489[i] * 9);
      tc.setMaxWidth(variabl1489[i] * 9);
     }
     try {
      table.print();
     } catch (PrinterException e1) {
      e1.printStackTrace();
     }
    }
   }
  });
  variabl2617.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",6,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2617);
  }
  variabl2639 = new JButton(variabl2405[7]);
  variabl2639.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    dataTransfer0.Trans(variabl2517, variabl1501, variabl1489,
      variabl17792, variabl2197, variabl2603);
   }
  });
  variabl2639.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",7,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2639);
  }
  variabl2599 = new JButton(variabl2405[8]);
  variabl2599.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    panel.setVisible(false);
    frame.setVisible(false);
    frame.dispose();
   }
  });
  variabl2599.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",8,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2599);
  }
  frame.getContentPane().add(panel, null);
  frame.setVisible(true);
  frame.getContentPane().add(panel, BorderLayout.SOUTH);
 }
}


25.源码25,部件程序,对多数据表中某一个文本类字段检索查询
     /**
      * 程序文件名:dataQuery16.java
      * 作者:程学先
      * 完成时间:2013年11月17日
      * 部件功能:对多数据表中某一个文本类字段检索查询,可以应用字典表改变标签内容。
      * 被调用语句:datadataQuery16.means(parameter);
      * 要求提供的参数:“表名”(parameter[4])。
      * 如果欲打印,必须提供“打印格式文件名”(parameter[15])
      */
     import java.awt.*;
     import java.awt.event.*;
     import java.awt.print.PrinterException;
     
     import javax.swing.*;
     import javax.swing.table.*;
     import java.sql.*;
     import java.io.*;
     
public class dataQuery16 extends JFrame {
 static dataQuery16 frame = new dataQuery16();
 static String variabl2603 = "";
 static String variabl1873;
 static String variabl2429;
 static Choice choice;
 static JTextField aTextField;
 static JButton variabl1903, variabl2375, variabl2325, variabl2255,
   variabl1971, variabl2091, variabl2617, variabl2639, variabl2599;
 static String s1 = "", s2 = "", s3 = "", s4 = "";
 static ResultSet rs;
 static int b = 0, c = 0;
 static int variabl2651;
 static int variabl2127 = 0;
 static String[][] variabl2517, variabl25170;
 static String variabl1079;
 static String variabl1735;
 static String variabl1633;
 static String variabl2049;
 static String variabl1325;
 static String[] variabl1787;
 static String variabl17792 = "";
 static String[][] variabl2319 = { { " > ", "大于" }, { " < ", "小于" },
   { " = ", "等于" }, { " >= ", "大于等于" }, { " <= ", "小于等于" },
   { "<>", "不等于" }, { " like ", "包含" }, { " not like ", "不包含" } };
 static String[] variabl1501;
 static int[] variabl1489;
 static int variabl1853, variabl18531;
 static String[][] variabl2197;
 static Connection con;
 static ResultSetMetaData rsmd3;
 static Statement sta3;
 static int variabl2483 = 800, variabl2503 = 700;
 static JTextArea variabl2463, variabl24632;
 static String[] variabl2405 = null;
 static String variabl1187;
 static int variabl2851 = 0, variabl2339 = 0;

 public static void means(String[] parameter) {
  frame = new dataQuery16();
  variabl2603 = "";
  s1 = "";
  s2 = "";
  s3 = "";
  b = 0;
  c = 0;
  variabl2127 = 0;
  variabl2319[0][0] = " > ";
  variabl2319[0][1] = "大于";
  variabl2319[1][0] = " < ";
  variabl2319[1][1] = "小于";
  variabl2319[2][0] = " = ";
  variabl2319[2][1] = "等于";
  variabl2319[3][0] = " >= ";
  variabl2319[3][1] = "大于等于";
  variabl2319[4][0] = " <= ";
  variabl2319[4][1] = "小于等于";
  variabl2319[5][0] = " <> ";
  variabl2319[5][1] = "不等于";
  variabl2319[6][0] = " like ";
  variabl2319[6][1] = "包含";
  variabl2319[7][0] = " not like ";
  variabl2319[7][1] = "不包含";
  variabl2483 = 800;
  variabl2503 = 700;
  String[] variabl240501 = { "浏览显示", "第一条", "下一条", "上一条", "最后一条", "打印预览",
    "打印", "导出", "退出" };
  variabl2405 = new String[variabl240501.length];
  variabl2851 = 0;
  for (int i0 = 0; i0 < variabl240501.length; i0++)
   variabl2405[i0] = variabl240501[i0];
  if (parameter[11].length() > 0) {
   variabl1187 = parameter[11];

   variabl1187 = variabl1187.replaceAll(";", ";");
   variabl1187 = variabl1187.replaceAll("。", ";");
   variabl1187 = variabl1187.replaceAll(":", ";");
   variabl1187 = variabl1187.replaceAll(":", ";");
   if (variabl1187.indexOf(";") > 0) {
    String s601[] = variabl1187.split(",");
    variabl1187 = "";
    for (int i01 = 0; i01 < s601.length; i01++) {
     if (s601[i01].indexOf(";") > 0) {
      String s602[] = s601[i01].split(";");
      variabl2405[Integer.parseInt((s602[0]))] = s602[1];
      variabl1187 = variabl1187 + "," + s602[0];
      variabl2851++;
     } else {
      variabl1187 = variabl1187 + "," + s601[i01];
      variabl2851++;
     }
    }
   } else {
    String s601[] = variabl1187.split(",");
    variabl1187 = "";
    for (int i01 = 0; i01 < s601.length; i01++) {
     if (i01 == 0)
      variabl1187 = s601[i01];
     else
      variabl1187 = variabl1187 + "," + s601[i01];
     variabl2851++;
    }
   }
  } else {
   variabl1187 = "";
   for (int i1 = 0; i1 < variabl2405.length; i1++) {
    if (i1 == 0)
     variabl1187 = variabl1187 + i1;
    else
     variabl1187 = variabl1187 + "," + i1;
    variabl2851++;
   }
  }
  variabl1187 = "," + variabl1187 + ",";
  variabl2483 = main1.variabl2483;
  variabl2503 = main1.variabl2503;
  int m1, m2;
  try {
   if (parameter[17].length() == 0) {
    m1 = 0;
    m2 = 0;
   } else {
    m1 = Integer.parseInt(parameter[17]);
    m2 = Integer.parseInt(parameter[18]);
   }
   if (m1 > 0) {
    if (m2 < 80) {
     m1 = m1 * 10;
     m2 = m2 * 10;
    }
    variabl2483 = m1;
    variabl2503 = m2;
   }
  } catch (Exception e2) {
  }
  variabl2603 = parameter[4];
  variabl1079 = parameter[15];
  variabl2049 = parameter[20];
  variabl1325 = parameter[19];
  variabl1735 = parameter[8];
  variabl1633 = parameter[19];
  if (variabl1633.lastIndexOf(",") == variabl1633.length() - 1)
   variabl1633 = variabl1633.substring(0, variabl1633.length() - 1);
  String[] variabl25172 = variabl1633.split(",");
  variabl17792 = parameter[12];
  String[] sn = variabl1735.split(",");
  if (variabl1735.length() > 0) {
   variabl1633 = "";
   for (int i = 0; i < sn.length; i++)
    if (i == 0)
     variabl1633 = variabl25172[Integer.parseInt(sn[i])];
    else
     variabl1633 = variabl1633 + ","
       + variabl25172[Integer.parseInt(sn[i])];
  }
  String[] variabl25171 = variabl1633.split(",");
  variabl2517 = new String[2][variabl25171.length];
  variabl2517[0] = variabl1633.split(",");
  variabl2517[1] = variabl1633.split(",");
  variabl2429 = parameter[0];
  String[] l3 = variabl1633.split(",");
  variabl2651 = l3.length;
  String[] l1;
  variabl1873 = "";
  String s11 = variabl2603;
  String[] s12;
  if (variabl2603.indexOf(",") > 0) {
   s12 = variabl2603.split(",");
   s11 = s12[0];
  }
  s4 = s11;
  variabl1873 = "";
  String[] t1;
  if (variabl2429.lastIndexOf(s11 + "字典表") > 0) {
   t1 = variabl2429.split(",");
   for (int i = 0; i < t1.length; i++)
    if (t1[i].lastIndexOf(s11 + "字典表") >= 0)
     variabl1873 = t1[i];
  }
  s1 = "";
  for (int i = 0; i < variabl2651; i++) {
   s1 = s1 + variabl2517[0][i] + ",";
  }
  s1 = s1.substring(0, s1.length() - 1);
  int variabl26510 = 0;
  if (variabl1873.length() > 0) {
   try {
    con = main1.getConn();
    sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
    s2 = "select * from " + variabl1873;
    rs = sta3.executeQuery(s2);
    rs.last();
    int kl = rs.getRow();
    ResultSetMetaData rsmd = rs.getMetaData();
    variabl26510 = rsmd.getColumnCount();
    variabl25170 = new String[2][kl];
    int numberOfColumns = rsmd.getColumnCount();
    String s14 = "";
    String s15 = "";
    int b = 1;
    while (rs.absolute(b)) {
     b++;
     s14 = rs.getString(1);
     s15 = rs.getString(2);
     variabl25170[0][b - 2] = s14;
     variabl25170[1][b - 2] = s15;
     for (int j = 0; j < variabl2517[0].length; j++) {
      if ((variabl2517[0][j].trim().equals(s14.trim()))
        || (variabl2517[0][j].indexOf("." + s14) > 0)) {
       variabl2517[1][j] = s15;
       break;
      }
     }
    }
    rs.close();
    con.close();
    sta3.close();
   } catch (SQLException e) {
    JOptionPane.showMessageDialog(null, "连接数据库出错!");
   }
  }
  try {
   con = main1.getConn();
   sta3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
     ResultSet.CONCUR_UPDATABLE);
   if (variabl2049.trim().length() > 0)
    s1 = "select " + s1 + " from " + variabl2603 + " where "
      + variabl2049;
   else
    s1 = "select " + s1 + " from " + variabl2603;
   ResultSet rs = sta3.executeQuery(s1);
   rsmd3 = rs.getMetaData();
   variabl1501 = new String[variabl2651];
   variabl1489 = new int[variabl2651];
   for (int i = 0; i < variabl2651; i++) {
    variabl2517[0][i] = rsmd3.getColumnName(i + 1);
    variabl2517[1][i] = variabl2517[0][i];
    if (variabl26510 > 0)
     for (int j = 0; j < variabl25170[0].length; j++) {
      if ((variabl25170[0][j].trim()
        .equals(variabl2517[0][i]))
        || (variabl25170[0][j].indexOf("."
          + variabl2517[0][i]) > 0)) {
       variabl2517[1][i] = variabl25170[1][j];
       break;
      }
     }
    variabl1501[i] = rsmd3.getColumnTypeName(i + 1);
    variabl1489[i] = rsmd3.getColumnDisplaySize(i + 1);
    if (variabl1489[i] < variabl2517[0][i].length())
     variabl1489[i] = variabl2517[0][i].length();
    if (variabl1489[i] < variabl2517[1][i].length())
     variabl1489[i] = variabl2517[1][i].length();
    if (variabl1489[i] > 50)
     variabl1489[i] = 50;
    b++;
   }
   int variabl1853 = 0;
   rs.last();
   variabl1853 = rs.getRow();
   variabl2197 = new String[variabl1853][variabl2651];
   rs.absolute(1);
   c = 0;
   b = 0;
   while (c < variabl1853) {
    rs.absolute(c + 1);
    while (b < variabl2651) {
     variabl2197[c][b] = rs.getString(b + 1);
     b++;
    }
    c++;
    b = 0;
   }
   rs.close();
   sta3.close();
  } catch (SQLException e) {
   JOptionPane.showMessageDialog(null, "读取数据出错!");
  }
  frame.setTitle("查询部件程序                        作者:程学先");
  frame.setBounds(10, 10, variabl2483 - 10, variabl2503 - 10);
  frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  frame.getContentPane().setLayout(null);
  final JPanel panel = new JPanel(false);
  panel.setLayout(null);
  panel.setBounds(20, 20, variabl2483 - 50, variabl2503 - 20);
  JLabel label = new JLabel("请选择字段名:");
  label.setBounds(20, 30, 100, 20);
  panel.add(label);
  choice = new Choice();
  for (int i = 0; i < variabl2651; i++) {
   if ((main1.variabl1543.lastIndexOf(variabl1501[i])) >= 0)
    choice.add(variabl2517[1][i]);
  }
  choice.setBounds(120, 30, 100, 60);
  panel.add(choice);
  aTextField = new JTextField("", 10);
  aTextField.setBounds(220, 30, 330, 20);
  panel.add(aTextField);
  final JButton selectButton = new JButton("文本检索");
  selectButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     con = main1.getConn();
     sta3 = con.createStatement(
       ResultSet.TYPE_SCROLL_INSENSITIVE,
       ResultSet.CONCUR_UPDATABLE);
     String variabl17650 = aTextField.getText();
     int n0 = variabl17650.length();
     variabl17650 = variabl17650 + " ";
     int i = 0, j = 0, k1 = 0, k2 = 0;
     s1 = "";
     s2 = "";
     String[] s7 = choice.getSelectedItem().trim().split(",");
     s3 = s7[0];
     for (int i2 = 0; i2 < variabl2517[0].length; i2++) {
      if (variabl2517[1][i2].equals(s3))
       s3 = variabl2517[0][i2];
     }
     if (variabl1633.indexOf(s4 + "." + s3) >= 0)
      s3 = s4 + "." + s3;
     String[] s6 = variabl1633.split(",");
     for (int i1 = 0; i1 < s6.length; i1++)
      if (s3.trim().equals(s6[i1].trim()))
       variabl2127 = i1;
     for (i = 0; i < n0; i++) {
      if (variabl17650.substring(i, i + 1).equals("(")) {
       if (k1 < 2) {
        s1 = s1 + "(";
       } else if (k1 == 3) {
        s1 = s1 + " and " + "(";
       } else if (k1 == 4) {
        s1 = s1 + " or " + "(";
       } else if (k1 == 5) {
        s1 = s1 + " and not " + "(";
       }
       s2 = "";
       k1 = 1;
      } else if (variabl17650.substring(i, i + 1).equals(")")) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%')";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%')";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%')";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%')";
       }
       k1 = 2;
       s2 = "";
      } else if (variabl17650.substring(i, i + 1).equals("#"))
       s2 = s2 + "-";
      else if (variabl17650.substring(i, i + 1).equals("*"))
       s2 = s2 + "%";
      else if ((variabl17650.substring(i, i + 1).equals(" "))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%'";
       }
       k1 = 3;
       s2 = "";
      } else if ((variabl17650.substring(i, i + 1)
        .equals("|"))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%'";
       }
       k1 = 4;
       s2 = "";
      } else if ((variabl17650.substring(i, i + 1)
        .equals("-"))) {
       if (k1 < 2) {
        s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
       } else if (k1 == 3) {
        s1 = s1 + " and " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 4) {
        s1 = s1 + " or " + s3 + " like " + "'%" + s2
          + "%'";
       } else if (k1 == 5) {
        s1 = s1 + " and " + s3 + " not like " + "'%"
          + s2 + "%'";
       }
       k1 = 5;
       s2 = "";
      } else {
       s2 = s2 + variabl17650.substring(i, i + 1);
      }
     }
     if (k1 < 2) {
      s1 = s1 + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 3) {
      s1 = s1 + " and " + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 4) {
      s1 = s1 + " or " + s3 + " like " + "'%" + s2 + "%'";
     } else if (k1 == 5) {
      s1 = s1 + " and " + s3 + " not like " + "'%" + s2
        + "%'";
     }
     if (variabl2049.trim().length() > 0)
      s1 = "select " + variabl1633 + " from " + variabl2603
        + " where " + variabl2049 + " and " + s1;
     else
      s1 = "select " + variabl1633 + " from " + variabl2603
        + " where " + s1;
     variabl24632.setText(s1);
     ResultSet rs = sta3.executeQuery(s1);
     variabl1853 = 0;
     rs.last();
     variabl1853 = rs.getRow();
     if (variabl1853 < 1) {
      JOptionPane.showMessageDialog(null, "未查到满足条件的记录!");
      return;
     }
     variabl2197 = new String[variabl1853][s6.length];
     rs.absolute(1);
     c = 0;
     b = 0;
     variabl18531 = 0;
     while (c < variabl1853) {
      rs.absolute(c + 1);
      while (b < s6.length) {
       variabl2197[c][b] = rs.getString(b + 1);
       b++;
      }
      c++;
      b = 0;
     }
     variabl2463.setText(variabl2197[variabl18531][variabl2127]);
     rs.close();
     sta3.close();
     con.close();
    } catch (Exception e1) {
     JOptionPane.showMessageDialog(null, "查询数据出错!" + s1);
    }
   }
  });
  selectButton.setBounds(550, 30, 90, 20);
  panel.add(selectButton);

  JButton variabl1657 = new JButton("格式提示");
  variabl1657.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    JFrame frame1 = new JFrame();
    frame1.setTitle("查询部件程序");
    frame1.setBounds(350, 140, 440, 290);
    frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame1.getContentPane().setLayout(null);
    String s0 = "";
    char x1 = 10;
    s0 = "检索字的格式:检索字区分大、小写。" + x1
      + "空格、&、|、-、( )、$、#、*、\\ 均为特殊意义字符" + x1
      + "(注意均应为英文字符),字符两边不要有空格。" + x1
      + "空格或& 表示要求两边内容均要包含在内。" + x1 + "“|”表示要求两边内容至少有一个包含在内"
      + x1 + "“-”表示后边内容不包含在内。" + x1
      + "“( )”表示其内部分为整体内容,全要满足。" + x1
      + "“$”表示其后的词在标题之首,要放在全文检索词最前面。" + x1
      + "“#”表示在查找的二个词间可能有若干个任意的字符," + x1 + "任意字符的个数不多于#号的个数。"
      + x1 + "“*”表示在查找的二个词间可能有任意多个任意字符。" + x1
      + "“\\”后边应当是上述字符中任意一个," + x1
      + "表示在此处该字符不具有上述特殊意义,只是检索内容中的一个字。";
    JTextArea variabl24631;
    variabl24631 = new JTextArea(s0, 10, 10);
    JScrollPane variabl25091 = new JScrollPane(variabl24631);
    variabl25091.setBounds(10, 10, 415, 235);
    frame1.add(variabl25091);
    frame1.setVisible(true);
   }
  });
  variabl1657.setBounds(640, 30, 90, 20);
  panel.add(variabl1657);
  variabl2463 = new JTextArea("", 10, 10);
  JScrollPane variabl2509 = new JScrollPane(variabl2463);
  variabl2509.setBounds(20, 120, 700, 450);
  panel.add(variabl2509);
  JLabel label2 = new JLabel("SQL查询语句");
  label2.setBounds(20, 60, 100, 20);
  panel.add(label2);
  variabl24632 = new JTextArea("", 10, 10);
  variabl24632.setLineWrap(true);
  JScrollPane variabl25092 = new JScrollPane(variabl24632);
  variabl25092.setBounds(120, 60, 490, 50);
  panel.add(variabl25092);

  JButton variabl2621 = new JButton("执行SQL语句");
  variabl2621.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     con = main1.getConn();
     sta3 = con.createStatement(
       ResultSet.TYPE_SCROLL_INSENSITIVE,
       ResultSet.CONCUR_UPDATABLE);
     s1 = variabl24632.getText();
     ResultSet rs = sta3.executeQuery(s1);
     ResultSetMetaData rsmdt4 = rs.getMetaData();
     variabl2651 = rsmdt4.getColumnCount();
     variabl1853 = 0;
     rs.last();
     variabl1853 = rs.getRow();
     if (variabl1853 < 1) {
      JOptionPane.showMessageDialog(null, "未查到满足条件的记录!");
      return;
     }
     String[] s6 = variabl1633.split(",");
     variabl2197 = new String[variabl1853][variabl2651];
     rs.absolute(1);
     c = 0;
     b = 0;
     variabl18531 = 0;
     while (c < variabl1853) {
      rs.absolute(c + 1);
      while (b < variabl2651) {
       variabl2197[c][b] = rs.getString(b + 1);
       b++;
      }
      c++;
      b = 0;
     }
     variabl2463.setText(variabl2197[variabl18531][variabl2127]);
     rs.close();
     sta3.close();
     con.close();
    } catch (Exception e1) {
     JOptionPane.showMessageDialog(null, "查询数据出错!" + s1);
    }
   }
  });
  variabl2621.setBounds(615, 60, 120, 20);
  panel.add(variabl2621);
  variabl2339 = (variabl2483 - 60) / variabl2851;
  int variabl2337 = 30;
  variabl1903 = new JButton(variabl240501[0]);
  variabl1903.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    tableTenance.tableModel(800, 600, variabl2517[1], variabl1489,
      variabl2197, variabl1501);
   }
  });
  variabl1903.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",0,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl1903);
  }
  variabl2375 = new JButton(variabl2405[1]);
  variabl2375.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    variabl18531 = 0;
    variabl2463.setText(variabl2197[variabl18531][variabl2127]);
   }
  });
  variabl2375.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",1,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2375);
  }
  variabl2325 = new JButton(variabl2405[2]);
  variabl2325.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl18531 < variabl1853 - 1) {
     variabl18531++;
     variabl2463.setText(variabl2197[variabl18531][variabl2127]);
    }
   }
  });
  variabl2325.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",2,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2325);
  }
  variabl2255 = new JButton(variabl2405[3]);
  variabl2255.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl18531 > 0) {
     variabl18531--;
     variabl2463.setText(variabl2197[variabl18531][variabl2127]);
    }
   }
  });
  variabl2255.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",3,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2255);
  }
  variabl1971 = new JButton(variabl2405[4]);
  variabl1971.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    variabl18531 = variabl1853 - 1;
    variabl2463.setText(variabl2197[variabl18531][variabl2127]);
   }
  });
  variabl1971.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",4,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl1971);
  }
  variabl2091 = new JButton(variabl2405[5]);
  variabl2091.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl1079.trim().length() > 0)
     dataPreview1.printView1(variabl2197, variabl1079);
    else
     dataPreview0.printView1(variabl2517[1], variabl2197,
       variabl1489, variabl2603 + "表格预览");

   }
  });
  variabl2091.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",5,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2091);
  }
  variabl2617 = new JButton(variabl2405[6]);
  variabl2617.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl1079.trim().length() > 0)
     dataPrint1.print1(variabl2197, variabl1079);
    else {
     final JTable table = null;
     final DefaultTableModel model;
     model = new DefaultTableModel(variabl2197, variabl2517[1]);
     for (int i = 0; i < variabl2517[1].length; i++) {
      TableColumn tc = table.getColumn(variabl2517[1][i]);
      JTableHeader header = table.getTableHeader();
      if (variabl1489[i] < variabl2517[1][i].length())
       variabl1489[i] = variabl2517[1][i].length();
      tc.setPreferredWidth(variabl1489[i] * 9);
      tc.setMaxWidth(variabl1489[i] * 9);
     }
     try {
      table.print();
     } catch (PrinterException e1) {
      e1.printStackTrace();
     }
    }
   }
  });
  variabl2617.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",6,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2617);
  }
  variabl2639 = new JButton(variabl2405[7]);
  variabl2639.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    dataTransfer0.Trans(variabl2517[1], variabl1501, variabl1489,
      variabl17792, variabl2197, variabl2603);
   }
  });
  variabl2639.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",7,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2639);
  }
  variabl2599 = new JButton(variabl2405[8]);
  variabl2599.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    panel.setVisible(false);
    frame.setVisible(false);
    frame.dispose();
   }
  });
  variabl2599.setBounds(variabl2337, variabl2503 - 100, variabl2339, 20);
  if (variabl1187.indexOf(",8,") >= 0) {
   variabl2337 = variabl2337 + variabl2339;
   panel.add(variabl2599);
  }
  frame.getContentPane().add(panel, null);
  frame.setVisible(true);
  frame.getContentPane().add(panel, BorderLayout.SOUTH);
 }
}


26.源码26,公共程序,导出数据到txt文件、Excel文件、Word文件、PDF文件与xml文件公共程序
     /**
      * 程序文件名:dataTransfer0.java
      * 作者:程学先:
      * 功能:导出数据到txt文件、Excel文件、Word文件、PDF文件与xml文件公共程序。
      * 导出到word与excel有覆盖式与添加式两种。
      * 完成日期:2013年1月22日
      * 被调用语句:dataTransfer0.Trans(String [] variabl25171,String [] variabl11691,
      * int [] variabl11191,String variabl11871,String [][] variabl21971,String variabl2603);
      */
     import java.awt.*;
     import java.awt.event.*;
     import java.io.*;
     import java.io.File.*;
     import javax.swing.*;
     import javax.swing.table.*;
     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;
     import org.apache.poi.hssf.usermodel.HSSFCell;
     import org.apache.poi.hssf.usermodel.HSSFRichTextString;
     import org.apache.poi.hssf.usermodel.HSSFRow;
     import org.apache.poi.hssf.usermodel.HSSFSheet;
     import org.apache.poi.hssf.usermodel.HSSFWorkbook;
     import org.apache.poi.hwpf.extractor.WordExtractor;
     import org.apache.poi.ss.usermodel.Sheet;
     import com.jacob.activeX.ActiveXComponent;
     import com.jacob.com.Dispatch;
     import com.jacob.com.Variant;
     import java.sql.*;
     import java.util.ArrayList;
     import java.util.Vector;
     
public class dataTransfer0 extends JFrame {
 private static JTable variabl26551;
 static Connection con;
 static String variabl2603;
 static int variabl2483 = 1200, variabl2503 = 700;
 static int variabl2113;
 static String[] variabl1913;
 static String[][] variabl2197;
 static String[] variabl1169;
 static int[] variabl1119, variabl1125;
 static int variabl1853, variabl18531 = 0;
 static String[] variabl2405 = null;
 static String variabl1187;
 static int variabl1423 = 0, variabl2339 = 0;
 static DefaultTableModel variabl1965;
 static JTextField fa1;
 static String variabl1679 = "", variabl1463 = "";
 static String variabl1003 = "";
 static String variabl1015 = "";
 static String variabl1033 = "";
 static String variabl1031 = "";
 static String s1 = "", s2 = "", s3 = "";
 static char x1 = 10, x2 = 13, x3 = '"', x4 = ',';
 static String[] f01;
 static String[] variabl1425;
 static PreparedStatement pstmt;
 static Statement sta;

 static void Trans(String[] variabl25171, String[] variabl11691,
   int[] variabl11191, String variabl11871, String[][] variabl21971,
   String variabl26031) {
  variabl2483 = 1200;
  variabl2503 = 700;
  variabl18531 = 0;
  variabl1423 = 0;
  variabl2339 = 0;
  variabl1679 = "";
  variabl1463 = "";
  variabl1003 = "";
  variabl1015 = "";
  variabl1033 = "";
  s1 = "";
  s2 = "";
  s3 = "";
  x1 = 10;
  x2 = 13;
  x3 = '"';
  x4 = ',';
  File file = new File(".\\com\\iText-5.0.5.jar");
  if (!file.exists()) {
   JOptionPane.showMessageDialog(null, "请将有关jar文件包下载到com文件夹中!");
   return;
  }
  file = new File(".\\com\\jacob.jar");
  if (!file.exists()) {
   JOptionPane.showMessageDialog(null, "请将有关jar文件包下载到com文件夹中!");
   return;
  }
  file = new File(".\\com\\poi-3.8-20120326.jar");
  if (!file.exists()) {
   JOptionPane.showMessageDialog(null, "请将有关jar文件包下载到com文件夹中!");
   return;
  }
  file = new File(".\\com\\PDFBox-0.7.3.jar");
  if (!file.exists()) {
   JOptionPane.showMessageDialog(null, "请将有关jar文件包下载到com文件夹中!");
   return;
  }
  final dataTransfer0 frame = new dataTransfer0();
  frame.setTitle("数据导出到文件二级部件                           作者:程学先");
  frame.setBounds(10, 10, variabl2483, variabl2503);
  frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  variabl2603 = variabl26031;
  variabl2113 = variabl25171.length;
  variabl1913 = new String[variabl2113];
  for (int i = 0; i < variabl2113; i++)
   variabl1913[i] = variabl25171[i];
  variabl1169 = new String[variabl2113];
  for (int i = 0; i < variabl2113; i++)
   variabl1169[i] = variabl11691[i];
  variabl1119 = new int[variabl2113];
  for (int i = 0; i < variabl2113; i++)
   variabl1119[i] = variabl11191[i];
  variabl2197 = new String[variabl21971.length][variabl2113];
  for (int i = 0; i < variabl21971.length; i++)
   for (int j = 0; j < variabl2113; j++)
    variabl2197[i][j] = variabl21971[i][j];
  variabl1187 = variabl11871;
  variabl1853 = variabl2197.length;
  variabl1187 = "," + variabl11871 + ",";
  final JScrollPane scrollPane = new JScrollPane();
  scrollPane.setBounds(0, 0, variabl2483 - 100, variabl2503 - 180);
  frame.setLayout(null);
  frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
  variabl1965 = new DefaultTableModel(variabl2197, variabl1913);
  variabl26551 = new JTable(variabl1965);
  variabl26551.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  variabl26551
    .setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
  for (int i = 0; i < variabl2113; i++) {
   TableColumn tc = variabl26551.getColumn(variabl1913[i]);
   JTableHeader header = variabl26551.getTableHeader();
   tc.setPreferredWidth(variabl1119[i] * 14);
   tc.setMaxWidth(variabl1119[i] * 14);
   tc.sizeWidthToFit();
  }
  scrollPane.setViewportView(variabl26551);
  variabl26551.addMouseListener(new MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
   }
  });
  JLabel fl1 = new JLabel("文件名");
  fl1.setBounds(100, variabl2503 - 160, 50, 20);
  frame.add(fl1);
  fa1 = new JTextField("", 20);
  fa1.setBounds(150, variabl2503 - 160, 200, 20);
  frame.add(fa1);
  fa1.addMouseListener(new MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
    if (fa1.getText().length() < 1) {
     final JFileChooser fc = new JFileChooser(".\\");
     fc.showOpenDialog(null);
     if (fc.getSelectedFile() != null)
      fa1.setText(fc.getSelectedFile().toString());
     variabl1463 = fc.getSelectedFile().toString();
     variabl1003 = variabl1463;
     if (variabl1003.lastIndexOf(".xls") < 0)
      if (variabl1003.lastIndexOf(".") < 0)
       variabl1003 = variabl1003 + ".xls";
      else
       variabl1003 = variabl1003.substring(0,
         variabl1003.lastIndexOf("."))
         + ".xls";
     variabl1015 = variabl1463;
     if (variabl1015.lastIndexOf(".doc") < 0)
      if (variabl1015.lastIndexOf(".") < 0)
       variabl1015 = variabl1015 + ".doc";
      else
       variabl1015 = variabl1015.substring(0,
         variabl1015.lastIndexOf("."))
         + ".doc";
     variabl1033 = variabl1463;
     if (variabl1033.lastIndexOf(".xml") < 0)
      if (variabl1033.lastIndexOf(".") < 0)
       variabl1033 = variabl1033 + ".xml";
      else
       variabl1033 = variabl1033.substring(0,
         variabl1033.lastIndexOf("."))
         + ".xml";
     variabl1031 = variabl1463;
     if (variabl1031.lastIndexOf(".pdf") < 0)
      if (variabl1031.lastIndexOf(".") < 0)
       variabl1031 = variabl1031 + ".pdf";
      else
       variabl1031 = variabl1031.substring(0,
         variabl1031.lastIndexOf("."))
         + ".pdf";
    }
   }
  });
  int j = 10;
  if (variabl1187.length() < 3)
   j = 10;
  else
   for (int i = 0; i < 10; i++)
    if (variabl1187.lastIndexOf("," + i + ",") >= 0)
     j = j + 1;
  int variabl2339 = (variabl2483 - 20) / j;
  int variabl1423 = 5;
  for (int i = 0; i < 100; i++)
   s3 = s3 + " ";
  JButton variabl1067 = new JButton("到Word文件");
  variabl1067.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl1015.length() == 0)
     variabl1015 = JOptionPane.showInputDialog(
       "请输入导出文件名名称  例如:F:\\java.doc", "");
    ActiveXComponent word = new ActiveXComponent("Word.Application");
    Dispatch documents = word.getProperty("Documents").toDispatch();
    try {
     Dispatch doc = Dispatch.call(documents, "Add").toDispatch();
     Dispatch selection = Dispatch.get(word, "Selection")
       .toDispatch();
     Dispatch.call(selection, "HomeKey");
     Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
     Dispatch range = Dispatch.get(selection, "Range")
       .toDispatch();
     Dispatch newTable = Dispatch.call(tables, "Add", range,
       new Variant(variabl1853), new Variant(variabl2113))
       .toDispatch();
     for (int i = 0; i < variabl2197.length; i++) {
      for (int j = 0; j < variabl2113; j++) {
       Dispatch table = Dispatch.call(tables, "Item",
         new Variant(1)).toDispatch();
       Dispatch cell = Dispatch.call(table, "Cell",
         new Variant(i + 1), new Variant(j + 1))
         .toDispatch();
       Dispatch.call(cell, "Select");
       Dispatch.put(selection, "Text", variabl2197[i][j]);
      }
     }
     Dispatch.call((Dispatch) Dispatch.call(word, "WordBasic")
       .getDispatch(), "FileSaveAs", variabl1015);

    } catch (Exception e1) {
     e1.printStackTrace();
    } finally {
     Dispatch.call(word, "Quit");
    }
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",0,") >= 0)) {
   variabl1067.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 10, 20);
   frame.add(variabl1067);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton variabl1149 = new JButton("加到Word");
  variabl1149.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl1015.length() == 0)
     variabl1015 = JOptionPane.showInputDialog(
       "请输入导出文件名名称  例如:F:\\java.doc", "");
    try {
     FileInputStream in = new FileInputStream(new File(
       variabl1015));
     WordExtractor extractor = null;
     extractor = new WordExtractor(in);
     String variabl2581 = extractor.getText();
     int k = 0;
     for (int i = 0; i < variabl2581.length(); i++) {
      if ((byte) (variabl2581.charAt(i)) == 9)
       k++;
      if (variabl2581.charAt(i) == '\r'
        || variabl2581.charAt(i) == '\n')
       break;
     }
     ArrayList<String> list1 = new ArrayList<String>();
     String s0 = "", variabl2703 = "";
     String[] variabl2615 = new String[k + 1];
     int variabl2569 = 0, variabl26510 = 0;
     ;
     if (variabl2113 != k + 1) {
      JOptionPane.showMessageDialog(null,
        "原文件中数据结构与数据表不同,不能作添加式导出!");
     } else
      for (int i = 0; i < variabl2581.length(); i++) {
       if ((byte) (variabl2581.charAt(i)) == 10) {
        list1.add(s0);
        variabl2569++;
        s0 = "";
       } else if ((byte) (variabl2581.charAt(i)) != 13)
        s0 = s0 + variabl2581.substring(i, i + 1);
      }
     for (int i = 0; i < variabl2569; i++) {
      s0 = list1.get(i);
      variabl2703 = "";
      variabl26510 = 0;
      if (s0.length() > 1) {
       for (int j = 0; j < s0.length(); j++) {
        if (((byte) (variabl2581.charAt(j)) < 19)
          || (j == s0.length() - 1)) {
         if (j == s0.length() - 1)
          variabl2703 = variabl2703
            + s0.substring(j, j + 1);
         variabl2615[variabl26510] = variabl2703;
         variabl26510++;
         variabl2703 = "";
        } else {
         variabl2703 = variabl2703
           + s0.substring(j, j + 1);
        }
       }
       variabl1965.addRow(variabl2615);
       variabl1853++;
       variabl26510 = 0;
      }
     }
     File variabl1493 = new File(variabl1015);
     ActiveXComponent word = new ActiveXComponent(
       "Word.Application");
     Dispatch documents = word.getProperty("Documents")
       .toDispatch();
     try {
      Dispatch doc = Dispatch.call(documents, "Add")
        .toDispatch();
      Dispatch selection = Dispatch.get(word, "Selection")
        .toDispatch();
      Dispatch.call(selection, "HomeKey");
      Dispatch tables = Dispatch.get(doc, "Tables")
        .toDispatch();
      Dispatch range = Dispatch.get(selection, "Range")
        .toDispatch();
      Dispatch newTable = Dispatch.call(tables, "Add", range,
        new Variant(variabl1853),
        new Variant(variabl2113)).toDispatch();

      for (int i1 = 0; i1 < variabl1965.getRowCount(); i1++) {
       for (int j = 0; j < variabl2113; j++) {
        Dispatch table = Dispatch.call(tables, "Item",
          new Variant(1)).toDispatch();
        Dispatch cell = Dispatch
          .call(table, "Cell",
            new Variant(i1 + 1),
            new Variant(j + 1))
          .toDispatch();
        Dispatch.call(cell, "Select");
        Dispatch.put(selection, "Text", variabl1965
          .getValueAt(i1, j).toString());
       }
      }
      Dispatch.call(
        (Dispatch) Dispatch.call(word, "WordBasic")
          .getDispatch(), "FileSaveAs",
        variabl1015);

     } catch (Exception e1) {
      e1.printStackTrace();
     } finally {
      Dispatch.call(word, "Quit");
     }
    } catch (Exception e1) {
     e1.printStackTrace();
    }
    return;
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",1,") >= 0)) {
   variabl1149.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(variabl1149);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton variabl1017 = new JButton("到Excel文件");
  variabl1017.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    HSSFWorkbook book = new HSSFWorkbook();
    HSSFSheet sheet = book.createSheet(variabl2603);
    HSSFRow header = sheet.createRow(0);
    int colCount = variabl2113;
    for (int i = 0; i < variabl2113; i++) {
     HSSFCell cell = header.createCell(i);
     cell.setCellValue(new HSSFRichTextString(variabl1913[i]));
    }
    for (int j = 0; j < variabl1853; j++) {
     HSSFRow row = sheet.createRow(j);
     for (int i = 0; i < colCount; i++) {
      HSSFCell cell = row.createCell(i);
      cell.setCellValue(new HSSFRichTextString(
        variabl2197[j][i]));
     }
    }
    try {
     FileOutputStream fileO = new FileOutputStream(variabl1003);
     book.write(fileO);
     fileO.close();
    } catch (Exception e1) {
     e1.printStackTrace();
    }
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",2,") >= 0)) {
   variabl1017.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(variabl1017);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton variabl1061 = new JButton("加到Excel");
  variabl1061.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (variabl1003.length() == 0)
     variabl1003 = JOptionPane.showInputDialog(
       "请输入导入文件完整路径  例如:F:\\java.xls", "");
    InputStream is = null;
    HSSFWorkbook wbWorkbook = null;
    try {
     is = new FileInputStream(variabl1003);
     wbWorkbook = new HSSFWorkbook(is);
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
     JOptionPane.showMessageDialog(null, "读取文件失败,请检查路径是否正确!",
       "错误", JOptionPane.INFORMATION_MESSAGE);
    } catch (IOException e2) {
     e2.printStackTrace();
    }
    HSSFSheet sheet = wbWorkbook.getSheetAt(0);
    int lastRowNum = sheet.getLastRowNum();
    int variabl1157 = sheet.getPhysicalNumberOfRows();
    HSSFRow row = sheet.getRow(1);
    int variabl1185 = row.getPhysicalNumberOfCells();
    if (variabl1185 != variabl2113)
     JOptionPane.showMessageDialog(null,
       "原文件中数据结构与数据表不同,不能坐添加式导出!");
    String[] val;
    String value = "";
    for (int i = 0; i < variabl1157; i++) {
     row = sheet.getRow(i);
     if (row != null) {
      for (int j = 0; j < variabl1185; j++) {
       HSSFCell cell = row.getCell(j);
       if (cell != null) {
        switch (cell.getCellType()) {
        case HSSFCell.CELL_TYPE_FORMULA:
         break;
        case HSSFCell.CELL_TYPE_NUMERIC:
         value += cell.getNumericCellValue() + ",";
         break;
        case HSSFCell.CELL_TYPE_STRING:
         value += cell.getStringCellValue() + ",";
         break;
        default:
         value += "0";
         break;
        }
       }
      }
      val = value.split(",");
      variabl1965.addRow(val);
      value = "";
     }
    }
    HSSFWorkbook book = new HSSFWorkbook();
    sheet = book.createSheet(variabl2603);
    HSSFRow header = sheet.createRow(0);
    int colCount = variabl2113;
    for (int i = 0; i < variabl2113; i++) {
     HSSFCell cell = header.createCell(i);
     cell.setCellValue(new HSSFRichTextString(variabl1913[i]));
    }
    for (int j = 0; j < variabl1965.getRowCount(); j++) {
     row = sheet.createRow(j);
     for (int i = 0; i < colCount; i++) {
      HSSFCell cell = row.createCell(i);
      cell.setCellValue(new HSSFRichTextString(variabl1965
        .getValueAt(j, i).toString()));
     }
    }
    try {
     FileOutputStream fileO = new FileOutputStream(variabl1003);
     book.write(fileO);
     fileO.close();
    } catch (Exception e1) {
     e1.printStackTrace();
    }
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",3,") >= 0)) {
   variabl1061.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(variabl1061);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton variabl2225 = new JButton("标准格式");
  variabl2225.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     File file = new File(variabl1463);
     if (!file.exists()) {
      file.createNewFile();
     }
     FileOutputStream fs = new FileOutputStream(file);
     for (int j1 = 0; j1 < variabl1853; j1++) {
      for (int j2 = 0; j2 < variabl2113; j2++) {
       fs.write((variabl2197[j1][j2] + s3).substring(0,
         variabl1119[j2]).getBytes());
      }
      fs.write(("" + x1).getBytes());
     }
     fs.close();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",4,") >= 0)) {
   variabl2225.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(variabl2225);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton variabl1847 = new JButton("紧凑格式");
  variabl1847.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    String variabl2511 = ",bit,smallint,integer,int,tinyint,real,money,smallmoney,bigint,"
      + "float,double,numeric,";
    try {
     File file = new File(variabl1463);
     if (!file.exists()) {
      file.createNewFile();
     }
     int length = 0;
     FileOutputStream fs = new FileOutputStream(file);
     for (int j1 = 0; j1 < variabl1853; j1++) {
      for (int j2 = 0; j2 < variabl2113; j2++)
       if (j2 < (variabl2113 - 1))
        if (variabl2511.lastIndexOf(variabl1169[j2]) >= 0)
         fs.write((variabl2197[j1][j2] + x4)
           .getBytes());
        else
         fs.write((x3 + variabl2197[j1][j2] + x3 + x4)
           .getBytes());
       else
        fs.write((x3 + variabl2197[j1][j2] + x3)
          .getBytes());
      fs.write(("" + x1).getBytes());
     }
     fs.close();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",5,") >= 0)) {
   variabl1847.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(variabl1847);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton variabl1403 = new JButton("自定义格式");
  variabl1403.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     File file = new File(variabl1463);
     if (!file.exists()) {
      file.createNewFile();
     }
     int length = 0;
     String x5 = JOptionPane.showInputDialog("请输入字段与字段间分隔符", "");
     FileOutputStream fs = new FileOutputStream(file);
     for (int j1 = 0; j1 < variabl1853; j1++) {
      for (int j2 = 0; j2 < variabl2113; j2++)
       if (j2 < (variabl2113 - 1))
        fs.write((variabl2197[j1][j2] + x5).getBytes());
       else
        fs.write(variabl2197[j1][j2].getBytes());
      fs.write(("" + x1).getBytes());
     }
     fs.close();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }

  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",6,") >= 0)) {
   variabl1403.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(variabl1403);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton variabl1163 = new JButton("到XML文件");
  variabl1163.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     File file = new File(variabl1033);
     if (!file.exists()) {
      file.createNewFile();
     }
     FileOutputStream fs = new FileOutputStream(file);
     fs.write(("<?xml version=" + x3 + "1.0" + x3 + " encoding="
       + x3 + "GB2312" + x3 + "?>").getBytes());
     fs.write(("<Title>").getBytes());
     for (int j1 = 0; j1 < variabl1853; j1++) {
      fs.write(("    <" + variabl2603 + ">").getBytes());
      for (int j2 = 0; j2 < variabl2113; j2++) {
       s2 = "        <" + variabl1913[j2] + "> "
         + variabl2197[j1][j2] + " </"
         + variabl1913[j2] + ">";
       fs.write(s2.getBytes());
      }
      fs.write(("    </" + variabl2603 + ">").getBytes());
     }
     fs.write(("</Title>").getBytes());
     fs.close();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    } catch (IOException e2) {
     e2.printStackTrace();
    }
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",7,") >= 0)) {
   variabl1163.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(variabl1163);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton variabl1245 = new JButton("到PDF文件");
  variabl1245.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    Document document = new Document();
    try {
     PdfWriter.getInstance(document, new FileOutputStream(
       variabl1031));
     document.open();

     BaseFont bfComic = BaseFont.createFont(
       "c:\\windows\\fonts\\SIMFANG.TTF",
       BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
     Font font = new Font(bfComic, 14);

     for (int i = 0; i < variabl1853; i++) {
      String s1 = "";
      ;
      for (int j = 0; j < variabl2197[0].length; j++)
       s1 = s1 + variabl2197[i][j] + "    ";
      document.add(new Paragraph(s1, font));
     }
    } catch (DocumentException de) {
     System.err.println(de.getMessage());
    } catch (IOException ioe) {
     System.err.println(ioe.getMessage());
    }
    document.close();
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",8,") >= 0)) {
   variabl1245.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(variabl1245);
   variabl1423 = variabl1423 + variabl2339;
  }
  JButton exitButton = new JButton("退            出");
  exitButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    frame.setVisible(false);
    frame.dispose();
   }
  });
  if ((variabl1187.length() < 3) || (variabl1187.lastIndexOf(",9,") >= 0)) {
   exitButton.setBounds(variabl1423, variabl2503 - 120,
     variabl2339 - 5, 20);
   frame.add(exitButton);
   variabl1423 = variabl1423 + variabl2339;
  }
  frame.setVisible(true);
 }
}





https://blog.sciencenet.cn/blog-2551-1116590.html

上一篇:管理信息系统软件生产线源码19-23
下一篇:管理信息系统软件生产线源码27-31
收藏 IP: 183.94.47.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-13 16:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部