choose.java
package choose;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import ctcheck.Ccheck;
import utcheck.Ucheck;
public class Choose extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private JButton jButton1;
private JButton jButton2;
private JLabel jLabel3;
public Choose() {
initComponents();
}
private void initComponents() {
this.setTitle("check小工具"); // 设置窗体显示标题
this.setLayout(null);
jLabel3 = new JLabel("请选择check种类:");
jButton1 = new JButton("CTcheck");
jButton2 = new JButton("UTcheck");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel3.setFont(new Font("黑体", Font.BOLD, 18));
jLabel3.setBounds(130, 35, 300, 30);
add(jLabel3);
jButton1.setBounds(155, 80, 100, 50);
jButton2.setBounds(155, 170, 100, 50);
add(jButton1);
add(jButton2);
jButton1.addActionListener(this);
jButton2.addActionListener(this);
int width = Toolkit.getDefaultToolkit().getScreenSize().width; // 得到屏幕的宽度
int height = Toolkit.getDefaultToolkit().getScreenSize().height; // 得到屏幕的高度
setLocation((width - 410) / 2, (height - 280) / 2);
setSize(410, 280);
setResizable(false);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jButton1) {
new Ccheck();
}
if (e.getSource() == jButton2) { // 重置
new Ucheck();
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Choose().setVisible(true);
}
});
}
}
Ccheck.java
package ctcheck;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//import java.util.ArrayList;
//import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.CellType;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import excelfilefilter.ExcelFileFilter;
public class Ccheck extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JScrollPane jScrollPane1;
private JTable jTable1;
private DefaultTableModel tableModel1;
private JPanel jPanel1;
private JLabel jlable5;
private JLabel jlable2;
private JTextField jTextField1;
private JTextField jTextField2;
private JTextField jTextField4;
private JButton jbutton1; //确定
private JButton jbutton2; //重置
private JButton jbutton3; //导出
private JButton jbutton4; //exl路径
private JButton jbutton5; //产物路径
private Object CInfo[][];
private String th[];
Color background;
public int count = 0;
public int fcount = 0;
public int success = 0;
public int flag = 0;
public int sheetflag = 0;
public int Ccsv = 0;
public int Cpng = 0;
public int Cinca = 0;
public int Ctxt = 0;
public String filepath;
public String path;
public String path2;
public String cpath;
public String [] tFname = new String [2000];
public String [] tFstate = new String [2000];
public static void main(String[] args) {
//Ccheck c1 = new Ccheck();
}
public Ccheck() {
initialize();
}//
private void initialize() {
this.setTitle("CTcheck");
this.setLayout(new BorderLayout());
jScrollPane1 = new JScrollPane();
jTable1 = new JTable();
jPanel1 = new JPanel();
jlable5 = new JLabel("Exl页号");
jTextField1 = new JTextField();
jTextField2 = new JTextField();
jTextField4 = new JTextField();
jbutton1 = new JButton("开始check");
jbutton2 = new JButton("重置");
jbutton3 = new JButton("导出");
jbutton4 = new JButton("Exl路径选择");
jbutton5 = new JButton("产物路径选择");
jPanel1.add(jbutton4);
jPanel1.add(jTextField1);
jTextField1.setPreferredSize(new Dimension(200, 28));
jPanel1.add(jlable5);
jPanel1.add(jTextField4);
jTextField4.setPreferredSize(new Dimension(60, 28));
jPanel1.add(jbutton5);
jPanel1.add(jTextField2);
jTextField2.setPreferredSize(new Dimension(200, 28));
jPanel1.add(jbutton1);
jPanel1.add(jbutton3);
jPanel1.add(jbutton2);
jlable2 = new JLabel();
this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
jScrollPane1.getViewport().add(jTable1);
this.getContentPane().add(jPanel1, BorderLayout.NORTH);
this.getContentPane().add(jlable2, BorderLayout.SOUTH);
int width = Toolkit.getDefaultToolkit().getScreenSize().width; // 得到屏幕的宽度
int height = Toolkit.getDefaultToolkit().getScreenSize().height; // 得到屏幕的高度
setLocation((width - 1280) / 2, (height - 800) / 2);
setSize(1280, 800);
this.setVisible(true);
jbutton1.addActionListener(this);
jbutton2.addActionListener(this);
jbutton3.addActionListener(this);
jbutton4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 按钮点击事件
JFileChooser jfc=new JFileChooser("D:/");
//设置文件选择模式是文件和目录都可见
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
//弹出选择文件或路径对话框
ExcelFileFilter excelFilter = new ExcelFileFilter(); //excel过滤器
jfc.addChoosableFileFilter(excelFilter);
jfc.setFileFilter(excelFilter);
jfc.showDialog(new JLabel(), "选择");
File file=jfc.getSelectedFile();
filepath = file.getAbsolutePath();
jTextField1.setText(filepath);
path = file.getParent();
File file1 = new File(path);
path2 = file1.getParent();
File file2 = new File(path2);
path = file2.getParent();
System.out.println(path);
}
});
jbutton5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 按钮点击事件
JFileChooser jfc=new JFileChooser(path);
//设置文件选择模式是文件和目录都可见
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
//弹出选择文件或路径对话框
jfc.showDialog(new JLabel(), "选择");
//得到选择的文件或文件夹的file
File file=jfc.getSelectedFile();
ExcelFileFilter excelFilter = new ExcelFileFilter(); //excel过滤器
jfc.addChoosableFileFilter(excelFilter);
jfc.setFileFilter(excelFilter);
if(file.isDirectory()){
cpath = file.getAbsolutePath();
jTextField2.setText(cpath);
System.out.println("文件夹:"+file.getAbsolutePath());
}else if(file.isFile()){
cpath = file.getAbsolutePath();
jTextField2.setText(cpath);
System.out.println("文件:"+file.getAbsolutePath());
}
System.out.println(jfc.getSelectedFile().getName());
}
});
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jbutton1) {
check();//开始ut校验
if(sheetflag == 1){
PngFilescheck();
TXTFilescheck();
TBFilescheck();
INCAFilescheck();
}
}
if (e.getSource() == jbutton2) {
clear();//重置
}
if (e.getSource() == jbutton3) {
exportExl();//导出
}
}
public void check() {
String fnamecsv;
String fnamepng;
//jTextField4.setText("INTECRIO_REF");
//jTextField4.setText("clt_per");
String file1a = filepath;
String file2a = cpath;
String file1b = file1a.replace("/", "\\");
String file2b = file2a.replace("/", "\\");
File file = new File(file1b);//E:/POT2.xls
String baseDIR = file2b;//E:/check工具/新しいフォルダー/CSV
if (!file.exists()){
System.out.println("文件不存在");
JOptionPane.showMessageDialog(null, "excel文件不存在 ", "error",JOptionPane.ERROR_MESSAGE);}
try {
//1.读取Excel的对象
POIFSFileSystem poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
//2.Excel工作薄对象
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
HSSFSheet sheet=null;
for (int i = 0; i < hssfWorkbook.getNumberOfSheets(); i++) {//获取每个Sheet表
sheet=hssfWorkbook.getSheetAt(i);
String sheetName = sheet.getSheetName();
if(jTextField4.getText().equals(sheetName)){
sheetflag = 1 ;
break;
}
else sheetflag = 0;
}
if(sheetflag == 1){
//3.Excel工作表对象
HSSFSheet hssfSheet = hssfWorkbook.getSheet(jTextField4.getText());//9-1
//总行数
int rowLength = hssfSheet.getLastRowNum()+1;
//4.得到Excel工作表的行
//HSSFRow hssfRow = hssfSheet.getRow(0);
//总列数
// int colLength = hssfRow.getLastCellNum();
for (int i = 8; i < rowLength-3; i++) {
//获取Excel工作表的行
HSSFRow hssfRow1 = hssfSheet.getRow(i);
//for (int j = colLength-4; j < colLength-3; j++) {
//获取指定单元格
HSSFCell hssfCell1 = hssfRow1.getCell(12);
//Cannot get a STRING value from a NUMERIC cell
//将所有的需要读的Cell表格设置为String格式
if (hssfCell1 != null) {
hssfCell1.setCellType(CellType.STRING);
}
else break;
//获取每一列中的值
String s = hssfCell1.getStringCellValue();
if(!s.trim().equals("-")&&!s.trim().equals("目視確認のためログなし")&& s != null) {
String[] strarray=s.split("\n");
for(int k = 0;k<strarray.length;k++){
String s1 = strarray[k];
System.out.println(s1);
tFname[count] = s1;
count++;
}
}
}
for(int i = 0;i<count;i++){
String s1 = tFname[i];
String[] strarray1=tFname[i].split("\\.");
for(int k1=1;k1<strarray1.length;k1++){
if(strarray1[k1].equals("csv")||strarray1[k1].equals("CSV")||strarray1[k1].equals("tgc")||strarray1[k1].equals("TGC")||strarray1[k1].equals("trd")||strarray1[k1].equals("TRD"))
{
fnamecsv = s1;
findFiles(baseDIR+"/TB", fnamecsv);
if(flag == 1) {
tFstate[i] = "Match success";
Ccsv++;
}
else tFstate[i] = "Product name mismatch or product deletion";
}
else if(strarray1[k1].equals("png")||strarray1[k1].equals("PNG")){
fnamepng = s1;
findFiles(baseDIR+"/PNG", fnamepng);
if(flag == 1) {
tFstate[i] = "Match success";
Cpng++;
}
else tFstate[i] = "Product name mismatch or product deletion";
}
else if(strarray1[k1].equals("dat")||strarray1[k1].equals("DAT")||strarray1[k1].equals("xda")||strarray1[k1].equals("xda")){
fnamepng = s1;
findFiles(baseDIR+"/INCA", fnamepng);
if(flag == 1) {
tFstate[i] = "Match success";
Cinca++;
}
else tFstate[i] = "Product name mismatch or product deletion";
}
else if(strarray1[k1].equals("txt")||strarray1[k1].equals("TXT")){
fnamepng = s1;
findFiles(baseDIR+"/TXT", fnamepng);
if(flag == 1) {
tFstate[i] = "Match success";
Ctxt++;
}
else tFstate[i] = "Product name mismatch or product deletion";
}
else{
//JOptionPane.showMessageDialog(null, "excel中存在命名错误产物" + s1 + "第"+rowi+"行", "error",JOptionPane.ERROR_MESSAGE);
tFstate[i]="The product name is not legal";
}
}
}
hssfWorkbook.close();
}
else JOptionPane.showMessageDialog(null, "sheet名不存在 ", "error",JOptionPane.ERROR_MESSAGE);
} catch (IOException e) {
e.printStackTrace();
}
th = new String[] { "Num","Product name in Excel","state"};
CInfo = new Object[count][th.length];
for (int k = 0;k < count;k++ ) {
CInfo[k][0] = k + 1;
CInfo[k][1] = tFname[k];
CInfo[k][2] = tFstate[k];
}
jScrollPane1.setVisible(true);
jlable2.setVisible(true);
tableModel1 = new DefaultTableModel(CInfo, th);
jTable1.setModel(tableModel1);
jTable1.setRowHeight(20);
jlable2.setText("TB文件夹下产物匹配成功"+Ccsv+"条!"+"PNG文件夹下产物匹配成功"+Cpng+"条!"+"INCA文件夹下产物匹配成功"+Cinca+"条!"+"TXT文件夹下产物匹配成功"+Ctxt+"条!"+"共匹配成功"+success+"条!"+"check完毕!");
jlable2.setForeground(Color.RED);
}
public File findFiles(String baseDirName, String targetFileName) {
File baseDir = new File(baseDirName); // 创建一个File对象
if (!baseDir.exists() || !baseDir.isDirectory()) { // 判断目录是否存在
System.out.println("产物查找失败:" + baseDirName + "不是一个目录!");
JOptionPane.showMessageDialog(null, "产物查找失败:" + baseDirName + "不是一个目录!", "error",JOptionPane.ERROR_MESSAGE);
}
String tempName = null;
File tempFile;
File[] files = baseDir.listFiles();
//System.out.println(baseDirName+"下文件个数:"+files.length);
if(files.length==0){//该文件夹下没有文件,为空文件夹
System.out.println("为空文件夹");
JOptionPane.showMessageDialog(null, "为空文件夹 ", "error",JOptionPane.ERROR_MESSAGE);
return null;
}
fcount = files.length;
for (int i = 0; i < files.length; i++) {
tempFile = files[i];
tempName = tempFile.getName().replace(" ","");
if(targetFileName.equalsIgnoreCase(tempName)){
//System.out.println(tempFile.getAbsoluteFile().toString());
System.out.println("UT产物"+targetFileName+"匹配成功");
success++;
flag = 1;
return tempFile.getAbsoluteFile();
}
else flag = 0;
}
return null;
}
public File TBFilescheck () {
String file2a = cpath;
String file2b = file2a.replace("/", "\\");
String baseDirName = file2b+"/TB";
File baseDir1 = new File(baseDirName);
String tempName = null;
File tempFile;
File[] files = baseDir1.listFiles();
int csvflag = 0;
if(files.length != 0){
for (int i = 0; i < files.length; i++) {
tempFile = files[i];
tempName = tempFile.getName().replace(" ","");
for(int j = 0;j < count;j++){
if(tempName.equals(tFname[j])){
csvflag = 1;
break;
}
else csvflag = 0;
}
if(csvflag == 0){
JOptionPane.showMessageDialog(null, "TB文件中存在多余产物:" + tempName , "error",JOptionPane.INFORMATION_MESSAGE);
}
}
}
return null;
}
public File PngFilescheck () {
String file2a = cpath;
String file2b = file2a.replace("/", "\\");
String baseDirName = file2b+"/PNG";
File baseDir1 = new File(baseDirName);
String tempName = null;
File tempFile;
File[] files = baseDir1.listFiles();
int pngflag = 0;
if(files.length != 0){
for (int i = 0; i < files.length; i++) {
tempFile = files[i];
tempName = tempFile.getName().replace(" ","");
for(int j = 0;j < count;j++){
if(tempName.equalsIgnoreCase(tFname[j])){
pngflag = 1;
break;
}
else pngflag = 0;
}
if(pngflag == 0){
JOptionPane.showMessageDialog(null, "PNG文件中存在多余产物:" + tempName, "error",JOptionPane.INFORMATION_MESSAGE);
}
}
}
return null;
}
public File TXTFilescheck () {
String file2a = cpath;
String file2b = file2a.replace("/", "\\");
String baseDirName = file2b+"/TXT";
File baseDir1 = new File(baseDirName);
String tempName = null;
File tempFile;
File[] files = baseDir1.listFiles();
int pngflag = 0;
if(files.length != 0){
for (int i = 0; i < files.length; i++) {
tempFile = files[i];
tempName = tempFile.getName().replace(" ","");
for(int j = 0;j < count;j++){
if(tempName.equalsIgnoreCase(tFname[j])){
pngflag = 1;
break;
}
else pngflag = 0;
}
if(pngflag == 0){
JOptionPane.showMessageDialog(null, "TXT文件中存在多余产物:" + tempName, "error",JOptionPane.INFORMATION_MESSAGE);
}
}
}
return null;
}
public File INCAFilescheck () {
String file2a = cpath;
String file2b = file2a.replace("/", "\\");
String baseDirName = file2b+"/INCA";
File baseDir1 = new File(baseDirName);
String tempName = null;
File tempFile;
File[] files = baseDir1.listFiles();
int pngflag = 0;
if(files.length != 0){
for (int i = 0; i < files.length; i++) {
tempFile = files[i];
tempName = tempFile.getName().replace(" ","");
for(int j = 0;j < count;j++){
if(tempName.equalsIgnoreCase(tFname[j])){
pngflag = 1;
break;
}
else pngflag = 0;
}
if(pngflag == 0){
JOptionPane.showMessageDialog(null, "INCA文件中存在多余产物:" + tempName, "error",JOptionPane.INFORMATION_MESSAGE);
}
}
}
return null;
}
public void clear() {
//jTextField1.setText("");
//jTextField2.setText("");
//jTextField4.setText("");
jlable2.setText("");
DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
tableModel.setRowCount(0);
count = 0;
Ccsv = 0;
Cpng = 0;
Cinca = 0;
sheetflag = 0;
flag = 0;
success = 0;
}
public void exportTable(JTable table, File file) throws IOException {
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
BufferedWriter bWriter = new BufferedWriter(new FileWriter(file));
for(int i=0; i < model.getColumnCount(); i++) {
bWriter.write(model.getColumnName(i));
bWriter.write("\t");
}
bWriter.newLine();
for(int i=0; i< model.getRowCount(); i++) {
for(int j=0; j < model.getColumnCount(); j++) {
bWriter.write(model.getValueAt(i,j).toString());
bWriter.write("\t");
}
bWriter.newLine();
}
bWriter.close();
System.out.println("write out to: " + file);
JOptionPane.showMessageDialog(null, "写入: " + file + "成功!", "导出成功",JOptionPane.INFORMATION_MESSAGE);
}
public void exportExl(){
FileDialog fd = new FileDialog(this, "保存产物check记录", FileDialog.SAVE);
fd.setLocation(400, 250);
fd.setVisible(true);
String stringfile = fd.getDirectory()+fd.getFile()+".xls";
if(!stringfile.equalsIgnoreCase( "nullnull.xls")){
try {
exportTable(jTable1, new File(stringfile));
} catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
}
}
Ucheck.java
package utcheck;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//import java.util.ArrayList;
//import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.CellType;
import excelfilefilter.ExcelFileFilter;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
public class Ucheck extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private JScrollPane jScrollPane1;
private JTable jTable1;
private DefaultTableModel tableModel1;
private JPanel jPanel1;
private JLabel jlable5;
private JLabel jlable2;
private JTextField jTextField1;
private JTextField jTextField2;
private JTextField jTextField4;
private JButton jbutton1; //确定
private JButton jbutton2; //重置
private JButton jbutton3; //导出
private JButton jbutton4; //exl路径
private JButton jbutton5; //产物路径
private Object CInfo[][];
private String th[];
Color background;
public int count = 0;
public int fcount = 0;
public int success = 0;
public int flag = 0;
public int sheetflag = 0;
public int Ccsv = 0;
public int Cpng = 0;
public int Csv = 0;
public int Png = 0;
public int error = 0;
public String filepath;
public String cpath;
public String path;
public String [] tFname = new String [2000];
public String [] tFstate = new String [2000];
public static void main(String[] args) {
//Ucheck c1 = new Ucheck();
}
public Ucheck() {
initialize();
}//
private void initialize() {
this.setTitle("UTcheck");
this.setLayout(new BorderLayout());
jScrollPane1 = new JScrollPane();
jTable1 = new JTable();
jPanel1 = new JPanel();
jlable5 = new JLabel("Exl页号");
jTextField1 = new JTextField();
jTextField2 = new JTextField();
jTextField4 = new JTextField();
jbutton1 = new JButton("开始check");
jbutton2 = new JButton("重置");
jbutton3 = new JButton("导出");
jbutton4 = new JButton("Exl路径选择");
jbutton5 = new JButton("产物路径选择");
jPanel1.add(jbutton4);
jPanel1.add(jTextField1);
jTextField1.setPreferredSize(new Dimension(200, 28));
jPanel1.add(jlable5);
jPanel1.add(jTextField4);
jTextField4.setPreferredSize(new Dimension(60, 28));
jPanel1.add(jbutton5);
jPanel1.add(jTextField2);
jTextField2.setPreferredSize(new Dimension(200, 28));
jPanel1.add(jbutton1);
jPanel1.add(jbutton3);
jPanel1.add(jbutton2);
jlable2 = new JLabel();
this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
jScrollPane1.getViewport().add(jTable1);
this.getContentPane().add(jPanel1, BorderLayout.NORTH);
this.getContentPane().add(jlable2, BorderLayout.SOUTH);
int width = Toolkit.getDefaultToolkit().getScreenSize().width; // 得到屏幕的宽度
int height = Toolkit.getDefaultToolkit().getScreenSize().height; // 得到屏幕的高度
setLocation((width - 1280) / 2, (height - 800) / 2);
setSize(1280, 800);
this.setVisible(true);
jbutton1.addActionListener(this);
jbutton2.addActionListener(this);
jbutton3.addActionListener(this);
jbutton4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 按钮点击事件
JFileChooser jfc=new JFileChooser("D:/");
//设置文件选择模式是文件和目录都可见
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
//弹出选择文件或路径对话框
ExcelFileFilter excelFilter = new ExcelFileFilter(); //excel过滤器
jfc.addChoosableFileFilter(excelFilter);
jfc.setFileFilter(excelFilter);
jfc.showDialog(new JLabel(), "选择");
File file=jfc.getSelectedFile();
filepath = file.getAbsolutePath();
jTextField1.setText(filepath);
path = file.getParent();
File file1 = new File(path);
path = file1.getParent();
File file2 = new File(path);
path = file2.getParent();
System.out.println(path);
}
});
jbutton5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 按钮点击事件
JFileChooser jfc=new JFileChooser(path);
//设置文件选择模式是文件和目录都可见
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
//弹出选择文件或路径对话框
jfc.showDialog(new JLabel(), "选择");
//得到选择的文件或文件夹的file
File file=jfc.getSelectedFile();
if(file.isDirectory()){
cpath = file.getAbsolutePath();
jTextField2.setText(cpath);
System.out.println("文件夹:"+file.getAbsolutePath());
}else if(file.isFile()){
cpath = file.getAbsolutePath();
jTextField2.setText(cpath);
System.out.println("文件:"+file.getAbsolutePath());
}
System.out.println(jfc.getSelectedFile().getName());
}
});
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jbutton1) {
check();//开始ut校验
if(sheetflag == 1){
CsvFilescheck();
PngFilescheck();
}
}
if (e.getSource() == jbutton2) {
clear();//重置
}
if (e.getSource() == jbutton3) {
exportExl();//导出
}
}
public void check() {
String fnamecsv;
String fnamepng;
//jTextField4.setText("9-1-2");
String file1a = filepath;
String file2a = cpath;
String file1b = file1a.replace("/", "\\");
String file2b = file2a.replace("/", "\\");
File file = new File(file1b);//E:/POT2.xls
String baseDIR = file2b;//E:/check工具/新しいフォルダー/CSV
if (!file.exists()){
System.out.println("文件不存在");
JOptionPane.showMessageDialog(null, "excel文件不存在 ", "error",JOptionPane.ERROR_MESSAGE);}
try {
//1.读取Excel的对象
POIFSFileSystem poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
//2.Excel工作薄对象
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
HSSFSheet sheet=null;
for (int i = 0; i < hssfWorkbook.getNumberOfSheets(); i++) {//获取每个Sheet表
sheet=hssfWorkbook.getSheetAt(i);
String sheetName = sheet.getSheetName();
if(jTextField4.getText().equals(sheetName)){
sheetflag = 1 ;
break;
}
else sheetflag = 0;
}
if(sheetflag == 1){
//3.Excel工作表对象
HSSFSheet hssfSheet = hssfWorkbook.getSheet(jTextField4.getText());//9-1
//总行数
int rowLength = hssfSheet.getLastRowNum()+1;
//4.得到Excel工作表的行
HSSFRow hssfRow = hssfSheet.getRow(0);
//总列数
int colLength = hssfRow.getLastCellNum();
for (int i = 8; i < rowLength-3; i++) { // 读excel
//获取Excel工作表的行
HSSFRow hssfRow1 = hssfSheet.getRow(i);
for (int j = colLength-4; j < colLength-3; j++) {
//获取指定单元格
HSSFCell hssfCell1 = hssfRow1.getCell(j);
//Cannot get a STRING value from a NUMERIC cell
//将所有的需要读的Cell表格设置为String格式
if (hssfCell1 != null) {
hssfCell1.setCellType(CellType.STRING);
}
//获取每一列中的值
String s = hssfCell1.getStringCellValue();
if(!s.equals("-")&&s.length() > 0) {
String[] strarray=s.split("\n");
for(int k = 0;k<strarray.length;k++){
String s1 = strarray[k];
System.out.println(s1);
tFname[count] = s1;
count++;
}
}
}
}
for(int i = 0;i<count;i++){ //文件计数器
String[] strarray1=tFname[i].split("\\.");
for(int k1=1;k1<strarray1.length;k1++){
if(strarray1[k1].equals("csv")||strarray1[k1].equals("CSV")){
Csv++;
}
else if(strarray1[k1].equals("png")||strarray1[k1].equals("PNG")){
Png++;
}
else{
error++;
}
}
}
for(int i = 0;i<count;i++){ //文件匹配
String[] strarray1=tFname[i].split("\\.");
for(int k1=1;k1<strarray1.length;k1++){
if(strarray1[k1].equals("csv")||strarray1[k1].equals("CSV")){
fnamecsv = strarray1[k1-1]+"."+strarray1[k1];
findFiles(baseDIR+"/CSV", fnamecsv);
if(flag == 1) {
tFstate[i] = "Match success";
Ccsv++;
}
else tFstate[i] = "Product name mismatch or product deletion";
}
else if(strarray1[k1].equals("png")||strarray1[k1].equals("PNG")){
fnamepng = strarray1[k1-1]+"."+strarray1[k1];
findFiles(baseDIR+"/PNG", fnamepng);
if(flag == 1) {
tFstate[i] = "Match success";
Cpng++;
}
else tFstate[i] = "Product name mismatch or product deletion";
}
else{
tFstate[i]="The product name is not legal";
}
}
}
hssfWorkbook.close();
System.out.println("产物总数为:"+count);
System.out.println("csv产物共有:"+Ccsv);
System.out.println("png产物共有:"+Cpng);
}
else JOptionPane.showMessageDialog(null, "sheet名不存在 ", "error",JOptionPane.ERROR_MESSAGE);
} catch (IOException e) {
e.printStackTrace();
}
th = new String[] { "Num","Product name in Excel","state"};
CInfo = new Object[count][th.length];
for (int k = 0;k < count;k++ ) {
CInfo[k][0] = k + 1;
CInfo[k][1] = tFname[k];
CInfo[k][2] = tFstate[k];
}
jScrollPane1.setVisible(true);
jlable2.setVisible(true);
tableModel1 = new DefaultTableModel(CInfo, th);
jTable1.setModel(tableModel1);
jTable1.setRowHeight(24);
jlable2.setText("csv产物匹配成功:"+Ccsv+"条!"+"png产物匹配成功"+Cpng+"条!"+"共匹配成功"+success+"条!"+"check完毕!(注:如果匹配成功数量多于文件中产物数量,那exl中产物存在重名的情况!)");
jlable2.setForeground(Color.RED);
}
public File findFiles(String baseDirName, String targetFileName) {
File baseDir = new File(baseDirName); // 创建一个File对象
if (!baseDir.exists() || !baseDir.isDirectory()) { // 判断目录是否存在
System.out.println("产物查找失败:" + baseDirName + "不是一个目录!");
JOptionPane.showMessageDialog(null, "产物查找失败:" + baseDirName + "不是一个目录!", "error",JOptionPane.ERROR_MESSAGE);
}
String tempName = null;
File tempFile;
File[] files = baseDir.listFiles();
//System.out.println(baseDirName+"下文件个数:"+files.length);
if(files.length==0){//该文件夹下没有文件,为空文件夹
System.out.println("为空文件夹");
JOptionPane.showMessageDialog(null, "为空文件夹 ", "error",JOptionPane.ERROR_MESSAGE);
return null;
}
for (int i = 0; i < files.length; i++) {
tempFile = files[i];
tempName = tempFile.getName().replace(" ","");
if(targetFileName.equalsIgnoreCase(tempName)){
//System.out.println(tempFile.getAbsoluteFile().toString());
System.out.println("UT产物"+targetFileName+"匹配成功");
success++;
flag = 1;
return tempFile.getAbsoluteFile();
}
else flag = 0;
}
return null;
}
public File CsvFilescheck () {
String file2a = cpath;
String file2b = file2a.replace("/", "\\");
String baseDirName = file2b+"/CSV";
File baseDir1 = new File(baseDirName);
String tempName = null;
File tempFile;
File[] files = baseDir1.listFiles();
int csvflag = 0;
if(files.length != 0){
for (int i = 0; i < files.length; i++) {
tempFile = files[i];
tempName = tempFile.getName().replace(" ","");
for(int j = 0;j < count;j++){
if(tempName.equals(tFname[j])){
csvflag = 1;
break;
}
else csvflag = 0;
}
if(csvflag == 0){
JOptionPane.showMessageDialog(null, "CSV文件中存在多余产物:" + tempName , "error",JOptionPane.INFORMATION_MESSAGE);
}
}
}
return null;
}
public File PngFilescheck () {
String file2a = cpath;
String file2b = file2a.replace("/", "\\");
String baseDirName = file2b+"/PNG";
File baseDir1 = new File(baseDirName);
String tempName = null;
File tempFile;
File[] files = baseDir1.listFiles();
int pngflag = 0;
if(files.length != 0){
for (int i = 0; i < files.length; i++) {
tempFile = files[i];
tempName = tempFile.getName().replace(" ","");
for(int j = 0;j < count;j++){
if(tempName.equalsIgnoreCase(tFname[j])){
pngflag = 1;
break;
}
else pngflag = 0;
}
if(pngflag == 0){
JOptionPane.showMessageDialog(null, "PNG文件中存在多余产物:" + tempName, "error",JOptionPane.INFORMATION_MESSAGE);
}
}
}
return null;
}
public void clear() {
//jTextField1.setText("");
//jTextField2.setText("");
//jTextField3.setText("");
//jTextField4.setText("");
jlable2.setText("");
DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
tableModel.setRowCount(0);
count = 0;
Ccsv = 0;
Cpng = 0;
flag = 0;
success = 0;
}
public void exportTable(JTable table, File file) throws IOException {
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
BufferedWriter bWriter = new BufferedWriter(new FileWriter(file));
for(int i=0; i < model.getColumnCount(); i++) {
bWriter.write(model.getColumnName(i));
bWriter.write("\t");
}
bWriter.newLine();
for(int i=0; i< model.getRowCount(); i++) {
for(int j=0; j < model.getColumnCount(); j++) {
bWriter.write(model.getValueAt(i,j).toString());
bWriter.write("\t");
}
bWriter.newLine();
}
bWriter.close();
System.out.println("write out to: " + file);
JOptionPane.showMessageDialog(null, "写入: " + file + "成功!", "导出成功",JOptionPane.INFORMATION_MESSAGE);
}
public void exportExl(){
FileDialog fd = new FileDialog(this, "保存产物check记录", FileDialog.SAVE);
fd.setLocation(400, 250);
fd.setVisible(true);
String stringfile = fd.getDirectory()+fd.getFile()+".xls";
if(!stringfile.equalsIgnoreCase("nullnull.xls")){
try {
exportTable(jTable1, new File(stringfile));
} catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
}
}
ExcelFileFilter.java
package excelfilefilter;
public class ExcelFileFilter extends javax.swing.filechooser.FileFilter {
public String getDescription() {
return "*.xls;*.xlsx";
}
public boolean accept(java.io.File file) {
String name = file.getName();
return file.isDirectory() || name.toLowerCase().endsWith(".xls") || name.toLowerCase().endsWith(".xlsx"); // 仅显示目录和xls、xlsx文件
}
public static void main(String args[]) {
}
}