所以我们字段field与单元格cellRef映射信息可以是这样子的:
<?xml version="1.0" encoding="UTF-8"?>
<excelImport>
<onceImport>
<![CDATA[
C3 = ORDER_NBR, H3 = CUST_NAME,
N3 = CUST_LINK_INFO, C4 = CUST_ID,
H4 = CUST_ADDR, N4 = ONCE_TYPE,
C5 = CONTACT_ID, H5 = CUST_FILE,
N5 = LOOP_TYPE, C6 = PRO_NAME,
H6 = OPPO_ORDER_NBR, N6 = COOPERATE_MODE,
C11 = AUD_MANGER, N11 = BM,
C12 = ORDER_COMMENT
]]>
</onceImport>
<repeatImport>
<![CDATA[
A9 = STRNUM, B9 = FRI_AREA,
C9 = OPP_A, D9 = SEC_AREA,
E9 = OPP_B, F9 = NUM,
G9 = SERV_NBR, H9 = SPEED,
I9 = FRI_ADDR, J9 = PORT_TYPE_A,
K9 = FRI_LINK_A, L9 = SEC_ADDR,
M9 = PORT_TYPE_B, N9 = FRI_LINK_B,
O9 = APPLY_INFO, P9 = ORDER_DATE,
Q9 = HIRE_TIME, R9 = DISCOUNT_MID,
S9 = BILL_DATE, T9 = OLD_BILL_DATE,
U9 = LINE_COMMENT
]]>
<endCode>End</endCode>
</repeatImport>
</excelImport>
(1) <onceImport/> 表示只需要一次导入的数据,字段field与单元格cellRef的映射关系写在CDATA区中。
(2) <repeatImport/>表示需要循环导入的数据,字段field与单元格cellRef的映射关系写在CDATA区中。<endCode/>表示循环终止的字符。
下面说一下,根据这个XML描述文件,我们需要从Excel中解析出什么样的数据格式来:
/**
* 读取导入的Excel的内容
* 模板要求:
* (1)开始重复行与End行 有且只能有 一空行
*/
public class ExcelImportUtil
{
/**
* 读取导入的Excel的文件内容
* @param xmlFile 描述被导入的Excel的格式的XML文件
* @param importExcelStream 被导入的XML文件
* @return Excel中需要导入的数据
*/
public static ExcelData readExcel(String xmlFile, InputStream importExcelStream) throws ExcelImportException
{}
}
/**
* Excel导入的信息
*/
import java.util.List;
import java.util.Map;
public class ExcelData
{
// 一次导入的数据,key就是field,一个ImportCellDesc描述了一个单元格(field,value,单元格名称)
private Map<String, ImportCellDesc> onceData;
// 重复导入的数据
private List<Map<String, ImportCellDesc>> repeatData;
// setter/getter
}
/**
* 单元格的描述信息
* (1)数据格式校验时,可以精确定位到某个单元格。
*/
public class ImportCellDesc
{
/**
* 引用的单元格;如:A3
*/
private String cellRef;
/**
* 单元格的对应数据库的字段名称;
* 如:fieldName = "username"
*/
private String fieldName;
/**
* 字段值,如:张三
*/
private String fieldValue;
// setter/getter
}
调用代码:
ExcelData excelData = ExcelImportUtil.readExcel(xmlFile, importExcelStream);
然后在这个基础上,我们可以对数据进行一些操作,如:数据校验,插入数据。。。
其中数据校验时,如果数据不合法,给用户的提示信息可以精确指定某个单元格的数据不合法。(如:提示信息为:A3单元格数据不合法!)
注:使用了如下第三方JAR包:
Jdom :解析XML描述文件
POI3.0 : 读取Excel文件
我把代码放到google code上了,可以在
这里下载
本文摘自:http://www.cnblogs.com/java-koma/articles/1723379.html