zoukankan      html  css  js  c++  java
  • 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(" ");
    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 + "行数据格式错误,解密失败 ");
    list.add(cardInfo);
    continue;
    }
    cardInfo.setCardNo(cardNo);
    cardInfo.setCardPwd(password);
    } else {
    cardInfo.setMessage("第" + i + "行数据格式错误,解密失败 ");
    }
    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+" ");
    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(" ");
    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 + "行数据格式错误,解密失败 ");
    list.add(cardInfo);
    continue;
    }
    cardInfo.setCardNo(cardNo);
    cardInfo.setCardPwd(password);
    } else {
    cardInfo.setMessage("第" + i + "行数据格式错误,解密失败 ");
    }
    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+" ");
    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()+" ");

    }
    }

    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+" ");

    }

    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);
    }

    }

  • 相关阅读:
    Django 的 CSRF 保护机制
    操作系统下spinlock锁解析、模拟及损耗分析
    .Net中的并行编程-1.路线图(转)
    [leetcode] 小心成环
    [leetcode] 题型整理之图论
    [leetcode] 提醒整理之进制
    [leetcode] 题型整理之二叉树
    [leetcode] 题型整理之查找
    [leetcode] 一些会的
    [leetcode] 题型整理之排序
  • 原文地址:https://www.cnblogs.com/sunshine-in/p/4121191.html
Copyright © 2011-2022 走看看