C Excel匯出合併行和列並動態載入行與列

2021-08-10 12:53:38 字數 1835 閱讀 1471

簡單的excel匯出比較好做,只要設定表頭,迴圈在**中賦值新增資料即可,但是如果表頭是不固定的,並且個數是不確定的,這就需要根據查詢出資料的特點來新增匯出了。

如上圖所示,商品的個數是不確定的,時間的月份個數也是不確定的,所以簡單的通過模板是不可以的。並且資料庫中查詢出的資訊是每個商品不同時間的資訊,所以查詢出的資料相同時間的可能有多條,乙個商品在不同的時間分布,所以也可以是多條。

//資料表頭,時間

row = sheet.createrow(0);

cell = row.createcell(0);

cell.setcellvalue("時間");

cell.cellstyle = style;

//cellrangeaddress四個引數:起始行、結束行、起始列、結束列

sheet.addmergedregion(new cellrangeaddress(0, 2, 0, 0));

//進出口岸 1,1,2,口岸數*2

cell = row.createcell(1);

cell.setcellvalue(「進出口商品編碼」);

cell.cellstyle = style;

//cellrangeaddress四個引數:起始行、結束行、起始列、結束列

sheet.addmergedregion(new cellrangeaddress(0, 0, 1, 2*dtgroup.count));

//商品拼接

row = sheet.createrow(1);

row = sheet.createrow(2);

for( int c=0

;c

var allyearcount=(from p in dt_model.asenumerable()

group p by new into m

select new

).tolist();

//年份

for (int i=0

;i < allyearcount.count;i++)

else

} }

using(filestream fsm=file.open(filename,filemode.openorcreate,fileaccess.readwrite))

return 1

; }

其實**的核心部分就是建立行與列並且為**賦值,如果已經建立了行就不用建立了,就像這個例子中的時間單元格已經建立了一次行,這樣「進出口商品編碼」就不用再次建立行了。但是建立了行必須要建立列,列是在行的基礎上建立的,所以即使上一行已經建立了列,下一行還是需要重新建立的。

小結:

這個方法傳入的是datatable和**名稱,如果我們返回的資料不是直接輸出的需要做一些處理,我們可以採用給datatable增加欄位的方法,將我們想要的結果儲存到新加的字段中。

匯出的思想是一樣的,都是要迴圈行和列,在**中賦值,不同的是從**開始賦,把不同的地方解決,匯出也一樣easy!

table 元件指定列合併行方法

大多數table元件只提供了乙個合併行或者合併列的抽象方法,例如 element ui 元件,該方法的引數解釋及其用法如下,看得出來,rowspan代表每一行資料實際占用的行數,colspan代表每一行資料實際占用的列數,我們可以基於原始資料封裝如下方法,export const getspanme...

bootstrap table 動態合併行和列方法

table2 bootstraptable 合併行 param data 原始資料 在服務端完成排序 param fieldname 合併屬性名稱陣列 param colspan 列數 param target 目標 物件 function mergecells data,fieldname,col...

bootstrap table 動態合併行和列方法

table2 bootstraptable 合併行 param data 原始資料 在服務端完成排序 param fieldname 合併屬性名稱 param colspan 列數 param target 目標 物件 function mergecells data,fieldname,colsp...