我們先定義幾個單元格顏色,以便匯出的excel看起來比較賞心悅目。
#region isheet單元格樣式
///
/// 返回單元格顏色樣式
///
/// 傳入的顏色hssfcolor.blue.index
/// isheet
///
public static icellstyle cellcolor(short color, iworkbook workbook)
///
/// 返回單元格數值型樣式
///
/// isheet
/// 數值樣式0.0000
///
public static icellstyle cellnumericalfomat(iworkbook workbook,string strformat)
#endregion
然後就是匯出的方法,傳入的引數為dtmain資料集,filenameexcel名稱,headertext**標題
public void exporttoexcel(datatable dtmain, string filename, string headertext) }
//迴圈資料,得到資料流
public memorystream getdatatostr(datatable dtmain, cysoft.runinfo.common.npoihelper.workbooktype type, string headertext)
#endregion
#region 列頭及樣式
}#endregion
//獲取第一層級,並迴圈構建單元格。注:我這裡的資料集第一層級是pid父級id為空,並且level層級為1的,這裡你需要改一下符合你自己的資料集。
listlistdr = dtmain.asenumerable().where(
dr =>
string.isnullorempty(dr["pid"].sytostring())
&& dr["level"].sytostring() == "1"
).tolist();
foreach (datarow dr in listdr)
}sheet.createfreezepane(dtmain.columns.count, 2);//凍結窗格 ,把標題和列頭凍結
sheet.setcolumnwidth(0, 50 * 100);
sheet.setcolumnwidth(1, 70 * 160);
workbook.write(ms);
}return ms;}
///
/// 獲取下級的資料,並構建行
///
/// 當前行
/// 資料集
/// 行號
/// 資料列名
/// iworkbook
/// isheet
private void getchilddrtocell(datarow dr, datatable dt, ref int rowindex, dictionarycolmap, iworkbook workbook
, isheet sheet)
sheet.grouprow(startrow, rowindex);
sheet.setrowgroupcollapsed(startrow, false);}}
這個方法,實際是處理金額單價等小數字數。這裡就用到了我們最開始新建的那個單元格樣式幾個方法。這裡需要根據實際情況來寫,比如單價金額需要保留幾位小數四捨五入等需要特殊處理的。
//根據列,構建**行
private void getcellbycol(datarow dr, irow datarow, dictionarycolmap, iworkbook workbook)
else if (kv.value == "price")
else if (kv.value == "money" )
if (kv.value == "qty" || kv.value == "price" || kv.value == "money")
else cell.setcellvalue(dr[kv.value].sytostring());}}
這個方法是告訴程式我們需要匯出的字段中文名字,
private listgetexcelhead()
);return heads;}
這個是告訴程式我們對應的資料集裡面的列名。注:這個方法必須和上面getexcelhead列名字段嚴格一一對應,不允許多列少列錯位。
private dictionarygetdutycolmap()
NPOI進行Excel檔案的匯出
npoi無需office com元件且不依賴office,使用npoi能夠幫助開發者在沒有安裝微軟office的情況下讀寫office 97 2003的檔案,支援的檔案格式包括xls,doc,ppt等。npoi是構建在poi 3.x版本之上的,它可以在沒有安裝office的情況下對word exce...
NPOI的匯入匯出EXCEL示範
using system using system.data using system.diagnostics using system.io using system.windows.forms using npoi.hssf.usermodel using npoi.ss.usermodel u...
C 使用NPOI的Excel匯出
前言 開發環境 vs2017 sqlserver 谷歌瀏覽器 正文1.在專案中引用npoi a.在neget裡搜尋npoi直接安裝 推薦 2.建立個類,內容如下 public byte createexcel datatable datatable,string name 輸入資料行 for int...