jxl
<dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.12</version> </dependency>
ReadExcel
将xlsx 用excle打开另存为为xls
读取excle
public class ReadExcel{ private String filePath; private List<String[]> list = new ArrayList(); public ReadExcel(String filePath){ this.filePath = filePath; } public List<String[]> readExcel() throws IOException, BiffException{ //创建输入流 InputStream stream = new FileInputStream(filePath); //获取Excel文件对象 Workbook rwb = Workbook.getWorkbook(stream); //获取文件的指定工作表 默认的第一个 Sheet sheet = rwb.getSheet(0); //行数(表头的目录不需要,从1开始) for(int i=0; i<sheet.getRows(); i++){ //创建一个数组 用来存储每一列的值 String[] str = new String[sheet.getColumns()]; Cell cell = null; //列数 for(int j=0; j<sheet.getColumns(); j++){ //获取第i行,第j列的值 cell = sheet.getCell(j,i); str[j] = cell.getContents(); } //把刚获取的列存入list list.add(str); } return list; } public void outData(){ for(int i=0;i<list.size();i++){ String[] str = (String[])list.get(i); for(int j=0;j<str.length;j++){ System.out.print(str[j]+‘\t‘); } System.out.println(); } } public static void main(String args[]) throws BiffException, IOException{ ReadExcel excel = new ReadExcel("C:\\Users\\hasee\\Documents\\263EM\\108251@ycgwl.com\\receive_file\\aa.xls"); excel.readExcel(); excel.outData(); } }
FileOperation
写文件
public class FileOperation { /** * 创建文件 * @param fileName * @return */ public static boolean createFile(File fileName)throws Exception{ boolean flag=false; try{ if(!fileName.exists()){ fileName.createNewFile(); flag=true; } }catch(Exception e){ e.printStackTrace(); } return true; } /** * 读TXT文件内容 * @param fileName * @return */ public static String readTxtFile(File fileName)throws Exception{ String result=null; FileReader fileReader=null; BufferedReader bufferedReader=null; try{ fileReader=new FileReader(fileName); bufferedReader=new BufferedReader(fileReader); try{ String read=null; while((read=bufferedReader.readLine())!=null){ result=result+read+"\r\n"; } }catch(Exception e){ e.printStackTrace(); } }catch(Exception e){ e.printStackTrace(); }finally{ if(bufferedReader!=null){ bufferedReader.close(); } if(fileReader!=null){ fileReader.close(); } } System.out.println("读取出来的文件内容是:"+"\r\n"+result); return result; } public static boolean writeTxtFile(String content,File fileName)throws Exception{ RandomAccessFile mm=null; boolean flag=false; FileOutputStream o=null; try { o = new FileOutputStream(fileName); o.write(content.getBytes("GBK")); o.close(); // mm=new RandomAccessFile(fileName,"rw"); // mm.writeBytes(content); flag=true; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ if(mm!=null){ mm.close(); } } return flag; } public static void contentToTxt(String filePath, String content) { String str = new String(); //原有txt内容 String s1 = new String();//内容更新 try { File f = new File(filePath); if (f.exists()) { System.out.print("文件存在"); } else { System.out.print("文件不存在"); f.createNewFile();// 不存在则创建 } BufferedReader input = new BufferedReader(new FileReader(f)); while ((str = input.readLine()) != null) { s1 += str + "\n"; } System.out.println(s1); input.close(); s1 += content; BufferedWriter output = new BufferedWriter(new FileWriter(f)); output.write(s1); output.close(); } catch (Exception e) { e.printStackTrace(); } } }
发请求
HttpClientUtil
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:spring/spring-context.xml"}) public class HttpClientUtil { private String excelUrl = "C:\\Users\\hasee\\Documents\\263EM\\108251@ycgwl.com\\receive_file\\aa.xls"; @Autowired private IPpApiService ppApiService; @Autowired private IBaseRedisCacheService baseRedisCacheService; private static MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager(); private static final int TIMEOUT = 5 * 1000000;//5 * 1000 // StringUtils.strToInteger(propFactory.getConfig("max_http_connection"), 50);// 50 private static final int MAX_HTTP_CONNECTION = 50; private static final int MAX_CONNECTION_PER_HOST = 10;// 10 private static final String CHARSET_UTF8 = "UTF-8"; private static HttpClientUtil instance = null; private static final String APP_KEY = "BOS"; private static final String APP_SECRET = "WREW223421FDR134R"; // private static Logger logger = Logger.getLogger(HttpClientUtil.class); static { //HttpClient 连接池属性设置,HOST并发数默认为50, 客户端总并发数为200, TimeOut时间为5s. HttpConnectionManagerParams httpConnectionManagerParams = new HttpConnectionManagerParams(); // 文档参数说明:Sets the maximum number of connections allowed. httpConnectionManagerParams.setMaxTotalConnections(MAX_HTTP_CONNECTION); // 文档参数说明: Sets the default maximum number of connections allowed for a given host config. httpConnectionManagerParams.setDefaultMaxConnectionsPerHost(MAX_CONNECTION_PER_HOST); // 读取数据超时时间 httpConnectionManagerParams.setSoTimeout(TIMEOUT); // 连接超时时间 httpConnectionManagerParams.setConnectionTimeout(TIMEOUT); connectionManager.setParams(httpConnectionManagerParams); } public HttpClientUtil() { } public static HttpClientUtil getInstance() { if (null == instance) { synchronized (HttpClientUtil.class) { if (instance == null) { instance = new HttpClientUtil(); } } } return instance; } public HttpClient createHttpClient() { HttpClient httpClient = new HttpClient(connectionManager); return httpClient; } /** * 进行 http请求返回String结果 * * @param url * @return */ public String getHttpClientJson(String url) { HttpClient httpClient = createHttpClient(); GetMethod getMethod = new GetMethod(url); try { httpClient.executeMethod(getMethod); InputStreamReader in = new InputStreamReader(getMethod.getResponseBodyAsStream(), HttpClientUtil.CHARSET_UTF8); // String jsonString = getMethod.getResponseBodyAsString(); String jsonString = getStringByParams(in); return jsonString; } catch (Exception e) { /* logger.error("Http Client GetMethod Execute is Exception , Message = " + e.getMessage(), e);*/ return "{\"msg\":\"获取账户余额信息失败!\",\"success\":\"false\"}"; } finally { if (getMethod != null) getMethod.releaseConnection(); } } /** * 进行 http post请求返回String结果 * * @param url * @return */ public String postHttpClientJson(String url, String params) { HttpClient httpClient = createHttpClient(); PostMethod postMethod = getPostMethod(url, params); try { //logger.info(" Request Navigate Url is : " + url); httpClient.executeMethod(postMethod); // String jsonString = postMethod.getResponseBodyAsString(); InputStreamReader in = new InputStreamReader(postMethod.getResponseBodyAsStream(), HttpClientUtil.CHARSET_UTF8); String jsonString = getStringByParams(in); // 当地址端口错误时,返回为空,为防止Json解析异常 if (jsonString == null || "".equals(jsonString)) { jsonString = "[{\"msg\":\"获取折扣信息失败!\",\"success\":\"false\"}]"; } return jsonString; } catch (Exception e) { // logger.error("Http Client PostMethod Execute is Exception , Message = " + e.getMessage(), e); return e.getMessage(); } finally { if (postMethod != null) postMethod.releaseConnection(); } } /** * @param params * @return List<NameValuePair> 返回类型 * @throws * @Title: getCheckParam * @Description: (设置验证参数) */ private List<NameValuePair> getCheckParam(String params) { String digest = SecurityUtil.getDigest(params + APP_KEY + APP_SECRET); String timestamp = "" + new Date().getTime(); final List<NameValuePair> nameValueList = new ArrayList<NameValuePair>(); // 接口调用的请求格式 nameValueList.add(new NameValuePair("params", params)); nameValueList.add(new NameValuePair(Constants.DEFAULT_ALP_DIGEST_NAME, digest)); nameValueList.add(new NameValuePair(Constants.DEFAULT_ALP_TIMESTAMP_NAME, timestamp)); nameValueList.add(new NameValuePair("appkey", APP_KEY)); return nameValueList; } /** * @param url * @param params * @return PostMethod 返回类型 * @throws * @Title: getPostMethod * @Description: (设置params参数) */ private PostMethod getPostMethod(String url, String params) { PostMethod postMethod = new PostMethod(url); List<NameValuePair> nameValueList = getCheckParam(params); postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); postMethod.setRequestBody(nameValueList.toArray(new NameValuePair[nameValueList.size()])); // postMethod.addRequestHeader("Connection", "close"); return postMethod; } /** * @param in * @return String 返回类型 * @throws IOException * @throws * @Title: getStringByParams * @Description: (将流文件转换成字符) */ private String getStringByParams(InputStreamReader in) throws IOException { BufferedReader reader = new BufferedReader(in); StringBuffer stringBuffer = new StringBuffer(); String str = ""; while ((str = reader.readLine()) != null) { stringBuffer.append(str); } String ts = stringBuffer.toString(); return ts; } public String getParams(String siteCode) { StringBuilder str = new StringBuilder(); str.append("{"); str.append("\"siteCode\":\"" + siteCode + "\""); str.append("}"); return str.toString(); } @Test public void test0(){ } @Test public void test() throws Exception { HttpClientUtil hcu = HttpClientUtil.getInstance(); String url2 = "http://fo.ycgwl.com/rosefinch-web/ppapi/rest/queryFreightCount.api"; List<DiscountOrPriceEntity> list = getList(); StringBuilder sb = new StringBuilder(); for (DiscountOrPriceEntity entity : list) { if (entity.getSendSiteCode() != null) { entity.setFromTime(new Date()); String params = JSON.toJSONString(entity); String result2 = hcu.postHttpClientJson(url2, params); try { DiscountOrPriceReturnEntity discountOrPriceReturnEntity = JSON.parseObject(result2, DiscountOrPriceReturnEntity.class); sb.append(discountOrPriceReturnEntity.getPrice()+"\n"); } catch (Exception ex) { sb.append(result2+"\n"); } } else { sb.append("发件网点或派件网点不存在"+"\n"); } } FileOperation.writeTxtFile(sb.toString(), new File("C:\\Users\\hasee\\Documents\\263EM\\108251@ycgwl.com\\receive_file\\aa.txt")); } @Test public void testOne(){ HttpClientUtil hcu = HttpClientUtil.getInstance(); String url2 = "http://fo.ycgwl.com/rosefinch-web/ppapi/rest/queryFreightCount.api"; DiscountOrPriceEntity entity = new DiscountOrPriceEntity(); entity.setSendSiteCode("TMS008"); entity.setDispatchSiteCode("Z03419"); entity.setCalcWeight(405.0); entity.setFromTime(new Date()); String params = JSON.toJSONString(entity); String result2 = hcu.postHttpClientJson(url2, params); System.out.println(result2); } private List<DiscountOrPriceEntity> getList() throws IOException, BiffException { ReadExcel readExcel = new ReadExcel(excelUrl); final List<String[]> strings = readExcel.readExcel(); List<DiscountOrPriceEntity> discountOrPriceEntities = new ArrayList<>(); int i = 0; for (String[] ary : strings) { if (i == 0) { i++; continue; } i++; /* if (i ==100) { return discountOrPriceEntities; }*/ DiscountOrPriceEntity entity = new DiscountOrPriceEntity(); String sendSite = ary[2]; String destination = ary[4]; Double weight = Double.parseDouble(ary[9]); if (StringUtils.isNotEmpty(sendSite)) { BaseSiteEntity baseSiteEntityNameFromCache = this.baseRedisCacheService.getBaseSiteEntityNameFromCache(sendSite); if (baseSiteEntityNameFromCache == null) { entity.setSendSiteCode(null); } else { entity.setSendSiteCode(baseSiteEntityNameFromCache.getSiteCode()); } } else { entity.setSendSiteCode(null); } if (StringUtils.isNotEmpty(destination)) { BaseSiteEntity baseSiteEntityNameFromCache1 = this.baseRedisCacheService.getBaseSiteEntityNameFromCache(destination); if (baseSiteEntityNameFromCache1 == null) { entity.setSendSiteCode(null); } else { entity.setDispatchSiteCode(baseSiteEntityNameFromCache1.getSiteCode()); } } else { entity.setSendSiteCode(null); } entity.setCalcWeight(weight); discountOrPriceEntities.add(entity); System.out.println("拼装完成"+i+"个"); } return discountOrPriceEntities; } }