2014年4月6日周日 晴 -- 补充Excel读取日志

 某公司CMS也有Excel的读取,只是……。我希望将Excel文件读取的代码补充一下纯属娱乐。代码如下:
package test;
import java.util.List;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class ReadExcel {
 /**  
  * @param excelFileName Excel文件名
  * @param cls 实体名--与数据库字段一致
  * @return
  * */
 @SuppressWarnings("unchecked")
 public List<Map<String, String>> read(String excelFileName, Class cls) throws BiffException, IOException{
  Workbook workbook = Workbook.getWorkbook(new File(excelFileName));
  Sheet sheet[] = workbook.getSheets();
  String className = cls.getSimpleName();//获取Class名,没有的报名的。cls.getName(),包含路径
  //System.out.println(className);
  List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  Field[] properties = cls.getDeclaredFields();//获取所有属性名--含有包名的哟
  int fieldNum = properties.length;//属性总数
  String propertiesName[] = new String[fieldNum];
  for(int i = 0; i < fieldNum; i++){
   propertiesName[i] = properties[i].getName();//获取属性名
  }
  String lab = null;
  Map map = null;
  for(int a=0;a<sheet.length;a++){
   for(int i=1;i<sheet[a].getRows();i++){
    for(int j=0;j<sheet[a].getColumns();j++){
     lab = sheet[a].getCell(j,i).getContents();
     map = new HashMap();
     map.put(propertiesName[j], lab);
     //System.out.print(lab+" ");
    }
    //System.out.println();
    list.add(map);
   }
  }
  return list;
 }
 public static void main(String[] args){
  Book book = new Book();
  Class cls = book.getClass();//获取Class名称
  ReadExcel readExcel = new ReadExcel();
  String excelFileName = "F:/asia/excelorder/panjin.xls";
  try {
   readExcel.read(excelFileName, cls);
  } catch (BiffException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

遇到的问题:
java.lang.UnsupportedClassVersionError: Bad version number in .class file
 这个代码以前运行过没问题,不知道为什么突然报这么奇葩的错误。百度一下吧,现将大家遇到的这种错误的原因就解决方案总结如下:
1.JDK的编译版本跟运行版本不一致。
 解决方法当然就改成一致呗。
MyEclipse修改步骤如下:
1.Window --> Preferences -->Java --> compiler中的compiler compliance level对应的下拉菜单中选择JDK版本.
图片
2.Window --> Preferences -->MyEclipse --> Servers -->Tomcat --> Tomcat n.x -->JDK中的Tomcat JDK name下的下拉菜单中选择自身电脑上安装的JDK版本(必需与步骤1中的JDK版本一致).
图片
如果还是没有解决,不用焦急,因为有些MyEclipse版本自带有JDK版本,所以也要将它改过来.
3.Window --> Preferences -->Java -->Installed JRES,然后在右边选择与步骤1和2版本一致的JDK版本,如果没有,可以自身添加.然后选中就可以了 
图片
注意:MyEclipse 6.5的JRE是5.0的,即使设置了Compiler compliance level为6.0,其实依然是再5.0的JRE下进行编译的。  打开Installed JREs,重新Add一个JRE,指定一个JRE路径,使用自己安装的JDK 6.0,也就是JRE 6的环境进行编译,这时再运行测试用例,就能正常编译执行了。
另外:这种错误也有可能是jar包引起的。检查一下是不是有重复的jar文件
我出现这种错误的原因真的很奇葩,“与众不同”啊!  本人表示很无奈,竟然是下载的jar出错了,更换一个好用的jar包就可以了,呵~呵~


猜你喜欢

转载自blog.csdn.net/aa1bb1cc2/article/details/34180831