Java对xls文件进行读写操作示例代码

  

  

本文主要给大家介绍的是关于Java对xls文件进行读写操作的相关内容,分享出来供大家参考学习、下面话不多说了,来一起看看详细的介绍:

  
      <李> win7_x64李   <李>想法李   
  

  

读写xls文件,这里是在知道表格格式的前提下进行操作的。
  

  

目前无法操作xlsx文件

  

  

将库jxl.jar添加到工程依赖中

  

  

<强>示例:从几个文件中读取数据并汇总到一个文件中

  

表格中的数据规定为:首行为标题,以下是数据和名称,例如

        单位名金额   948.34单位1   单位4324   单位324      

准备好表格文件,放在指定目录下

  

示例过程大致为:在指定目录找到所有xls文件,遍历所有文件,读取出所有的单位名称,将单位名称排序,再遍历一次所有文件,将每个文件中单位对应的金额读出并存储;最后写到输出表格中。

        最终字符串wsFileDir=癏:/OtherWorkDocs/ws”;//原始数据存放的目录   最终字符串resFilePath=" H:/OtherWorkDocs/输出/jan_feb_mar_sum.xls”;   RWExcel RWExcel=new RWExcel ();//操作xls的实例//获取所有的名称并排序   TreeSetnameSet=rwExcel.getNameSet (wsFileDir);//将名称与下标存入地图中   Integer> HashMap<字符串;nameRowHashMap=rwExcel.getNameRowHashMap (nameSet);   文件wsDir=新文件(wsFileDir);//源文件目录   文件[]源文件=wsDir.listFiles ();//存储单位名称与金额对应的数据   List比;dataList=new ArrayList<比;(10);   如果(源文件!=null) {   (文件科幻:源文件){//装载数据   dataList.add (rwExcel.getSourceData (sF.getAbsolutePath ()));   }   }//原始数据已经全部读出来,和名称一次性全部写入   rwExcel。writeAllToResFile (resFilePath nameRowHashMap dataList);//补充标题栏的标题   如果(零!=源文件){   int坳=1;//起始列的序号   (文件f:源文件){   字符串文件名=f.getName ();   字符串名称=文件名。substring (0, fileName.length ()——4);   rwExcel。updateContent (resFilePath,名字,0,坳);   坳+ +;   }   }      

<强> Java代码

  

新建一个类RWExcel来操作xls文件。

        公开课RWExcel {/* *   *存储名称   */私人TreeSet,nameTreeSet=new TreeSet<的在();/* *   *名称以及排列的下标号   */私人HashMap<字符串,Integer>,nameRowMap=new HashMap<的在();   公共TreeSetgetNameSet(字符串wsPath) {   尝试{   文件wsDir=新文件(wsPath);   如果(wsDir.exists (),,wsDir.isDirectory ()) {   println(“工作目录存在”);   文件[]文件=wsDir.listFiles ();   如果文件!=零,,文件。长度比;0){   (文件用文件){   getNamesFromFile(用this.nameTreeSet);   }   }   }   }捕捉(异常e) {   e.printStackTrace ();   }   this.nameTreeSet.comparator ();   返回this.nameTreeSet;   }/* *   *将名称设置排序后存入HashMap   *下标从1开始   */公共HashMap<字符串,Integer>getNameRowHashMap (TreeSetnameSet) {   nameSet.comparator ();   int指数=1;   (字符串名称:nameSet) {   this.nameRowMap.put(名称、指标);   指数+ +;   }   返回this.nameRowMap;   }/* *   *所有数据存入表格   */公共空间writeAllToResFile (String resFilePath Map<字符串,Integer>nameMap List比;dataList) {   文件resFile=新文件(resFilePath);   如果(! resFile.exists ()) {   尝试{   resFile.createNewFile ();   }捕捉(IOException e) {   e.printStackTrace ();   }   }   如果(resFile.exists ()) {   尝试{//先写名称   WritableWorkbook wwb=Workbook.createWorkbook (resFile);   WritableSheet ws=wwb。createSheet("和",0);   标签标签=新标签(0,0,“单位名称”);   ws.addCell(标签);   (Map.Entry<字符串,Integer>条目:nameMap.entrySet ()) {   标签nameLabel=新标签(0,entry.getValue (), entry.getKey ());   ws.addCell (nameLabel);   for (int j=0;j & lt;dataList.size ();j + +) {   zeroCell数量=新号码(j + 1, entry.getValue (), 0);   ws.addCell (zeroCell);   }   }   for (int上=0;上& lt;dataList.size ();上+ +){   Float> HashMap<字符串;dataMap=dataList.get(上);//遍历这个地图将所有的数据对应填入   (Map.Entry<字符串,Float>dataEntry: dataMap.entrySet ()) {   int行=nameRowMap.get (dataEntry.getKey ());   numberCell数量=新号码(上+ 1,行,dataEntry.getValue ());   ws.addCell (numberCell);   }   }   wwb.write ();   wwb.close ();   }捕捉(异常e) {   e.printStackTrace ();   }   }   }   私人空间getNamesFromFile(文件inputFile TreeSet

Java对xls文件进行读写操作示例代码