首页 > 代码库 > java 解析exls
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);
}
}
java 解析exls