使用NPOI匯出Excel操作的改進

2021-08-27 11:00:54 字數 3151 閱讀 5651

npoi匯出excel是比較方便的,可以設定標題,列寬等,原先我匯出excel的方法如下:

/// /// 匯出到excel檔案

///

/// 表

/// 檔名

/// 標題頭與列寬

/// 上下文

}}

需要傳入datatable,然後將表的標題和列寬以字典形式傳入。這樣的做法比較麻煩,標題和資料是分別傳入,而且會將dt上所有的列都匯出。所有需要將dt上的列和字典中的資料一一對應,不然匯出的excel會錯位。當然也可以自己定義個類改傳入標題,欄位名,列寬,這樣會比較方便的,dt匯出資料時可以根據傳入字典中的字段來判斷需要匯入哪些欄位的資料。

但是現在使用datatable越來越少了,直接改為傳入list集合的形式,我們可以定義標題特性的,在dto中進行設定然後匯入時通過反射的方式來回去標題內容等資訊,這樣會更方便。

標題特性定義

/*

* 匯出excel的相關特性設定

*/using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace myutility.attribute

public int width

/// /// 匯出excel的相關特性

///

/// 標題

/// 列寬度字元長度設定

public titleattribute(string title,int width)

}}

相關dto設定 我們只需設定我們需要匯出excel欄位的特性就行了,這樣方便我們檢視的時候和匯出時的格式資料的差異性,如下我們只會匯出工號,姓名,職位三個欄位到excel中

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using myutility.attribute;

namespace mymis.dto

[title("姓名", 10)]

public string name

[title("職位", 10)]

public string duty

public string depid

public string state

public string py

public string tel

public string email

public status status

public string password

public string pstatus

public nullablepdate

public nullablepreset

public string preseter

public string smsstatus

public string emailstatus

}}

匯出excel類

using system;

using system.collections.generic;

using system.linq;

using system.threading.tasks;

using system.data;

using npoi.hpsf;

using npoi.hssf.usermodel;

using npoi.ss.usermodel;

using system.io;

using system.web;

using myutility.attribute;

namespace myutility

//設定匯出資料

for (int i = 0; i < explist.count; i++)}}

using (system.io.memorystream ms = new system.io.memorystream())

.xls", sheetname));

context.response.binarywrite(ms.toarray());

book = null;

ms.close();

ms.dispose();}}

/// /// 取得匯出excel相關字段 根據title特性來判斷

///

///

///

public static listgetexpfields()

}return list;

}/// /// 取得指定欄位的值

///

///

/// obj

/// 屬性名

///

public static string getvalue(t obj, string key)

/// /// 匯出excel標題設定資料物件

///

public class expdto

public string title

public int width }}

}

直接呼叫此方法就行了

利用NPOI操作excel匯出

npoi外掛程式要.netframe4.0 開啟excel按鈕事件 private void button1 click object sender,eventargs e private void button2 click object sender,eventargs e if datearr...

Npoi匯入匯出Excel操作

datatable匯出excel private static void gridtoexcelbynpoi datatable dt,string strexcelfilename icellstyle cellstyle workbook.createcellstyle 為避免日期格式被exce...

C 使用NPOI 匯出Excel

npoi可以在沒有安裝office的情況下對word或excel文件進行讀寫操作 下面介紹下npoi操作excel的方法 這裡使用的是net4.0 將下面幾個dll新增到專案中並引用 廢話不多說 上 create 2016 11 30 by sly 要匯入的資料 datatable的列名是否要匯入 ...