java 解析exls
package com.mini.util;
import exception.RSADecryptException;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.math.BigInteger;
import java.net.URL;
import java.security.KeyPair;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.swing.JTextArea;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import onecarddecode.CardInfo;
import onecarddecode.RSA3;
import org.apache.log4j.Logger;
import com.e100e.chcc.common.BLCGetDigestInfo;
import com.e100e.chcc.common.FileUtils;
import com.e100e.chcc.common.FuncDate;
import com.e100e.chcc.common.FuncNumber;
import com.e100e.chcc.termchg.TermChgClientInfPkgBuild;
import com.e100e.chcc.termchg.TermChgInfClient;
import com.e100e.chcc.termchg.TermChgInfPkg;
import com.e100e.chcc.termchg.TermChgInfSession;
public class testReadExcl extends Thread
{
private static Logger logger = Logger.getLogger("appcode");
  private static int encodePwdLength = 44;
  private static int decodePwdLength = 19;
  public static List<CardInfo> readTxt(String filepath)
  {
    List list = new ArrayList();
    try {
      logger.info("开始读取-->" + filepath);
      File f = new File(filepath);
      BufferedReader in = new BufferedReader(new FileReader(f));
      String s = in.readLine();
      int i = 1;
      CardInfo cardInfo = null;
      while ((s = in.readLine()) != null) {
        i++;
        cardInfo = new CardInfo();
        String[] info = s.split("\t");
        if ((info != null) && (info.length == 2)) {
          String cardNo = info[0];
          String password = info[1];
          if ((isEmpty(cardNo)) || (isEmpty(password)) || (password.length() != encodePwdLength)) {
            cardInfo.setMessage("第" + i + "行数据格式错误,解密失败\n");
            list.add(cardInfo);
            continue;
          }
          cardInfo.setCardNo(cardNo);
          cardInfo.setCardPwd(password);
        } else {
          cardInfo.setMessage("第" + i + "行数据格式错误,解密失败\n");
        }
        list.add(cardInfo);
      }
      logger.info("成功读取读取-->" + filepath);
    } catch (FileNotFoundException fe) {
      logger.error("readTxt method未找到文件-->" + filepath);
      return null;
    } catch (IOException ie) {
      logger.error("readTxt method read-->" + filepath + "时出错");
      return null;
    }
    return list;
  }
  public static int readExcel(File ifilepath)
  throws RSADecryptException, BiffException
{
  Workbook workbook = null;
 // WritableWorkbook wwb = null;
  try {
    workbook = Workbook.getWorkbook(ifilepath);
    int sheetCount = workbook.getNumberOfSheets();
	StringBuffer fileText=new StringBuffer();
  //  wwb = Workbook.createWorkbook(new File(efilepath));
    WritableCellFormat tcenter = new WritableCellFormat(new WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD, false));
 //   tcenter.setAlignment(Alignment.CENTRE);
  //  tcenter.setVerticalAlignment(VerticalAlignment.CENTRE);
    WritableCellFormat bleft = new WritableCellFormat();
 //   bleft.setAlignment(Alignment.CENTRE);
  //  bleft.setVerticalAlignment(VerticalAlignment.CENTRE);
   // WritableSheet ws = null;
  String PSAM="";
   int count = 0;
    for (int index = 0; index < sheetCount; index++) {
      Sheet sheet = workbook.getSheet(index);
      int rows = sheet.getRows();
      int cols = sheet.getColumns();
      System.out.println("第" + index + "Sheet 行数" + rows + " 列数" + cols);
      String transidArray="";
      String psamArray="";
      if (cols == 23) {
        for (int i = 1; i < rows; i++) {
          String transid = sheet.getCell(0, i).getContents();
          String transCode = sheet.getCell(1, i).getContents();
          String costprice = sheet.getCell(5, i).getContents();
          String psam = sheet.getCell(10, i).getContents();
          PSAM=psam;
            /*
        	  if (i == 1) {
              ws = wwb.createSheet("代理商解密" + (index + 1), 0);
              ws.addCell(new Label(0, 0, "订单号", tcenter));
              ws.addCell(new Label(1, 0, "卡号", tcenter));
              ws.addCell(new Label(2, 0, "密码", tcenter));
              ws.addCell(new Label(3, 0, "面值", tcenter));
              ws.addCell(new Label(4, 0, "截止日期", tcenter));
              ws.addCell(new Label(5, 0, "购买日期", tcenter));
            }
            */
        	//fileText.append(transid+" "+psam+"\r\n");
        	  if ((!isEmpty(transid)) && (!isEmpty(psam)) && !"0.0".equals(costprice) && "9001".equals(transCode.trim()) ) {
        		  transidArray=transidArray+transid+",";
        		  psamArray=psamArray +psam+",";
        		  count++;
              }
        }
        String random = "" + FuncNumber.random(6, 9);
        
        String nebillingunitid= FuncDate.toDate(new Date(), "yyyyMMddHHmmss");
    	TermChgInfSession termChgInfSession = new TermChgInfSession("210.14.139.68",19888);
    	termChgInfSession.connect();
    	TermChgInfPkg reqTermChgInfPkg=new TermChgInfPkg();
    	reqTermChgInfPkg.m_hsmpParam.put("cmd", "TRANSIDADD");
    	reqTermChgInfPkg.m_hsmpParam.put("type", "REQ");
    	reqTermChgInfPkg.m_hsmpParam.put("time",FuncDate.toDateTime(new Date(), "yyyyMMddHHmmss"));
    	reqTermChgInfPkg.m_hsmpParam.put("hostid", "NM1301");
    	reqTermChgInfPkg.m_hsmpParam.put("billingunitid", psamArray);
    	reqTermChgInfPkg.m_hsmpParam.put("transid", transidArray);
      	reqTermChgInfPkg.m_hsmpParam.put("transtype", "0");
    	reqTermChgInfPkg.m_hsmpParam.put("transcount", ""+count);
    	reqTermChgInfPkg.m_hsmpParam.put("random", random);
    	reqTermChgInfPkg.m_hsmpParam.put("digest", TermChgClientInfPkgBuild.generateDigest(reqTermChgInfPkg,"eheado@263.net"));
    	logger.debug(reqTermChgInfPkg.toString());
    	TermChgInfPkg resTermchgInfPkg=TermChgInfClient.request(termChgInfSession, reqTermChgInfPkg);
    		termChgInfSession.disconnect();
    		logger.debug(resTermchgInfPkg.toString());
    		String resCount=(String)resTermchgInfPkg.m_hsmpParam.get("transcount");
    		  logger.info("本次总共导入 "+resCount+ "条记录");
        
      }else{
    	  logger.info(ifilepath+"文件解析失败,没入库");
      }
    }
   // System.out.println(fileText.toString());
   // FileUtils.writeFile("d:/carddata/"+PSAM+".txt",fileText.toString().getBytes());
    //logger.info("文档生成完毕");
    return 1;
  } catch (FileNotFoundException fe) {
    logger.error("未找到文件-->" + ifilepath);
    return 0;
  } catch (IOException ie) {
    logger.error("读取文件-->" + ifilepath + "时出错");
    return 0;
  
  } finally {
    if (workbook != null) {
      workbook.close();
    }
   
     
  }
}
  
  public static boolean isEmpty(String param)
  {
    return ("".equals(param)) || (param == null);
  }
  public static boolean isEmpty(List list)
  {
    return (list == null) || (list.size() < 0);
  }
  public static String RSADecode(String priKey, String pwd)
    throws Exception
  {
    return RSA3.decodeSecret(priKey, pwd);
  }
}
---------------------------------------------------------
package com.mini.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.net.URL;
import java.security.Key;
import org.apache.log4j.Logger;
import com.e100e.chcc.common.DESEncryptUtil;
public class TestServiceMain {
private static Logger logger = Logger.getLogger("appcode");
public static void main(String[] args) throws Exception {
	logger.debug("进入目录 D:/TransImport....");
	File file=new File("D:/TransImport");
	File[] fileList=file.listFiles();
	  BufferedReader reader = null;
	  BufferedWriter writer=null;
	for(File re:fileList){
		logger.debug("导入文件开始----"+re.getName());
		testReadExcl.readExcel(re);
		logger.debug("发送文件结束----"+re.getName());
	
	}
	logger.debug("导入文件结束.......");
	 
	
}
}
----------------------------------
比对
---------------------
package com.mini.util.charge;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import onecarddecode.CardInfo;
import onecarddecode.RSA3;
import org.apache.log4j.Logger;
import com.e100e.chcc.common.FileUtils;
import com.e100e.chcc.common.FuncDate;
import com.e100e.chcc.common.FuncNumber;
import com.e100e.chcc.termchg.TermChgClientInfPkgBuild;
import com.e100e.chcc.termchg.TermChgInfClient;
import com.e100e.chcc.termchg.TermChgInfPkg;
import com.e100e.chcc.termchg.TermChgInfSession;
import exception.RSADecryptException;
public class ChargeReadExcl extends Thread
{
private static Logger logger = Logger.getLogger("appcode");
  private static int encodePwdLength = 44;
  private static int decodePwdLength = 19;
  public static List<CardInfo> readTxt(String filepath)
  {
    List list = new ArrayList();
    try {
      logger.info("开始读取-->" + filepath);
      File f = new File(filepath);
      BufferedReader in = new BufferedReader(new FileReader(f));
      String s = in.readLine();
      int i = 1;
      CardInfo cardInfo = null;
      while ((s = in.readLine()) != null) {
        i++;
        cardInfo = new CardInfo();
        String[] info = s.split("\t");
        if ((info != null) && (info.length == 2)) {
          String cardNo = info[0];
          String password = info[1];
          if ((isEmpty(cardNo)) || (isEmpty(password)) || (password.length() != encodePwdLength)) {
            cardInfo.setMessage("第" + i + "行数据格式错误,解密失败\n");
            list.add(cardInfo);
            continue;
          }
          cardInfo.setCardNo(cardNo);
          cardInfo.setCardPwd(password);
        } else {
          cardInfo.setMessage("第" + i + "行数据格式错误,解密失败\n");
        }
        list.add(cardInfo);
      }
      logger.info("成功读取读取-->" + filepath);
    } catch (FileNotFoundException fe) {
      logger.error("readTxt method未找到文件-->" + filepath);
      return null;
    } catch (IOException ie) {
      logger.error("readTxt method read-->" + filepath + "时出错");
      return null;
    }
    return list;
  }
  public static int readExcel(File ifilepath)
  throws RSADecryptException, BiffException
{
  Workbook workbook = null;
 // WritableWorkbook wwb = null;
  try {
    workbook = Workbook.getWorkbook(ifilepath);
    int sheetCount = workbook.getNumberOfSheets();
	StringBuffer fileText=new StringBuffer();
  //  wwb = Workbook.createWorkbook(new File(efilepath));
    WritableCellFormat tcenter = new WritableCellFormat(new WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD, false));
 //   tcenter.setAlignment(Alignment.CENTRE);
  //  tcenter.setVerticalAlignment(VerticalAlignment.CENTRE);
    WritableCellFormat bleft = new WritableCellFormat();
 //   bleft.setAlignment(Alignment.CENTRE);
  //  bleft.setVerticalAlignment(VerticalAlignment.CENTRE);
   // WritableSheet ws = null;
    
    HashMap<String, String> inHash1=new HashMap<String, String>();//购卡
    HashMap<String, String> inHash2=new HashMap<String, String>();//充值
  String PSAM="";
   int count = 0;
    for (int index = 0; index < sheetCount; index++) {
      Sheet sheet = workbook.getSheet(index);
      int rows = sheet.getRows();
      int cols = sheet.getColumns();
      System.out.println("第" + index + "Sheet 行数" + rows + " 列数" + cols);
      String transidArray="";
      
   
      String psamArray="";
      if (cols == 23) {
        for (int i = 1; i < rows; i++) {
          String transid = sheet.getCell(0, i).getContents();
          String transCode = sheet.getCell(1, i).getContents();
          String costprice = sheet.getCell(5, i).getContents();
          String telnum = sheet.getCell(7, i).getContents();
          String psam = sheet.getCell(10, i).getContents();
          PSAM=psam;
            /*
        	  if (i == 1) {
              ws = wwb.createSheet("代理商解密" + (index + 1), 0);
              ws.addCell(new Label(0, 0, "订单号", tcenter));
              ws.addCell(new Label(1, 0, "卡号", tcenter));
              ws.addCell(new Label(2, 0, "密码", tcenter));
              ws.addCell(new Label(3, 0, "面值", tcenter));
              ws.addCell(new Label(4, 0, "截止日期", tcenter));
              ws.addCell(new Label(5, 0, "购买日期", tcenter));
            }
            */
        	//fileText.append(transid+" "+psam+"\r\n");
        	  if ((!isEmpty(transid)) && (!isEmpty(psam))  && ("900700".equals(transCode.trim()) || "900600".equals(transCode.trim()) ) ) {
        		 // transidArray=transidArray+transid+",";
        		//  psamArray=psamArray +psam+",";
        		//  count++;
        		  if("900700".equals(transCode.trim())){//充值
        			  inHash1.put(transid.substring(25)+""+transid.substring(5, 15)+""+telnum.trim()+""+PSAM,transid+"-"+psam);
        			  
        		  }else if("900600".equals(transCode.trim())){// 取卡
        			  inHash2.put(transid.substring(25)+""+transid.substring(5, 15)+""+telnum.trim()+""+PSAM,transid+"-"+psam);
        			  
        		  }
        			//fileText.append(inHash2.values()+"\r\n");
        		
              }
        }
        
        ArrayList<String> arrayList=new ArrayList<String>();
       
		Set<Map.Entry<String,String>> chargeMannerParams = inHash2.entrySet();
		for(Map.Entry<String,String> entry:chargeMannerParams){ 
        if(inHash1.get(entry.getKey())==null){
        	arrayList.add(entry.getValue());
        	//System.out.println(entry.getValue());
        }
		}
		for(int inx=0;inx<arrayList.size();inx++){
			
			
			String Trans[]=arrayList.get(inx).split("-");
			String	transid=Trans[0];
			String psam=Trans[1];
			//System.out.println(transid+" "+psam);
			
			
			transidArray=transidArray+transid+",";
			psamArray=psamArray +psam+",";
    		count++;
    		fileText.append(transid+" "+psam+"\r\n");
    		
		}
		
		System.out.println("本次共导入充值数据"+count+"条");
        String random = "" + FuncNumber.random(6, 9);
        
        String nebillingunitid= FuncDate.toDate(new Date(), "yyyyMMddHHmmss");
    	TermChgInfSession termChgInfSession = new TermChgInfSession("210.14.139.68",19888);
    	termChgInfSession.connect();
    	TermChgInfPkg reqTermChgInfPkg=new TermChgInfPkg();
    	reqTermChgInfPkg.m_hsmpParam.put("cmd", "TRANSIDADD");
    	reqTermChgInfPkg.m_hsmpParam.put("type", "REQ");
    	reqTermChgInfPkg.m_hsmpParam.put("time",FuncDate.toDateTime(new Date(), "yyyyMMddHHmmss"));
    	reqTermChgInfPkg.m_hsmpParam.put("hostid", "NM1301");
    	reqTermChgInfPkg.m_hsmpParam.put("billingunitid", psamArray);
    	reqTermChgInfPkg.m_hsmpParam.put("transid", transidArray);
    	reqTermChgInfPkg.m_hsmpParam.put("transtype", "1");
    	reqTermChgInfPkg.m_hsmpParam.put("transcount", ""+count);
    	reqTermChgInfPkg.m_hsmpParam.put("random", random);
    	reqTermChgInfPkg.m_hsmpParam.put("digest", TermChgClientInfPkgBuild.generateDigest(reqTermChgInfPkg,"eheado@263.net"));
    	logger.debug(reqTermChgInfPkg.toString());
    	TermChgInfPkg resTermchgInfPkg=TermChgInfClient.request(termChgInfSession, reqTermChgInfPkg);
    		termChgInfSession.disconnect();
    		logger.debug(resTermchgInfPkg.toString());
    		String resCount=(String)resTermchgInfPkg.m_hsmpParam.get("transcount");
    		  logger.info("本次总共导入 "+resCount+ "条记录");
        
      }else{
    	  logger.info(ifilepath+"文件解析失败,没入库");
      }
    }
    //System.out.println(fileText.toString());
    //FileUtils.writeFile("d:/carddata/"+PSAM+".txt",fileText.toString().getBytes());
    //logger.info("文档生成完毕");
    return 1;
  } catch (FileNotFoundException fe) {
    logger.error("未找到文件-->" + ifilepath);
    return 0;
  } catch (IOException ie) {
    logger.error("读取文件-->" + ifilepath + "时出错");
    return 0;
  
  } finally {
    if (workbook != null) {
      workbook.close();
    }
   
     
  }
}
  
  public static boolean isEmpty(String param)
  {
    return ("".equals(param)) || (param == null);
  }
  public static boolean isEmpty(List list)
  {
    return (list == null) || (list.size() < 0);
  }
  public static String RSADecode(String priKey, String pwd)
    throws Exception
  {
    return RSA3.decodeSecret(priKey, pwd);
  }
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号