2014年4月6日周日 晴 -- 补充Excel读取日志
来源:互联网 发布:win10mobile软件 编辑:程序博客网 时间:2024/05/16 05:20
某公司CMS也有Excel的读取,只是……。我希望将Excel文件读取的代码补充一下纯属娱乐。代码如下:
package test;
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 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;
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包就可以了,呵~呵~
/**
* @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包就可以了,呵~呵~
0 0
- 2014年4月6日周日 晴 -- 补充Excel读取日志
- 2014年4月1日周二 晴--关于4G的某任务,Excel读取
- 2012年4月1日 周日(相当周二)
- 12月24日 周日
- 太平洋三期(2005年9月4日,周日)
- 2013年12月1日周日工作
- 周日也会忙的(2005年8月28日,周日)
- 工作日志4月6日
- 9月3日周日训练笔记
- 9月10日周日训练笔记
- 10月15日周日训练笔记
- 10月22日周日训练笔记
- 10月29日周日训练笔记
- 11月12日周日训练笔记
- 12月10日 数据结构 周日
- 12月17日 数据结构 周日
- 【开发日志】2014年10月9日
- 疾驶的火车带走我病痛的躯体(2005年9月11日,周日)
- 用TextFiled输入下载地址进行下载
- 黑马程序员--java基础语法
- 关于typename和class的使用
- 黑马程序员---单态设计模式
- STM32学习笔记——TFT2.4彩屏显示字符和汉字
- 2014年4月6日周日 晴 -- 补充Excel读取日志
- MySQL的锁表问题
- sublime运行Python报"SyntaxError: Non-ASCII character '/xe6' "错误解决方法
- poj1014 Dividing (多重背包)
- Linux下编译安装PCRE库
- 转载:xilinx7系列GTX的复位设计
- 今天开通博客了
- 我爱你的方式有错吗?有时候感觉自己好无力
- Hadoop基础学习(一)分析、编写并运行WordCount词频统计程序