相關連結
最佳Excel匯入實踐(一)
最佳Excel匯入實踐(二)
最佳Excel匯入實踐(三)
最佳Excel匯入實踐(四)
最佳Excel匯入實踐(五)
為了讓系統能夠識別待引入的Excel,使用者提供的Excel必須滿足一定格式上的要求。通常我們的做法是提供Excel模板讓使用者下載,然後使用者往其中填入資料再提交給系統執行匯入操作。本篇將主要介紹匯入模板的產生。
上篇講到的匯入規則是此方案的核心,匯入模板也將根據此規則動態產生。正如Excel匯入最佳實務(一)中已經提到的,本方案中的Excel模板也將通過NPOI 產生。有關NPOI的協助資訊請見:http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html。裡面記錄了所有產生此模板Excel所需要的知識。
其實模板的產生主要就是寫Excel表頭,可用如下遍曆方式實現:
HSSFSheet sht=wb.CreateSheet("銷售訂單");
HSSFRow row=sht.CreateRow(0);
Column col;
for(int i=0;i<regulation.Columns.Count;i++){
col=regulation.Columns[i];
row.CreateCell(i).SetCellValue(col.ColumnName);
}
當然,上面只實現了模板的最基本的功能--完成了Excel表實的定義。若想讓模板更人性化、可用性更好,還可以加入資料有效性驗證、表頭和表體用顏色區分、需要描述的地方加上批註等。這些附加操作都可以在上面的NPOI的協助找到,這裡就不再重述。最終產生的模板Excel大致如下:
其中的下拉項是根據規則類中Column對象的RefField,RefTable,RefConvertField和RefFilter屬性執行類似如下SQL語句得來:
SELECT RefConvertField FROM RefTable WHERE RefFilter
這樣使用者體驗明顯好了很多,而且下拉項是隨系統中的資料而變化的,做到了模板的動態化,用Excel匯入最佳實務(一)介紹的其它方法是很難實現的。再次為NPOI做一下廣告:目前.net環境下最好的讀寫Excel組件!