使用jxls将excel文件读入javabean
我正在尝试使用jXLS库读取excel文件,我想使用hashmaps使其动态化,但我被困在那里了。以下是相关的课程 请帮助使用hashmaps而不是ArrayList JXLSParser使用jxls将excel文件读入javabean,java,jxls,Java,Jxls,我正在尝试使用jXLS库读取excel文件,我想使用hashmaps使其动态化,但我被困在那里了。以下是相关的课程 请帮助使用hashmaps而不是ArrayList JXLSParser package com.metricstream.service.xlsparser; 导入java.io.InputStream; 导入java.util.ArrayList; 导入java.util.HashMap; 导入java.util.List; 导入java.util.Map; 导入net.sf.
package com.metricstream.service.xlsparser;
导入java.io.InputStream;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入net.sf.jxls.reader.ReaderBuilder;
导入net.sf.jxls.reader.XLSReadStatus;
导入net.sf.jxls.reader.XLSReader;
导入org.apache.poi.openxml4j.exceptions.InvalidFormatException;
导入org.xml.sax.SAXException;
公共类JXLSParser{
私有静态最终字符串CHAR\u S=“S”;
公共列表解析(InputStream xmlStream、InputStream xlsStream、,
类tClass)抛出AppException{
List tList=new ArrayList();
XLSReader mainReader=null;
试一试{
mainReader=ReaderBuilder.buildFromXML(xmlStream);
}捕获(IOException IOException){
抛出新的AppException(ioException);
}捕获(SAXException SAXException){
抛出新的AppException(saxException);
}
Map bean=新的HashMap();
put(tClass.getSimpleName().toLowerCase().concat(CHAR_S),tList);
XLSReadStatus readStatus=null;
试一试{
readStatus=mainReader.read(xlsStream,bean);
}捕获(InvalidFormatException InvalidFormatException){
抛出新的AppException(invalidFormatException);
}捕获(IOException IOException){
抛出新的AppException(ioException);
}
if(readStatus.isStatusOK()){
System.out.println(“读取状态:ok”);
}否则{
抛出新的AppException(“xls无法正确读取”);
}
返回列表;
}
}
主要
package com.metricstream.service.xlsparser;
导入java.io.BufferedInputStream;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.InputStream;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入org.apache.poi.ss.formula.functions.T;
导入com.metricstream.exercise.employee.employee;
公开课练习{
公共静态void main(字符串args[])引发AppException{
String xmlConfig=“F:\\workspace/XLSReader/XLSReader/XLSReader/employee.xml”;
String dataXLS=“F:\\workspace/XLSReader/XLSReader/XLSReader/employee.xlsx”;
JXLSParser employeeParser=新的JXLSParser();
InputStream inputXML;
试一试{
inputXML=new BufferedInputStream(new FileInputStream(xmlConfig));
InputStream inputXLS=新的BufferedInputStream(新文件InputStream(
dataXLS);
List employee=employeeParser.parseXLS(inputXML,
输入xls,Employee.class);
//Map Map=newhashmap(employee.size());
/*对于(员工emp:员工)
{
put(emp.getKey(),emp.getValue());
系统输出打印项次(emp);
}*/
系统输出打印项次(员工);
}catch(filenotfounde异常){
抛出新的AppException(e);
}
}
}
Excel文件内容
简单的名字
simple.lastName
简单的年龄
simple.des
简单的薪水
尝试将“varType”属性设置为“java.util.HashMap”,并将“mapping”元素的“type”属性设置为“java.util.String”或其他属性。例如:
<?xml version="1.0" encoding="utf-8"?>
<workbook>
<worksheet name="Sheet1">
<section startRow="0" endRow="0">
</section>
<loop startRow="1" endRow="1" items="rows" var="row" varType="java.util.HashMap">
<section startRow="1" endRow="1">
<mapping row="1" col="0" type="java.lang.String">row.id</mapping>
<mapping row="1" col="1" type="java.lang.String">row.name</mapping>
<mapping row="1" col="2" type="java.lang.String">row.code</mapping>
</section>
<loopbreakcondition>
<rowcheck offset="0">
<cellcheck offset="0">Summary</cellcheck>
</rowcheck>
</loopbreakcondition>
</loop>
</worksheet>
</workbook>
row.id
row.name
行代码
总结
这是我的工作。Jxls阅读器版本为2.4.0请提供答案的上下文和解释,谢谢。
package com.metricstream.service.xlsparser;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.formula.functions.T;
import com.metricstream.exercise.employee.Employee;
public class Exercise {
public static void main(String args[]) throws AppException {
String xmlConfig = "F:\\workspace/XLSReader/XLSReader/XLSReader/employee.xml";
String dataXLS = "F:\\workspace/XLSReader/XLSReader/XLSReader/employee.xlsx";
JXLSParser employeeParser = new JXLSParser();
InputStream inputXML;
try {
inputXML = new BufferedInputStream(new FileInputStream(xmlConfig));
InputStream inputXLS = new BufferedInputStream(new FileInputStream(
dataXLS));
List<Employee> employee = employeeParser.parseXLS(inputXML,
inputXLS, Employee.class);
// Map<String,Object> map = new HashMap<String,Object>(employee.size());
/* for( Employee emp: employee)
{
map.put(emp.getKey(),emp.getValue());
System.out.println(emp);
}*/
System.out.println(employee);
} catch (FileNotFoundException e) {
throw new AppException(e);
}
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<workbook>
<worksheet name="Sheet1">
<loop startRow="1" endRow="1" items="simples" var="simple"
varType="java.util.HashMap">
<section startRow="1" endRow="1">
<mapping row="2" col="0">simple.firstName</mapping>
<mapping row="2" col="1">simple.lastName</mapping>
<mapping row="2" col="2">simple.age</mapping>
<mapping row="2" col="3">simple.des</mapping>
<mapping row="2" col="4">simple.salary</mapping>
</section>
<loopbreakcondition>
<rowcheck offset="0">
<cellcheck offset="0" />
</rowcheck>
</loopbreakcondition>
</loop>
</worksheet>
</workbook>
<?xml version="1.0" encoding="utf-8"?>
<workbook>
<worksheet name="Sheet1">
<section startRow="0" endRow="0">
</section>
<loop startRow="1" endRow="1" items="rows" var="row" varType="java.util.HashMap">
<section startRow="1" endRow="1">
<mapping row="1" col="0" type="java.lang.String">row.id</mapping>
<mapping row="1" col="1" type="java.lang.String">row.name</mapping>
<mapping row="1" col="2" type="java.lang.String">row.code</mapping>
</section>
<loopbreakcondition>
<rowcheck offset="0">
<cellcheck offset="0">Summary</cellcheck>
</rowcheck>
</loopbreakcondition>
</loop>
</worksheet>
</workbook>