通用的POI匯入Excel解決方案
(2)<repeatImport/>表示需要迴圈匯入的資料,欄位field與單元格cellRef的對映關係寫在CDATA區中。<endCode/>表示迴圈終止的字元。
下面說一下,根據這個XML描述檔案,我們需要從Excel中解析出什麼樣的資料格式來:
/** * 讀取匯入的Excel的內容 * 模板要求: * (1)開始重複行與End行 有且只能有 一空行 */ public class ExcelImportUtil { /** * 讀取匯入的Excel的檔案內容 * @param xmlFile描述被匯入的Excel的格式的XML檔案 * @param importExcelStream * @returnExcel中需要匯入的資料 */ 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 */ private String fieldName; /** * 欄位值,如:張三 */ private String fieldValue; // setter/getter } |