Ⅰ java怎么获取远程带参数的excel文件
有个开源的东东-jxl.jar,可以到下载。一.读取Excel文件内容 /**读取Excel文件的内容 * @param file 待读取的文件 * @return */ public static String readExcel(File file){ StringBuffer sb = new StringBuffer(); Workbook wb = null; try { //构造Workbook(工作薄)对象 wb=Workbook.getWorkbook(file); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if(wb==null) return null; //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了 Sheet[] sheet = wb.getSheets(); if(sheet!=null&&sheet.length>0){ //对每个工作表进行循环 for(int i=0;i<sheet.length;i++){ //得到当前工作表的行数 int rowNum = sheet[i].getRows(); for(int j=0;j<rowNum;j++){ //得到当前行的所有单元格 Cell[] cells = sheet[i].getRow(j); if(cells!=null&&cells.length>0){ //对每个单元格进行循环 for(int k=0;k<cells.length;k++){ //读取当前单元格的值 String cellValue = cells[k].getContents(); sb.append(cellValue+" "); } } sb.append(" "); } sb.append(" "); } } //最后关闭资源,释放内存 wb.close(); return sb.toString(); }二.写入Excel文件这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api,同时还推荐一篇不错的文章: /**生成一个Excel文件 * @param fileName 要生成的Excel文件名 */ public static void writeExcel(String fileName){ WritableWorkbook wwb = null; try { //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(new File(fileName)); } catch (IOException e) { e.printStackTrace(); } if(wwb!=null){ //创建一个可写入的工作表 //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置 WritableSheet ws = wwb.createSheet("sheet1", 0); //下面开始添加单元格 for(int i=0;i<10;i++){ for(int j=0;j<5;j++){ //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行 Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列"); try { //将生成的单元格添加到工作表中 ws.addCell(labelC); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } try { //从内存中写入文件中 wwb.write(); //关闭资源,释放内存 wwb.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } 三.在一个Excel文件中查找是否包含某一个关键字 /**搜索某一个文件中是否包含某个关键字 * @param file 待搜索的文件 * @param keyword 要搜索的关键字 * @return */ public static boolean searchKeyWord(File file,String keyWord){ boolean res = false; Workbook wb = null; try { //构造Workbook(工作薄)对象 wb=Workbook.getWorkbook(file); } catch (BiffException e) { return res; } catch (IOException e) { return res; } if(wb==null) return res; //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了 Sheet[] sheet = wb.getSheets(); boolean breakSheet = false; if(sheet!=null&&sheet.length>0){ //对每个工作表进行循环 for(int i=0;i<sheet.length;i++){ if(breakSheet) break; //得到当前工作表的行数 int rowNum = sheet[i].getRows(); boolean breakRow = false; for(int j=0;j<rowNum;j++){ if(breakRow) break; //得到当前行的所有单元格 Cell[] cells = sheet[i].getRow(j); if(cells!=null&&cells.length>0){ boolean breakCell = false; //对每个单元格进行循环 for(int k=0;k<cells.length;k++){ if(breakCell) break; //读取当前单元格的值 String cellValue = cells[k].getContents(); if(cellValue==null) continue; if(cellValue.contains(keyWord)){ res = true; breakCell = true; breakRow = true; breakSheet = true; } } } } } } //最后关闭资源,释放内存 wb.close(); return res; } 四.往Excel中插入图片图标插入图片的实现很容易,参看以下代码: /**往Excel中插入图片 * @param dataSheet 待插入的工作表 * @param col 图片从该列开始 * @param row 图片从该行开始 * @param width 图片所占的列数 * @param height 图片所占的行数 * @param imgFile 要插入的图片文件 */ public static void insertImg(WritableSheet dataSheet, int col, int row, int width, int height, File imgFile){ WritableImage img = new WritableImage(col, row, width, height, imgFile); dataSheet.addImage(img); } 以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证: try { //创建一个工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入的工作表 WritableSheet imgSheet = workbook.createSheet("Images",0); //要插入的图片文件 File imgFile = new File("D:/1.png"); //图片插入到第二行第一个单元格,长宽各占六个单元格 insertImg(imgSheet,0,1,6,6,imgFile); workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); }但是jxl只支持png格式的图片,jpg格式和gif格式都不支持五.插入页眉页脚一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚 /**向Excel中加入页眉页脚 * @param dataSheet 待加入页眉的工作表 * @param left * @param center * @param right */ public static void setHeader(WritableSheet dataSheet,String left,String center,String right){ HeaderFooter hf = new HeaderFooter(); hf.getLeft().append(left); hf.getCentre().append(center); hf.getRight().append(right); //加入页眉 dataSheet.getSettings().setHeader(hf); //加入页脚 //dataSheet.getSettings().setFooter(hf); }我们可以用如下代码测试该方法: try { //创建一个工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入的工作表 WritableSheet dataSheet = workbook.createSheet("加入页眉",0); ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1页,共3页"); workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); }六偷懒工具设计之sql2Excel今天在公司陪山东客户调试,远程登录,我在linux下什么工具都没有,用ssh登录服务器,直接用mysql查询数据库,提出记录中的所有汉字全是乱码。哎,可恶的公司,不让我用windows,要不我就可以用putty或者EMS了,我ft! 甚是不爽之下,我决定自己写个工具了,把客户数据库中的数据全部提取并保存到Excel中,这样我不就可以一目了然了嘛,嘿嘿,好吧,那我就写一个工具吧。第一部分就是谁都会的jdbc操作,连接数据库,提取数据集合。 Connection con; Statement state; /**初始化连接 * @param serverIp * @param dataBase * @param userName * @param password * @throws ClassNotFoundException * @throws SQLException */ public void init(String serverIp,String dataBase,String userName,String password) throws ClassNotFoundException, SQLException{ Class.forName("com.mysql.jdbc.Driver"); //配置数据源 String url="jdbc:mysql://"+serverIp+"/"+dataBase+"?useUnicode=true&characterEncoding=GB2312"; con=DriverManager.getConnection(url,userName,password); } /**得到查询结果集 * @param sql * @return * @throws SQLException */ public ResultSet getResultSet(String sql) throws SQLException{ state = con.createStatement(); ResultSet res = state.executeQuery(sql); return res; } /**关闭连接 * @throws SQLException */ public void close() throws SQLException{ if(con!=null) con.close(); if(state!=null) state.close(); }第二部分就是把ResultSet中的记录写入一个Excel文件操作Excel,我用的是jxl,不熟的同学可以参考:利用java操作Excel文件 /**将查询结果写入Excel文件中 * @param rs * @param file * @throws SQLException */ public void writeExcel(ResultSet rs,File file) throws SQLException{ WritableWorkbook wwb = null; try{ //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(file); } catch (IOException e){ e.printStackTrace(); } if(wwb!=null){ WritableSheet ws = wwb.createSheet("sheet1", 0); int i=0; while(rs.next()){ Label label1 = new Label(0, i, rs.getString("id")); Label label2 = new Label(1, i, rs.getString("category")); try { ws.addCell(label1); ws.addCell(label2); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } i++; } try { //从内存中写入文件中 wwb.write(); //关闭资源,释放内存 wwb.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e){ e.printStackTrace(); } } }测试程序: Sql2Excel se = new Sql2Excel(); try { se.init("127.0.0.1","mydabase", "root", "1234"); ResultSet rs = se.getResultSet("select id,category from xx "); se.writeExcel(rs, new File("/root/sql2excel.xls")); se.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }
Ⅱ JAVA中如何通过IP和端口连接到远程计算机并读取文件
如此类似也 x0dx0aimport java.net.*; x0dx0aimport java.io.*; x0dx0a x0dx0apublic class FtpConn x0dx0a{ x0dx0a public static void main(String [] args)throws Exception x0dx0a { x0dx0a URL u=new URL(“ftp://ppmm:[email protected]/read1.txt”); x0dx0a URLConnection urlconn=u.openConnection(); x0dx0a BufferedReader br=new BufferedReader(new InputStreamReader(urlconn.getInputStream())); x0dx0a String line; x0dx0a while(null!=(line=br.readLine())) x0dx0a { x0dx0a System.out.println(line); x0dx0a } x0dx0a } x0dx0a} x0dx0aftp://ppmm:[email protected]/read1.txt x0dx0a其中localhost是ftp server地址 x0dx0appmm是用户名 x0dx0a1111是密码 x0dx0a 匿名用户不用写用户名和密码如 x0dx0aftp://localhost/read1.txt x0dx0a就可以了
Ⅲ java 如何读写远程mp3文件
//:URLReader.java ==================import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileOutputStream;import java.net.URL;public class URLReader { public static void readAndSave(String url,String fileFullName)throws Exception{ System.out.println("Starting."); URL u = new URL(url); byte[] buffer = new byte[1024*8]; int read; int ava = 0; long start = System.currentTimeMillis(); BufferedInputStream bin = new BufferedInputStream(u.openStream()); BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(fileFullName)); while((read=bin.read(buffer))>-1){ bout.write(buffer,0,read); ava+=read; long speed = ava/(System.currentTimeMillis()-start); System.out.println("Download: "+ava+" byte(s)"+" avg speed: "+speed+" (kb/s)"); } bout.flush(); bout.close(); System.out.println("Done. size:"+ava+" byte(s)"); } public static void main(String[] args) throws Exception { URLReader.readAndSave( "http://51hr.28tel.com.tw/UploadFile/Record/20090531114140.mp3", "d:/双人舞.mp3"); }}======================================================输出显示:Starting.Download: 8192 byte(s) avg speed: 6 (kb/s)Download: 8385 byte(s) avg speed: 6 (kb/s)Download: 16577 byte(s) avg speed: 11 (kb/s)Download: 17025 byte(s) avg speed: 11 (kb/s)Download: 25217 byte(s) avg speed: 15 (kb/s)Download: 25665 byte(s) avg speed: 16 (kb/s)Download: 33857 byte(s) avg speed: 19 (kb/s)Download: 34305 byte(s) avg speed: 19 (kb/s)
Ⅳ JAVA 读取远程文件
1、远程读取数据的原则,是存在url可以指向该文件。2、很显然,你的局域网上,肯定是不行的。3、方法:通过ftp或是发布到网上的方式,提供一个可访问到的网络地址就可以了。
Ⅳ java远程读写文件详解
实现上传下载实际上就是io的转换。举例:import hkrt.b2b.view.util.Log;import hkrt.b2b.view.util.ViewUtil;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;public class CCFCCBFTP {/*** 上传文件** @param fileName* @param plainFilePath 明文文件路径路径* @param filepath* @return * @throws Exception*/public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {FileInputStream fis = null;ByteArrayOutputStream bos = null;FTPClient ftpClient = new FTPClient();String bl = "false";try {fis = new FileInputStream(plainFilePath);bos = new ByteArrayOutputStream(fis.available());byte[] buffer = new byte[1024];int count = 0;while ((count = fis.read(buffer)) != -1) {bos.write(buffer, 0, count);}bos.flush();Log.info("加密上传文件开始");Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);FTPFile[] fs;fs = ftpClient.listFiles();for (FTPFile ff : fs) {if (ff.getName().equals(filepath)) {bl="true";ftpClient.changeWorkingDirectory("/"+filepath+"");}}Log.info("检查文件路径是否存在:/"+filepath);if("false".equals(bl)){ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);return bl;}ftpClient.setBufferSize(1024);ftpClient.setControlEncoding("GBK");// 设置文件类型(二进制)ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.storeFile(fileName, fis);Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");return bl;} catch (Exception e) {throw e;} finally {if (fis != null) {try {fis.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}if (bos != null) {try {bos.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}}}/***下载文件** @param localFilePath* @param fileName* @param routeFilepath* @return * @throws Exception*/public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {FileInputStream fis = null;ByteArrayOutputStream bos = null;FileOutputStream fos = null;FTPClient ftpClient = new FTPClient();String SFP = System.getProperty("file.separator");String bl = "false";try {Log.info("下载并解密文件开始");Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);FTPFile[] fs; ftpClient.makeDirectory(routeFilepath);ftpClient.changeWorkingDirectory(routeFilepath);bl = "false";fs = ftpClient.listFiles();for (FTPFile ff : fs) {if (ff.getName().equals(fileName)) {bl = "true";Log.info("下载文件开始。");ftpClient.setBufferSize(1024);// 设置文件类型(二进制)ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);InputStream is = ftpClient.retrieveFileStream(fileName);bos = new ByteArrayOutputStream(is.available());byte[] buffer = new byte[1024];int count = 0;while ((count = is.read(buffer)) != -1) {bos.write(buffer, 0, count);}bos.flush();fos = new FileOutputStream(localFilePath+SFP+fileName);fos.write(bos.toByteArray());Log.info("下载文件结束:"+localFilePath);}}Log.info("检查文件是否存:"+fileName+" "+bl);if("false".equals(bl)){ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。");return bl;}return bl;} catch (Exception e) {throw e;} finally {if (fis != null) {try {fis.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}if (bos != null) {try {bos.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}if (fos != null) {try {fos.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}}}}备注:以上方法就实现了流的二进制上传下载转换,只需要将服务器连接部分调整为本地的实际ftp服务用户名和密码即可。
Ⅵ Java怎么读取远程服务器上的共享文件夹
ava获取远程文件的方式在我的开发过程中使用过两种1。通过http请求进行静态资源,首先确定文件的URL地址,然后通过URLConnection进行连接,然后通过读取连接中返回的InputStream,再通过文件输出流FileOutputStream进行存储(下载)。2.通过FTP或SFTP进行远程文件的下载,具体实现有很多第三方的包,网络即可。
Ⅶ java开发中如何获取远程文件的大小
/*只说思路:从依据目标地址,建立资源定位器URL从资源定位器中,获取连接器对象HttpURLConnection或者Connection进行连接(省略掉了请求头..就不在写了…)获取状态码,确保链接正常,进行判断,如果正确,证明链接可行就向下继续获取链接后的文件大小,字节单位:方法有两个,区别一个是int类型,一个是long类型long是1.7后加入的!intconLeng=连接器.getContentLength();longconleng=连接器.getContentLengthLong();*/
Ⅷ java中如何使用BufferedReader类以行为单位读取ftp远程服务器上的文件
BufferedReader.ReadLine()。就可以行读取了。如果不调用那么肯定不会一行一行读取的。。..
Ⅸ java 怎么通过url获取远程服务器上某个文件夹下的所有文件名
/*** 读取某个文件夹下的所有文件*/public static boolean readfile(String filepath) throws FileNotFoundException, IOException {try {File file = new File(filepath);if (!file.isDirectory()) {System.out.println("文件");System.out.println("path=" + file.getPath());System.out.println("absolutepath=" + file.getAbsolutePath());System.out.println("name=" + file.getName());} else if (file.isDirectory()) {System.out.println("文件夹");String[] filelist = file.list();for (int i = 0; i < filelist.length; i++) {File readfile = new File(filepath + "\\" + filelist[i]);if (!readfile.isDirectory()) {System.out.println("path=" + readfile.getPath());System.out.println("absolutepath="+ readfile.getAbsolutePath());System.out.println("name=" + readfile.getName());} else if (readfile.isDirectory()) {readfile(filepath + "\\" + filelist[i]);}}}} catch (FileNotFoundException e) {System.out.println("readfile() Exception:" + e.getMessage());}return true;}
Ⅹ java怎么使用流读取远程的文件并下载到本地
使用TCP|UDP进行网络传输 。或则使用使用FIle对象给定一个远程的路径都可以