实际开发中,总会有一些让人想象不到的需求。最近一个月都在开发这样一个需求,用户只需要excel指定单元格的数据,其他数据不做保留。至于用户用什么样的情况下才用这些数据,不是很明白(组长说你先开发出来再说,最后需要结合到别人开发的功能中去)。就这样,我就和阿瑾着手开发开发。
主要思路:
设置XML模版(指定单元格)
读取XML设置的单元格信息
POI解析指定单元格数据
将数据存入数据库
选择指定模版,然后点击上传,数据直接存入数据库中
一、XML模版
要求:
1、可以灵活的读取指定的sheet页
2、可以随意设置想要获取的单元格信息
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<Excel>
<sheet>
<column sheet="0">
<name>column1</name>
<value>14,6</value>
</column>
<column sheet="0">
<name>column2</name>
<value>15,7</value>
</column>
</sheet>
<sheet>
<column sheet="1">
<name>column3</name>
<value>28,6</value>
</column>
<column sheet="1">
<name>column4</name>
<value>34,11</value>
</column>
</sheet>
<sheet>
<column sheet="2">
<name>column5</name>
<value>8,3</value>
</column>
<column sheet="2">
<name>column6</name>
<value>12,5</value>
</column>
</sheet>
<sheet>
<column sheet="3">
<name>column7</name>
<value>8,7</value>
</column>
<column sheet="3">
<name>column8</name>
<value>11,8</value>
</column>
</sheet>
</Excel></span>
二、Service
注:将单元格数据保存在库中
<span style="font-size:18px;">public class ExcelUploadDaoImpl extends HibernateDaoSupport implements ExcelUploadDao {
@Override
public int saveExcel(String content,String tableName) {
String column="";
//根据conten中有多少类生成相应的列数
String[] columnNames=content.split(",");
for(int i=1;i<=columnNames.length;i++){
if(i==columnNames.length){
column+="column"+i;
}else{
column+="column"+i+",";
}
}
String sqlString="insert into "+tableName+"("+column+")values("+content+");";
int i= getSession().createSQLQuery(sqlString).executeUpdate();
System.out.println(i);
return i;
}
}</span>
三、action