check小工具1.1版本

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[]) {

    }
}  


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值