日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NPOI封装

發(fā)布時間:2024/4/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NPOI封装 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

一、對于Excel的操作封裝主要針對對于Excel的寫入的封裝,對于打印基類的封裝主要引入了兩個概念

1、打印區(qū)域模板類

2、打印集合類

如實例模板中需要打印的區(qū)域模塊

如實例模板中需要打印的集合類

?

二、打印模板類準備

對于一個Excel中的打印區(qū)域程序為這兩種類的打印字段(屬性)都加上指定的特性 [CellPosition(X = 1, Y = 2)]

X代表當前屬性需要打印的行,Y代表當前屬性所在的列

?

?

如果打印區(qū)域是集合類型的需要在當前類上加上特性?? [CollectionTemplate(RowStartIndex = 29)]

代表當前打印模板在Excel中打印開始的行位置

三、打印

對于準備好的打印類的屬性標示完相應的打印位置特性后開始打印

1、打印單實體模板

?? private void PrintHeader(BudgetHeaderPrintTemplate data)

??? {

??????????? Type type = data.GetType();

??????????? base.SetValue(type, data);

??? }

2 打印集合類實體模板

?private void PrintOtherFabricList(List<BudgetOtherFabricPrintTemplate> lstData)

??????? {

??????????? if (lstData.Count == 0)

??????????? {

??????????????? return;

??????????? }

??????????? Type type = lstData.FirstOrDefault().GetType();

??????????? var intXBase = base.GetRowStartIndex(type);

??????????? decimal money =0;

??????????? foreach (BudgetOtherFabricPrintTemplate item in lstData)

??????????? {

??????????????? if (item.Summary != null)

??????????????? {

??????????????????? money = money + item.Summary.Value;

??????????????? }

??????????? }

#region 統(tǒng)計行信息

??????????? BudgetOtherFabricPrintTemplate tAllMoney = new BudgetOtherFabricPrintTemplate();

??????????? tAllMoney.TemplateHasTax = "共計";

??????????? tAllMoney.Summary = money;

??????????? tAllMoney.Price = -1;

??????????? tAllMoney.Num = -1;

??????????? if (lstData.Count() > 1)

??????????? {

??????????????? lstData.Add(tAllMoney);

??????????? }

?????????? #endregion

//集合打印

??????????? lstData.ForEach(data =>

??????????? {

??????????????? intXBase++;

??????????????? base.SetValue(type, data, intXBase , base.GetCopyRow(intXBase));

??????????? });

?

??????????? this.OffSet += lstData.Count();//每次打印需要累加打印的位移量保證后面打印區(qū)域的打印模板位移是遞增的

??????? }

?

?

?代碼整理好后在發(fā)鏈接:

轉(zhuǎn)載于:https://www.cnblogs.com/qianthinkover/p/4643293.html

總結(jié)

以上是生活随笔為你收集整理的NPOI封装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。