NPOI匯出樹形結構的EXCEL通用方法

2021-08-14 15:50:18 字數 2334 閱讀 5340

我們先定義幾個單元格顏色,以便匯出的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...