也來耍下拆分工資條

2021-09-08 10:44:18 字數 3991 閱讀 2431

首先上介面:

再看拆分功能演示:

上**:

using

devcomponents.dotnetbar;

using

npoi.hssf.usermodel;

using

npoi.ss.usermodel;

using

system;

using

system.collections;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.data.oledb;

using

system.drawing;

using

system.io;

using

system.linq;

using

system.text;

using

system.windows.forms;

namespace

//////

檔案上傳開啟

/// ///

///private

void buttonx1_click(object

sender, eventargs e)

;if (!((ilist)str).contains(extension))

else

else}}

}//////

匯入載入excel

/// ///

///private

void buttonx2_click(object

sender, eventargs e)

private

int_returnstatus;

private

string

_returnmessage;

//////

執行返回狀態

/// public

intreturnstatus

}//////

執行返回資訊

/// public

string

returnmessage

}//////

讀取匯入excel到dataset

/// ///

///public dataset todatatable(string filepath, string

filename)

//判斷檔案是否被其他程序使用

microsoft.office.interop.excel.workbook workbook;

try

catch

//獲得所有sheet名稱

int n =workbook.worksheets.count;

string sheetset = new

string

[n];

system.collections.arraylist al = new

system.collections.arraylist();

for (int i = 1; i <= n; i++)

//釋放excel相關物件

workbook.close(null, null, null

);

if (workbook != null

)

)

gc.collect();

//把excel匯入到dataset

string connstr = ""

;

string filetype =system.io.path.getextension(filename);

if (string.isnullorempty(filetype)) return

null

;

if (filetype == "

.xls")

else

string sql_f = "

select * from

";//

可更改sheet名稱,比如sheet2,等等

//oledbconnection conn = null;

oledbdataadapter da = null

; datatable dtsheetname = null

; dataset ds = new

dataset();

//初始化連線,並開啟

using (oledbconnection conn = new

oledbconnection(connstr))

);//初始化介面卡

da = new

oledbdataadapter();

for (int i = 0; i < dtsheetname.rows.count; i++)

da.selectcommand = new

oledbcommand(string.format(sql_f, sheetname), conn);

dataset dsitem = new

dataset();

da.fill(dsitem,

"mytable");

ds.tables.add(dsitem.tables[

0].copy());}}

catch

(exception ex)

finally

}return

ds; }

}//////

拆分工資條操作

/// ///

///private

void buttonx3_click(object

sender, eventargs e)

catch

}//////

拆分excel工資條資料

/// ///

public

void

excelsplit(datatable exceltable)

int index = 0; //

拆分個數

//建立內容

irow datarow = sheet.createrow(1

); filestream stream = null

;

if (!directory.exists(@"

d:/salarybill"))

for (int i = 0; i < exceltable.rows.count; i++)

string excelname = exceltable.rows[i]["

姓名"].tostring() + "

_" + datetime.now.tostring("

yyyy-mm

") + "

.xls";

stream = new filestream(@"

d:/salarybill/

" +excelname, filemode.create);

workbook.write(stream);

index++;

}stream.close();

this.toolstripstatuslabel1.text = "

共拆分工資條:

" + index + "

條賬單"

;

this.cursor =cursors.default;}}

}

view code

要引用 npoi.dll

幫公司人事MM做了個工資條拆分工具

偶爾一次午飯時人事說加班加到8點多,純手工複製貼上excel的內容,公司大概150多人吧,每次發工資時都需要這樣手動處理,將乙個excel拆分成150多個excel,再把裡面的內容粘過去,如此迴圈。於是,我寫了個小程式幫人事mm解決。主要是用到了npoi生成excel,根據每條記錄建立乙個excel...

也來感慨一下

有一段時間沒有寫一點東西了。發現乙個問題,這兩三個月來,我有點變賴了,在那個整整忙了乙個月之後。今天,組長找我談話了,大概的意思是說,我最近變賴了。也是,這段時間,他也只顧著自己天天加班,然後我才有時間開點小差什麼的。今天好像他開始比較有空了,沒加班,晚上跟我一起坐車回來。路上,他跟我說,這段時間以...

也來學習一下曾國藩

提起曾國藩,不知大家是否有這麼乙個印象,風雨飄搖,乙個略顯愚鈍的老者,卻扛起了挽救晚清命運的大旗 提起他的生平,經常描述的都是最後一次出山前是乙個人,出山後完全變成了另乙個人。這一點我不是很認同,雖然後面初三後他有了乙個天翻地覆的變化,但是所有的果都是之前種下的因,這肯定也是一步乙個腳印走過來的,只...