Github地址:https://github.com/xuanbg/Utility。 還有其餘一些福利,請各位園友自取。下面表格中的方法帶有泛型參數,博客園的Markdown彷佛不能正確顯示。請移步github看readme。git
構造方法
一、用於導出Excel文件
NpoiHelper(ExcelVer ver = XLS)github
可以使用參數決定生成的文件版本,默認爲97-2004版本(.xls)。數組
二、用於導入Excel文件
NpoiHelper(string file)ui
NpoiHelper(byte[] data)url
NpoiHelper(Stream stream)spa
三個方法分別適用於:本地文件路徑、字節數組及數據流。.net
導出數據的方法
方法 | 功用 |
---|---|
void exportFile(string file) | 導出工做簿到Excel文件 |
void exportFile<T>(string file, List<T> list) | 使用指定的數據集生成Sheet並導出工做簿到Excel文件 |
void exportFile<T>(string file, List<T> list, string sheetName) | 使用指定的數據集生成指定名稱的Sheet並導出工做簿到Excel文件 |
MemoryStream exportStream() | 導出工做簿到數據流 |
MemoryStream exportStream<T>(List<T> list) | 使用指定的數據集生成Sheet並導出工做簿到數據流 |
MemoryStream exportStream<T>(List<T> list, string sheetName) | 使用指定的數據集生成指定名稱的Sheet並導出工做簿到數據流 |
byte[] exportByteArray() | 導出工做簿到字節數組 |
byte[] exportByteArray<T>(List<T> list) | 使用指定的數據集生成Sheet並導出工做簿到字節數組 |
byte[] exportByteArray<T>(List<T> list, string sheetName) | 使用指定的數據集生成指定名稱的Sheet並導出工做簿到字節數組 |
void createTemplate<T>() | 建立一個用於導入數據的模板Sheet |
void createTemplate<T>(string sheetName) | 建立一個用於導入數據且指定名稱的Sheet模板 |
void createSheet<T>(List<T> list) | 使用指定的數據集在工做簿中建立一個Sheet |
void createSheet<T>(List<T> list, string sheetName) | 使用指定的數據集在工做簿中建立一個指定名稱的Sheet |
導入數據的方法
方法 | 功用 |
---|---|
List<T> importSheet<T>() | 導入Excel文件中第一個Sheet的數據到指定類型的集合 |
List<T> importSheet<T>(int sheetIndex) | 導入指定位置的Sheet的數據到指定類型的集合 |
List<T> importSheet<T>(string sheetName) | 導入指定名稱的Sheet的數據到指定類型的集合 |
其餘方法
方法 | 功用 |
---|---|
bool sheetIsExist(int sheetIndex) | 指定位置的Sheet是否存在 |
bool sheetIsExist(string sheetName) | 指定名稱的Sheet是否存在 |
bool verifyColumns(int sheetIndex, string keys) | 校驗指定位置的Sheet是否包含關鍵列,關鍵列名稱以英文逗號分隔 |
bool verifyColumns(string sheetName, string keys) | 校驗指定名稱的Sheet是否包含關鍵列,關鍵列名稱以英文逗號分隔 |
bool verifyColumns<T>(int sheetIndex) | 校驗指定位置的Sheet是否包含關鍵列 |
bool verifyColumns<T>(string sheetName) | 校驗指定名稱的Sheet是否包含關鍵列 |
用於導出/導入數據的實體類屬性的特性說明
特性 | 功用 |
---|---|
name(默認特性) | Excel中的對應的列名 |
dateFormat | 列的時間/日期格式,默認爲:yyyy-MM-dd |
policy | Ignorable:導出時忽略(不會導出),Required:導入時文件必須包含此列,不然沒法經過關鍵列校驗 |
示例以下:code
public class Test { [ColumnName(Policy.Ignorable)] public string id { get; set; } [ColumnName("名稱")] public string name { get; set; } [ColumnName("更新時間", dateFormat = "yyyy-MM-dd hh:mm:ss", policy = Policy.Required)] public DateTime updateTime { get; set; } }